diff --git a/src/language/utils/ASTNodeDataType.cpp b/src/language/utils/ASTNodeDataType.cpp
index 3c4420b12a0615ed1e978638a26fd0f2c72009a5..b89afd13493929a463f4585abb892e7937548906 100644
--- a/src/language/utils/ASTNodeDataType.cpp
+++ b/src/language/utils/ASTNodeDataType.cpp
@@ -187,7 +187,7 @@ dataTypeName(const ASTNodeDataType& data_type)
     name = "R^" + stringify(data_type.numberOfRows()) + "x" + stringify(data_type.numberOfColumns());
     break;
   case ASTNodeDataType::tuple_t:
-    name = "(" + dataTypeName(data_type.contentType()) + "...)";
+    name = "(" + dataTypeName(data_type.contentType()) + ")";
     break;
   case ASTNodeDataType::list_t: {
     std::ostringstream data_type_name_list;
diff --git a/tests/test_ASTNodeAffectationExpressionBuilder.cpp b/tests/test_ASTNodeAffectationExpressionBuilder.cpp
index edd68ca67131579b980faa728959f854dea2dcf4..7055452b2b3e99f19fd2ec267c70477569297d4d 100644
--- a/tests/test_ASTNodeAffectationExpressionBuilder.cpp
+++ b/tests/test_ASTNodeAffectationExpressionBuilder.cpp
@@ -1608,7 +1608,7 @@ let s : string, s="foo"; s*=2;
  let s :(R), s=(1,2,3); s *= 4;
 )";
 
-      std::string error_message = "undefined affectation type: (R...) *= Z";
+      std::string error_message = "undefined affectation type: (R) *= Z";
 
       CHECK_AST_THROWS_WITH(data, error_message);
     }
@@ -1619,7 +1619,7 @@ let s : string, s="foo"; s*=2;
  let s : (builtin_t), s =(a,b); s *= b;
 )";
 
-      std::string error_message = "undefined affectation type: (builtin_t...) *= builtin_t";
+      std::string error_message = "undefined affectation type: (builtin_t) *= builtin_t";
 
       CHECK_AST_WITH_BUILTIN_THROWS_WITH(data, error_message);
     }
diff --git a/tests/test_ASTNodeDataType.cpp b/tests/test_ASTNodeDataType.cpp
index 29ee313082bd7908699c1227d0486aa31538300f..420ca58f6b366b8d41f14eafb5b22f43b52e6c99 100644
--- a/tests/test_ASTNodeDataType.cpp
+++ b/tests/test_ASTNodeDataType.cpp
@@ -50,11 +50,11 @@ TEST_CASE("ASTNodeDataType", "[language]")
     REQUIRE(dataTypeName(builtin_function_dt) == "builtin_function");
     REQUIRE(dataTypeName(list_dt) == "R*Z");
     REQUIRE(dataTypeName(empty_list_dt) == "void");
-    REQUIRE(dataTypeName(ASTNodeDataType::build<ASTNodeDataType::tuple_t>(bool_dt)) == "(B...)");
-    REQUIRE(dataTypeName(ASTNodeDataType::build<ASTNodeDataType::tuple_t>(unsigned_int_dt)) == "(N...)");
-    REQUIRE(dataTypeName(ASTNodeDataType::build<ASTNodeDataType::tuple_t>(int_dt)) == "(Z...)");
-    REQUIRE(dataTypeName(ASTNodeDataType::build<ASTNodeDataType::tuple_t>(double_dt)) == "(R...)");
-    REQUIRE(dataTypeName(ASTNodeDataType::build<ASTNodeDataType::tuple_t>(int_dt)) == "(Z...)");
+    REQUIRE(dataTypeName(ASTNodeDataType::build<ASTNodeDataType::tuple_t>(bool_dt)) == "(B)");
+    REQUIRE(dataTypeName(ASTNodeDataType::build<ASTNodeDataType::tuple_t>(unsigned_int_dt)) == "(N)");
+    REQUIRE(dataTypeName(ASTNodeDataType::build<ASTNodeDataType::tuple_t>(int_dt)) == "(Z)");
+    REQUIRE(dataTypeName(ASTNodeDataType::build<ASTNodeDataType::tuple_t>(double_dt)) == "(R)");
+    REQUIRE(dataTypeName(ASTNodeDataType::build<ASTNodeDataType::tuple_t>(int_dt)) == "(Z)");
 
     REQUIRE(dataTypeName(ASTNodeDataType::build<ASTNodeDataType::type_name_id_t>()) == "type_name_id");
 
diff --git a/tests/test_ASTNodeDataTypeBuilder.cpp b/tests/test_ASTNodeDataTypeBuilder.cpp
index 8b1f114bdfd74a4aff575243d5b8ff51f5b75120..5c449d7abf9bc9f083bd7c8206d377360f0f229c 100644
--- a/tests/test_ASTNodeDataTypeBuilder.cpp
+++ b/tests/test_ASTNodeDataTypeBuilder.cpp
@@ -432,10 +432,10 @@ let t : (B), t = (true, false);
         std::string_view result = R"(
 (root:void)
  `-(language::var_declaration:void)
-     +-(language::name:t:(B...))
-     +-(language::tuple_type_specifier:(B...))
+     +-(language::name:t:(B))
+     +-(language::tuple_type_specifier:(B))
      |   `-(language::B_set:B)
-     +-(language::name:t:(B...))
+     +-(language::name:t:(B))
      `-(language::expression_list:B*B)
          +-(language::true_kw:B)
          `-(language::false_kw:B)
@@ -453,10 +453,10 @@ let t : (N), t = (1, 2, 3, 5);
         std::string_view result = R"(
 (root:void)
  `-(language::var_declaration:void)
-     +-(language::name:t:(N...))
-     +-(language::tuple_type_specifier:(N...))
+     +-(language::name:t:(N))
+     +-(language::tuple_type_specifier:(N))
      |   `-(language::N_set:N)
-     +-(language::name:t:(N...))
+     +-(language::name:t:(N))
      `-(language::expression_list:Z*Z*Z*Z)
          +-(language::integer:1:Z)
          +-(language::integer:2:Z)
@@ -482,10 +482,10 @@ let t : (Z), t = (2, n, true);
  |   +-(language::name:n:N)
  |   `-(language::integer:3:Z)
  `-(language::var_declaration:void)
-     +-(language::name:t:(Z...))
-     +-(language::tuple_type_specifier:(Z...))
+     +-(language::name:t:(Z))
+     +-(language::tuple_type_specifier:(Z))
      |   `-(language::Z_set:Z)
-     +-(language::name:t:(Z...))
+     +-(language::name:t:(Z))
      `-(language::expression_list:Z*N*B)
          +-(language::integer:2:Z)
          +-(language::name:n:N)
@@ -504,10 +504,10 @@ let t : (R), t = (2, 3.1, 5);
         std::string_view result = R"(
 (root:void)
  `-(language::var_declaration:void)
-     +-(language::name:t:(R...))
-     +-(language::tuple_type_specifier:(R...))
+     +-(language::name:t:(R))
+     +-(language::tuple_type_specifier:(R))
      |   `-(language::R_set:R)
-     +-(language::name:t:(R...))
+     +-(language::name:t:(R))
      `-(language::expression_list:Z*R*Z)
          +-(language::integer:2:Z)
          +-(language::real:3.1:R)
@@ -538,12 +538,12 @@ let t3 : (R^2), t3 = ([1,2], a, 0);
  |       +-(language::integer:2:Z)
  |       `-(language::real:3.1:R)
  +-(language::var_declaration:void)
- |   +-(language::name:t1:(R^2...))
- |   +-(language::tuple_type_specifier:(R^2...))
+ |   +-(language::name:t1:(R^2))
+ |   +-(language::tuple_type_specifier:(R^2))
  |   |   `-(language::vector_type:R^2)
  |   |       +-(language::R_set:R)
  |   |       `-(language::integer:2:Z)
- |   +-(language::name:t1:(R^2...))
+ |   +-(language::name:t1:(R^2))
  |   `-(language::expression_list:R^2*R^2*Z)
  |       +-(language::name:a:R^2)
  |       +-(language::vector_expression:R^2)
@@ -551,22 +551,22 @@ let t3 : (R^2), t3 = ([1,2], a, 0);
  |       |   `-(language::integer:2:Z)
  |       `-(language::integer:0:Z)
  +-(language::var_declaration:void)
- |   +-(language::name:t2:(R^3...))
- |   +-(language::tuple_type_specifier:(R^3...))
+ |   +-(language::name:t2:(R^3))
+ |   +-(language::tuple_type_specifier:(R^3))
  |   |   `-(language::vector_type:R^3)
  |   |       +-(language::R_set:R)
  |   |       `-(language::integer:3:Z)
- |   +-(language::name:t2:(R^3...))
+ |   +-(language::name:t2:(R^3))
  |   `-(language::expression_list:Z*Z)
  |       +-(language::integer:0:Z)
  |       `-(language::integer:0:Z)
  `-(language::var_declaration:void)
-     +-(language::name:t3:(R^2...))
-     +-(language::tuple_type_specifier:(R^2...))
+     +-(language::name:t3:(R^2))
+     +-(language::tuple_type_specifier:(R^2))
      |   `-(language::vector_type:R^2)
      |       +-(language::R_set:R)
      |       `-(language::integer:2:Z)
-     +-(language::name:t3:(R^2...))
+     +-(language::name:t3:(R^2))
      `-(language::expression_list:R^2*R^2*Z)
          +-(language::vector_expression:R^2)
          |   +-(language::integer:1:Z)
@@ -605,13 +605,13 @@ let t3 : (R^2x2), t3 = ([[1,2],[1,3]], a, 0);
  |           |   `-(language::real:1.2:R)
  |           `-(language::integer:4:Z)
  +-(language::var_declaration:void)
- |   +-(language::name:t1:(R^2x2...))
- |   +-(language::tuple_type_specifier:(R^2x2...))
+ |   +-(language::name:t1:(R^2x2))
+ |   +-(language::tuple_type_specifier:(R^2x2))
  |   |   `-(language::matrix_type:R^2x2)
  |   |       +-(language::R_set:R)
  |   |       +-(language::integer:2:Z)
  |   |       `-(language::integer:2:Z)
- |   +-(language::name:t1:(R^2x2...))
+ |   +-(language::name:t1:(R^2x2))
  |   `-(language::expression_list:R^2x2*R^2x2*Z)
  |       +-(language::name:a:R^2x2)
  |       +-(language::matrix_expression:R^2x2)
@@ -623,24 +623,24 @@ let t3 : (R^2x2), t3 = ([[1,2],[1,3]], a, 0);
  |       |       `-(language::integer:3:Z)
  |       `-(language::integer:0:Z)
  +-(language::var_declaration:void)
- |   +-(language::name:t2:(R^3x3...))
- |   +-(language::tuple_type_specifier:(R^3x3...))
+ |   +-(language::name:t2:(R^3x3))
+ |   +-(language::tuple_type_specifier:(R^3x3))
  |   |   `-(language::matrix_type:R^3x3)
  |   |       +-(language::R_set:R)
  |   |       +-(language::integer:3:Z)
  |   |       `-(language::integer:3:Z)
- |   +-(language::name:t2:(R^3x3...))
+ |   +-(language::name:t2:(R^3x3))
  |   `-(language::expression_list:Z*Z)
  |       +-(language::integer:0:Z)
  |       `-(language::integer:0:Z)
  `-(language::var_declaration:void)
-     +-(language::name:t3:(R^2x2...))
-     +-(language::tuple_type_specifier:(R^2x2...))
+     +-(language::name:t3:(R^2x2))
+     +-(language::tuple_type_specifier:(R^2x2))
      |   `-(language::matrix_type:R^2x2)
      |       +-(language::R_set:R)
      |       +-(language::integer:2:Z)
      |       `-(language::integer:2:Z)
-     +-(language::name:t3:(R^2x2...))
+     +-(language::name:t3:(R^2x2))
      `-(language::expression_list:R^2x2*R^2x2*Z)
          +-(language::matrix_expression:R^2x2)
          |   +-(language::row_expression:void)
@@ -665,10 +665,10 @@ let t : (string), t = ("foo", "bar");
         std::string_view result = R"(
 (root:void)
  `-(language::var_declaration:void)
-     +-(language::name:t:(string...))
-     +-(language::tuple_type_specifier:(string...))
+     +-(language::name:t:(string))
+     +-(language::tuple_type_specifier:(string))
      |   `-(language::string_type:string)
-     +-(language::name:t:(string...))
+     +-(language::name:t:(string))
      `-(language::expression_list:string*string)
          +-(language::literal:"foo":string)
          `-(language::literal:"bar":string)
@@ -687,10 +687,10 @@ let t : (builtin_t), t= (1,2,3);
         std::string_view result = R"(
 (root:void)
  `-(language::var_declaration:void)
-     +-(language::name:t:(builtin_t...))
-     +-(language::tuple_type_specifier:(builtin_t...))
+     +-(language::name:t:(builtin_t))
+     +-(language::tuple_type_specifier:(builtin_t))
      |   `-(language::type_name_id:builtin_t)
-     +-(language::name:t:(builtin_t...))
+     +-(language::name:t:(builtin_t))
      `-(language::expression_list:Z*Z*Z)
          +-(language::integer:1:Z)
          +-(language::integer:2:Z)
diff --git a/tests/test_ASTNodeNaturalConversionChecker.cpp b/tests/test_ASTNodeNaturalConversionChecker.cpp
index 7823664a1319f7699c3264805ac4c4fb68085e4a..0d6dbd3d60550dcfae86e32398c987f8b2d4583b 100644
--- a/tests/test_ASTNodeNaturalConversionChecker.cpp
+++ b/tests/test_ASTNodeNaturalConversionChecker.cpp
@@ -774,7 +774,7 @@ TEST_CASE("ASTNodeNaturalConversionChecker", "[language]")
           REQUIRE_THROWS_WITH((ASTNodeNaturalConversionChecker{*data_node,
                                                                ASTNodeDataType::build<ASTNodeDataType::matrix_t>(1,
                                                                                                                  1)}),
-                              "invalid implicit conversion: (N...) -> R^1x1");
+                              "invalid implicit conversion: (N) -> R^1x1");
         }
 
         SECTION("tuple(R) -> R^1x1")
@@ -783,7 +783,7 @@ TEST_CASE("ASTNodeNaturalConversionChecker", "[language]")
           REQUIRE_THROWS_WITH((ASTNodeNaturalConversionChecker{*data_node,
                                                                ASTNodeDataType::build<ASTNodeDataType::matrix_t>(1,
                                                                                                                  1)}),
-                              "invalid implicit conversion: (R...) -> R^1x1");
+                              "invalid implicit conversion: (R) -> R^1x1");
         }
 
         SECTION("tuple(R) -> R^2x2")
@@ -792,7 +792,7 @@ TEST_CASE("ASTNodeNaturalConversionChecker", "[language]")
           REQUIRE_THROWS_WITH((ASTNodeNaturalConversionChecker{*data_node,
                                                                ASTNodeDataType::build<ASTNodeDataType::matrix_t>(2,
                                                                                                                  2)}),
-                              "invalid implicit conversion: (R...) -> R^2x2");
+                              "invalid implicit conversion: (R) -> R^2x2");
         }
 
         SECTION("tuple(B) -> R^2x2")
@@ -801,7 +801,7 @@ TEST_CASE("ASTNodeNaturalConversionChecker", "[language]")
           REQUIRE_THROWS_WITH((ASTNodeNaturalConversionChecker{*data_node,
                                                                ASTNodeDataType::build<ASTNodeDataType::matrix_t>(2,
                                                                                                                  2)}),
-                              "invalid implicit conversion: (B...) -> R^2x2");
+                              "invalid implicit conversion: (B) -> R^2x2");
         }
 
         SECTION("tuple(Z) -> R^3x2")
@@ -810,7 +810,7 @@ TEST_CASE("ASTNodeNaturalConversionChecker", "[language]")
           REQUIRE_THROWS_WITH((ASTNodeNaturalConversionChecker{*data_node,
                                                                ASTNodeDataType::build<ASTNodeDataType::matrix_t>(3,
                                                                                                                  3)}),
-                              "invalid implicit conversion: (Z...) -> R^3x3");
+                              "invalid implicit conversion: (Z) -> R^3x3");
         }
 
         SECTION("tuple(R) -> R^3x3")
@@ -819,7 +819,7 @@ TEST_CASE("ASTNodeNaturalConversionChecker", "[language]")
           REQUIRE_THROWS_WITH((ASTNodeNaturalConversionChecker{*data_node,
                                                                ASTNodeDataType::build<ASTNodeDataType::matrix_t>(3,
                                                                                                                  3)}),
-                              "invalid implicit conversion: (R...) -> R^3x3");
+                              "invalid implicit conversion: (R) -> R^3x3");
         }
 
         SECTION("tuple(R^1) -> tuple(R^3x3)")
@@ -1189,7 +1189,7 @@ TEST_CASE("ASTNodeNaturalConversionChecker", "[language]")
           data_node->m_data_type = ASTNodeDataType::build<ASTNodeDataType::tuple_t>(unsigned_int_dt);
           REQUIRE_THROWS_WITH((ASTNodeNaturalConversionChecker{*data_node,
                                                                ASTNodeDataType::build<ASTNodeDataType::vector_t>(1)}),
-                              "invalid implicit conversion: (N...) -> R^1");
+                              "invalid implicit conversion: (N) -> R^1");
         }
 
         SECTION("tuple(R) -> R^1")
@@ -1197,7 +1197,7 @@ TEST_CASE("ASTNodeNaturalConversionChecker", "[language]")
           data_node->m_data_type = ASTNodeDataType::build<ASTNodeDataType::tuple_t>(double_dt);
           REQUIRE_THROWS_WITH((ASTNodeNaturalConversionChecker{*data_node,
                                                                ASTNodeDataType::build<ASTNodeDataType::vector_t>(1)}),
-                              "invalid implicit conversion: (R...) -> R^1");
+                              "invalid implicit conversion: (R) -> R^1");
         }
 
         SECTION("tuple(R) -> R^2")
@@ -1205,7 +1205,7 @@ TEST_CASE("ASTNodeNaturalConversionChecker", "[language]")
           data_node->m_data_type = ASTNodeDataType::build<ASTNodeDataType::tuple_t>(double_dt);
           REQUIRE_THROWS_WITH((ASTNodeNaturalConversionChecker{*data_node,
                                                                ASTNodeDataType::build<ASTNodeDataType::vector_t>(2)}),
-                              "invalid implicit conversion: (R...) -> R^2");
+                              "invalid implicit conversion: (R) -> R^2");
         }
 
         SECTION("tuple(B) -> R^2")
@@ -1213,7 +1213,7 @@ TEST_CASE("ASTNodeNaturalConversionChecker", "[language]")
           data_node->m_data_type = ASTNodeDataType::build<ASTNodeDataType::tuple_t>(bool_dt);
           REQUIRE_THROWS_WITH((ASTNodeNaturalConversionChecker{*data_node,
                                                                ASTNodeDataType::build<ASTNodeDataType::vector_t>(2)}),
-                              "invalid implicit conversion: (B...) -> R^2");
+                              "invalid implicit conversion: (B) -> R^2");
         }
 
         SECTION("tuple(Z) -> R^3")
@@ -1221,7 +1221,7 @@ TEST_CASE("ASTNodeNaturalConversionChecker", "[language]")
           data_node->m_data_type = ASTNodeDataType::build<ASTNodeDataType::tuple_t>(int_dt);
           REQUIRE_THROWS_WITH((ASTNodeNaturalConversionChecker{*data_node,
                                                                ASTNodeDataType::build<ASTNodeDataType::vector_t>(3)}),
-                              "invalid implicit conversion: (Z...) -> R^3");
+                              "invalid implicit conversion: (Z) -> R^3");
         }
 
         SECTION("tuple(R) -> R^3")
@@ -1229,7 +1229,7 @@ TEST_CASE("ASTNodeNaturalConversionChecker", "[language]")
           data_node->m_data_type = ASTNodeDataType::build<ASTNodeDataType::tuple_t>(double_dt);
           REQUIRE_THROWS_WITH((ASTNodeNaturalConversionChecker{*data_node,
                                                                ASTNodeDataType::build<ASTNodeDataType::vector_t>(3)}),
-                              "invalid implicit conversion: (R...) -> R^3");
+                              "invalid implicit conversion: (R) -> R^3");
         }
 
         SECTION("tuple(R^1x1) -> tuple(R^3)")
@@ -1576,14 +1576,14 @@ TEST_CASE("ASTNodeNaturalConversionChecker", "[language]")
       {
         data_node->m_data_type = ASTNodeDataType::build<ASTNodeDataType::tuple_t>(unsigned_int_dt);
         REQUIRE_THROWS_WITH((ASTNodeNaturalConversionChecker{*data_node, double_dt}),
-                            "invalid implicit conversion: (N...) -> R");
+                            "invalid implicit conversion: (N) -> R");
       }
 
       SECTION("tuple(R) -> R")
       {
         data_node->m_data_type = ASTNodeDataType::build<ASTNodeDataType::tuple_t>(double_dt);
         REQUIRE_THROWS_WITH((ASTNodeNaturalConversionChecker{*data_node, double_dt}),
-                            "invalid implicit conversion: (R...) -> R");
+                            "invalid implicit conversion: (R) -> R");
       }
     }
 
@@ -1628,14 +1628,14 @@ TEST_CASE("ASTNodeNaturalConversionChecker", "[language]")
       {
         data_node->m_data_type = ASTNodeDataType::build<ASTNodeDataType::tuple_t>(unsigned_int_dt);
         REQUIRE_THROWS_WITH((ASTNodeNaturalConversionChecker{*data_node, int_dt}),
-                            "invalid implicit conversion: (N...) -> Z");
+                            "invalid implicit conversion: (N) -> Z");
       }
 
       SECTION("tuple(Z) -> Z")
       {
         data_node->m_data_type = ASTNodeDataType::build<ASTNodeDataType::tuple_t>(int_dt);
         REQUIRE_THROWS_WITH((ASTNodeNaturalConversionChecker{*data_node, int_dt}),
-                            "invalid implicit conversion: (Z...) -> Z");
+                            "invalid implicit conversion: (Z) -> Z");
       }
     }
 
@@ -1680,14 +1680,14 @@ TEST_CASE("ASTNodeNaturalConversionChecker", "[language]")
       {
         data_node->m_data_type = ASTNodeDataType::build<ASTNodeDataType::tuple_t>(int_dt);
         REQUIRE_THROWS_WITH((ASTNodeNaturalConversionChecker{*data_node, unsigned_int_dt}),
-                            "invalid implicit conversion: (Z...) -> N");
+                            "invalid implicit conversion: (Z) -> N");
       }
 
       SECTION("tuple(N) -> N")
       {
         data_node->m_data_type = ASTNodeDataType::build<ASTNodeDataType::tuple_t>(unsigned_int_dt);
         REQUIRE_THROWS_WITH((ASTNodeNaturalConversionChecker{*data_node, unsigned_int_dt}),
-                            "invalid implicit conversion: (N...) -> N");
+                            "invalid implicit conversion: (N) -> N");
       }
     }
 
@@ -1746,14 +1746,14 @@ TEST_CASE("ASTNodeNaturalConversionChecker", "[language]")
       {
         data_node->m_data_type = ASTNodeDataType::build<ASTNodeDataType::tuple_t>(int_dt);
         REQUIRE_THROWS_WITH((ASTNodeNaturalConversionChecker{*data_node, bool_dt}),
-                            "invalid implicit conversion: (Z...) -> B");
+                            "invalid implicit conversion: (Z) -> B");
       }
 
       SECTION("tuple(B) -> B")
       {
         data_node->m_data_type = ASTNodeDataType::build<ASTNodeDataType::tuple_t>(bool_dt);
         REQUIRE_THROWS_WITH((ASTNodeNaturalConversionChecker{*data_node, bool_dt}),
-                            "invalid implicit conversion: (B...) -> B");
+                            "invalid implicit conversion: (B) -> B");
       }
     }
 
diff --git a/tests/test_BuiltinFunctionEmbedderUtils.cpp b/tests/test_BuiltinFunctionEmbedderUtils.cpp
index ebb0195dc01ed45a25085b8f3150d71de08005ac..3dee7e0092ab8e6a725fcf671fdedb45a8dc6a74 100644
--- a/tests/test_BuiltinFunctionEmbedderUtils.cpp
+++ b/tests/test_BuiltinFunctionEmbedderUtils.cpp
@@ -731,7 +731,7 @@ foo(3.1,[[1, 2.3, 4], [0.3, 2.5, 4.6], [2.7, 8.1, -9]]);
 
   SECTION("using tuple arguments")
   {
-    SECTION("builtin function (R...) -> N (from (N...))")
+    SECTION("builtin function (R) -> N (from (N...))")
     {
       std::string_view data = R"(
 let v:(N);
@@ -754,7 +754,7 @@ foo(v);
       REQUIRE(function_embedder->getParameterDataTypes()[0].contentType() == ASTNodeDataType::double_t);
     }
 
-    SECTION("builtin function (R...) -> N (from Z)")
+    SECTION("builtin function (R) -> N (from Z)")
     {
       std::string_view data = R"(
 foo(-4);
@@ -776,7 +776,7 @@ foo(-4);
       REQUIRE(function_embedder->getParameterDataTypes()[0].contentType() == ASTNodeDataType::double_t);
     }
 
-    SECTION("builtin function (R^1...) -> N (from (N...))")
+    SECTION("builtin function (R^1) -> N (from (N...))")
     {
       std::string_view data = R"(
 let v:(N);
@@ -800,7 +800,7 @@ foo(v);
       REQUIRE(function_embedder->getParameterDataTypes()[0].contentType().dimension() == 1);
     }
 
-    SECTION("builtin function (R^1...) -> N (from 0)")
+    SECTION("builtin function (R^1) -> N (from 0)")
     {
       std::string_view data = R"(
 foo(0);
@@ -823,7 +823,7 @@ foo(0);
       REQUIRE(function_embedder->getParameterDataTypes()[0].contentType().dimension() == 1);
     }
 
-    SECTION("builtin function (R...) -> N (from list)")
+    SECTION("builtin function (R) -> N (from list)")
     {
       std::string_view data = R"(
 foo((1,2,3,5));
@@ -845,7 +845,7 @@ foo((1,2,3,5));
       REQUIRE(function_embedder->getParameterDataTypes()[0].contentType() == ASTNodeDataType::double_t);
     }
 
-    SECTION("builtin function (R^1...) -> N (from castable list)")
+    SECTION("builtin function (R^1) -> N (from castable list)")
     {
       std::string_view data = R"(
 foo((1,2,3,5));
@@ -868,7 +868,7 @@ foo((1,2,3,5));
       REQUIRE(function_embedder->getParameterDataTypes()[0].contentType().dimension() == 1);
     }
 
-    SECTION("builtin function (R^1...) -> N (from list)")
+    SECTION("builtin function (R^1) -> N (from list)")
     {
       std::string_view data = R"(
 let x:R^1;
@@ -892,7 +892,7 @@ foo((x,2*x));
       REQUIRE(function_embedder->getParameterDataTypes()[0].contentType().dimension() == 1);
     }
 
-    SECTION("builtin function (R^1x1...) -> N (from castable list)")
+    SECTION("builtin function (R^1x1) -> N (from castable list)")
     {
       std::string_view data = R"(
 foo((1,2,3,5));
@@ -915,7 +915,7 @@ foo((1,2,3,5));
       REQUIRE(function_embedder->getParameterDataTypes()[0].contentType().numberOfRows() == 1);
     }
 
-    SECTION("builtin function (R^1x1...) -> N (from 0)")
+    SECTION("builtin function (R^1x1) -> N (from 0)")
     {
       std::string_view data = R"(
 foo(0);
@@ -938,7 +938,7 @@ foo(0);
       REQUIRE(function_embedder->getParameterDataTypes()[0].contentType().numberOfRows() == 1);
     }
 
-    SECTION("builtin function (R^1x1...) -> N (from list)")
+    SECTION("builtin function (R^1x1) -> N (from list)")
     {
       std::string_view data = R"(
 let x:R^1x1;
@@ -962,7 +962,7 @@ foo((x,2*x));
       REQUIRE(function_embedder->getParameterDataTypes()[0].contentType().numberOfRows() == 1);
     }
 
-    SECTION("builtin function (R^2...) -> N (from list)")
+    SECTION("builtin function (R^2) -> N (from list)")
     {
       std::string_view data = R"(
 let x:R^2;
@@ -986,7 +986,7 @@ foo((x,2*x));
       REQUIRE(function_embedder->getParameterDataTypes()[0].contentType().dimension() == 2);
     }
 
-    SECTION("builtin function (R^2...) -> N (from 0)")
+    SECTION("builtin function (R^2) -> N (from 0)")
     {
       std::string_view data = R"(
 foo(0);
@@ -1009,7 +1009,7 @@ foo(0);
       REQUIRE(function_embedder->getParameterDataTypes()[0].contentType().dimension() == 2);
     }
 
-    SECTION("builtin function (R^2x2...) -> N (from 0)")
+    SECTION("builtin function (R^2x2) -> N (from 0)")
     {
       std::string_view data = R"(
 foo(0);
@@ -1032,7 +1032,7 @@ foo(0);
       REQUIRE(function_embedder->getParameterDataTypes()[0].contentType().numberOfRows() == 2);
     }
 
-    SECTION("builtin function (R^2x2...) -> N (from list)")
+    SECTION("builtin function (R^2x2) -> N (from list)")
     {
       std::string_view data = R"(
 let x:R^2x2;
@@ -1056,7 +1056,7 @@ foo((x,2*x));
       REQUIRE(function_embedder->getParameterDataTypes()[0].contentType().numberOfRows() == 2);
     }
 
-    SECTION("builtin function (R^3...) -> N (from list)")
+    SECTION("builtin function (R^3) -> N (from list)")
     {
       std::string_view data = R"(
 let x:R^3;
@@ -1080,7 +1080,7 @@ foo((x,2*x));
       REQUIRE(function_embedder->getParameterDataTypes()[0].contentType().dimension() == 3);
     }
 
-    SECTION("builtin function (R^3...) -> N (from 0)")
+    SECTION("builtin function (R^3) -> N (from 0)")
     {
       std::string_view data = R"(
 foo(0);
@@ -1103,7 +1103,7 @@ foo(0);
       REQUIRE(function_embedder->getParameterDataTypes()[0].contentType().dimension() == 3);
     }
 
-    SECTION("builtin function (R^3x3...) -> N (from 0)")
+    SECTION("builtin function (R^3x3) -> N (from 0)")
     {
       std::string_view data = R"(
 foo(0);
@@ -1126,7 +1126,7 @@ foo(0);
       REQUIRE(function_embedder->getParameterDataTypes()[0].contentType().numberOfRows() == 3);
     }
 
-    SECTION("builtin function (R^3x3...) -> N (from list)")
+    SECTION("builtin function (R^3x3) -> N (from list)")
     {
       std::string_view data = R"(
 let x:R^3x3;
@@ -1541,7 +1541,7 @@ foo(1,2,3,4);
                           error_msg);
     }
 
-    SECTION("(N...) invalid cast")
+    SECTION("(N) invalid cast")
     {
       std::string_view data = R"(
 foo(1.34);
@@ -1549,7 +1549,7 @@ foo(1.34);
 
       std::string error_msg = "no matching function to call foo: R\n"
                               "note: candidates are\n"
-                              " foo: (N...) -> N";
+                              " foo: (N) -> N";
 
       TAO_PEGTL_NAMESPACE::string_input input{data, "test.pgs"};
       auto root_node = ASTBuilder::build(input);
@@ -1572,7 +1572,7 @@ foo(1);
 
       std::string error_msg = "ambiguous function call foo: Z\n"
                               "note: candidates are\n"
-                              " foo: (R...) -> R\n"
+                              " foo: (R) -> R\n"
                               " foo: R -> R\n"
                               " foo: R^1 -> R";
 
diff --git a/tests/test_BuiltinFunctionRegister.hpp b/tests/test_BuiltinFunctionRegister.hpp
index e87ab4994369d74a1280c451d75af435624965b4..03a847bc2f805d4d883a060709b232c6f64e4a3a 100644
--- a/tests/test_BuiltinFunctionRegister.hpp
+++ b/tests/test_BuiltinFunctionRegister.hpp
@@ -104,7 +104,7 @@ class test_BuiltinFunctionRegister
                                           [](const FunctionSymbolId&) -> double { return 0; })));
 
     m_name_builtin_function_map.insert(
-      std::make_pair("fidTupleToR:(function...)",
+      std::make_pair("fidTupleToR:(function)",
                      std::make_shared<BuiltinFunctionEmbedder<double(const std::vector<FunctionSymbolId>)>>(
                        [](const std::vector<FunctionSymbolId>&) -> double { return 0; })));
 
@@ -115,15 +115,15 @@ class test_BuiltinFunctionRegister
                        [](std::shared_ptr<const double> x) -> std::shared_ptr<const double> { return x; })));
 
     m_name_builtin_function_map.insert(
-      std::make_pair("tuple_BtoR:(B...)", std::make_shared<BuiltinFunctionEmbedder<double(std::vector<bool>)>>(
+      std::make_pair("tuple_BtoR:(B)", std::make_shared<BuiltinFunctionEmbedder<double(std::vector<bool>)>>(
                                             [](const std::vector<bool>&) -> double { return 0.5; })));
 
     m_name_builtin_function_map.insert(
-      std::make_pair("tuple_NtoR:(N...)", std::make_shared<BuiltinFunctionEmbedder<double(std::vector<uint64_t>)>>(
+      std::make_pair("tuple_NtoR:(N)", std::make_shared<BuiltinFunctionEmbedder<double(std::vector<uint64_t>)>>(
                                             [](const std::vector<uint64_t>&) -> double { return 0.5; })));
 
     m_name_builtin_function_map.insert(
-      std::make_pair("tuple_ZtoR:(Z...)", std::make_shared<BuiltinFunctionEmbedder<double(std::vector<int64_t>)>>(
+      std::make_pair("tuple_ZtoR:(Z)", std::make_shared<BuiltinFunctionEmbedder<double(std::vector<int64_t>)>>(
                                             [](const std::vector<int64_t>& v) -> double {
                                               int64_t sum = 0;
                                               for (auto vi : v) {
@@ -133,41 +133,41 @@ class test_BuiltinFunctionRegister
                                             })));
 
     m_name_builtin_function_map.insert(
-      std::make_pair("tuple_RtoB:(R...)", std::make_shared<BuiltinFunctionEmbedder<bool(std::vector<double>)>>(
+      std::make_pair("tuple_RtoB:(R)", std::make_shared<BuiltinFunctionEmbedder<bool(std::vector<double>)>>(
                                             [](const std::vector<double>&) -> bool { return false; })));
 
     m_name_builtin_function_map.insert(
-      std::make_pair("tuple_stringtoB:(string...)",
+      std::make_pair("tuple_stringtoB:(string)",
                      std::make_shared<BuiltinFunctionEmbedder<bool(std::vector<std::string>)>>(
                        [](const std::vector<std::string>&) -> bool { return true; })));
 
     m_name_builtin_function_map.insert(
-      std::make_pair("tuple_builtinToB:(builtin_t...)",
+      std::make_pair("tuple_builtinToB:(builtin_t)",
                      std::make_shared<BuiltinFunctionEmbedder<bool(std::vector<std::shared_ptr<const double>>)>>(
                        [](const std::vector<std::shared_ptr<const double>>&) -> bool { return true; })));
 
     m_name_builtin_function_map.insert(
-      std::make_pair("tuple_R1ToR:(R^1...)",
+      std::make_pair("tuple_R1ToR:(R^1)",
                      std::make_shared<BuiltinFunctionEmbedder<double(const std::vector<TinyVector<1>>&)>>(
                        [](const std::vector<TinyVector<1>>&) -> double { return 1; })));
 
     m_name_builtin_function_map.insert(
-      std::make_pair("tuple_R2ToR:(R^2...)",
+      std::make_pair("tuple_R2ToR:(R^2)",
                      std::make_shared<BuiltinFunctionEmbedder<double(const std::vector<TinyVector<2>>&)>>(
                        [](const std::vector<TinyVector<2>>&) -> double { return 1; })));
 
     m_name_builtin_function_map.insert(
-      std::make_pair("tuple_R3ToR:(R^3...)",
+      std::make_pair("tuple_R3ToR:(R^3)",
                      std::make_shared<BuiltinFunctionEmbedder<double(const std::vector<TinyVector<3>>)>>(
                        [](const std::vector<TinyVector<3>>&) -> double { return 0; })));
 
     m_name_builtin_function_map.insert(
-      std::make_pair("tuple_R11ToR:(R^1x1...)",
+      std::make_pair("tuple_R11ToR:(R^1x1)",
                      std::make_shared<BuiltinFunctionEmbedder<double(const std::vector<TinyMatrix<1>>&)>>(
                        [](const std::vector<TinyMatrix<1>>&) -> double { return 1; })));
 
     m_name_builtin_function_map.insert(
-      std::make_pair("tuple_R22ToR:(R^2x2...)",
+      std::make_pair("tuple_R22ToR:(R^2x2)",
                      std::make_shared<BuiltinFunctionEmbedder<double(const std::vector<TinyMatrix<2>>&)>>(
                        [](const std::vector<TinyMatrix<2>>&) -> double { return 1; })));
 
@@ -180,7 +180,7 @@ class test_BuiltinFunctionRegister
                        })));
 
     m_name_builtin_function_map.insert(
-      std::make_pair("tuple_R33ToR:(R^3x3...)",
+      std::make_pair("tuple_R33ToR:(R^3x3)",
                      std::make_shared<BuiltinFunctionEmbedder<double(const std::vector<TinyMatrix<3>>)>>(
                        [](const std::vector<TinyMatrix<3>>&) -> double { return 0; })));