diff --git a/tests/test_ASTNodeDataTypeBuilder.cpp b/tests/test_ASTNodeDataTypeBuilder.cpp index b6dc2cac85ab783eba86ba4b57a59a38edd6aac2..2a5777b32272c8c10ba39543c30b103d4f629439 100644 --- a/tests/test_ASTNodeDataTypeBuilder.cpp +++ b/tests/test_ASTNodeDataTypeBuilder.cpp @@ -1180,6 +1180,30 @@ let f: R -> X, x -> x; REQUIRE_THROWS_WITH(ASTNodeDataTypeBuilder{*ast}, "invalid type identifier, 'X' was previously defined as a 'R'"); } + + SECTION("invalid tuple type domain") + { + std::string_view data = R"( +let f: (R) -> R, x -> x; +)"; + TAO_PEGTL_NAMESPACE::string_input input{data, "test.pgs"}; + auto ast = ASTBuilder::build(input); + ASTSymbolTableBuilder{*ast}; + + REQUIRE_THROWS_WITH(ASTNodeDataTypeBuilder{*ast}, "cannot use tuple (R) as a domain for user functions"); + } + + SECTION("invalid tuple type in compound domain") + { + std::string_view data = R"( +let f: N*(R^2) -> R, (x,t) -> x; +)"; + TAO_PEGTL_NAMESPACE::string_input input{data, "test.pgs"}; + auto ast = ASTBuilder::build(input); + ASTSymbolTableBuilder{*ast}; + + REQUIRE_THROWS_WITH(ASTNodeDataTypeBuilder{*ast}, "cannot use tuple (R^2) as a domain for user functions"); + } } }