diff --git a/tests/test_ASTNodeDataTypeBuilder.cpp b/tests/test_ASTNodeDataTypeBuilder.cpp index 346807df3b58e189a7e1283850fbdda54264abbb..96af38a0b905014ea518653795ba95850e486055 100644 --- a/tests/test_ASTNodeDataTypeBuilder.cpp +++ b/tests/test_ASTNodeDataTypeBuilder.cpp @@ -1002,6 +1002,21 @@ let cat : string*N -> string, (s,n) -> s+n; CHECK_AST(data, result); } + SECTION("builtin-functions") + { + std::string_view data = R"( +let foo : builtin_t*N -> builtin_t, (b,n) -> b; +)"; + + std::string_view result = R"( +(root:void) + `-(language::fct_declaration:void) + `-(language::name:foo:function) +)"; + + CHECK_AST_WITH_BUILTIN(data, result); + } + SECTION("errors") { SECTION("wrong parameter number") @@ -1312,6 +1327,35 @@ let s : string, s = cat("foo", "bar"); CHECK_AST(data, result); } + SECTION("bultin_t-function") + { + std::string_view data = R"( +let foo : builtin_t*N -> builtin_t, (b,n) -> b; +let b0: builtin_t; +let b : builtin_t, b = foo(b0, 1); +)"; + + std::string_view result = R"( +(root:void) + +-(language::fct_declaration:void) + | `-(language::name:foo:function) + +-(language::var_declaration:void) + | +-(language::name:b0:builtin_t) + | `-(language::type_name_id:builtin_t) + `-(language::var_declaration:void) + +-(language::name:b:builtin_t) + +-(language::type_name_id:builtin_t) + +-(language::name:b:builtin_t) + `-(language::function_evaluation:builtin_t) + +-(language::name:foo:function) + `-(language::function_argument_list:builtin_t*Z) + +-(language::name:b0:builtin_t) + `-(language::integer:1:Z) +)"; + + CHECK_AST_WITH_BUILTIN(data, result); + } + SECTION("compound return function") { std::string_view data = R"(