diff options
-rw-r--r-- | code/main.felan | 16 | ||||
-rw-r--r-- | src/compiler/ast-tree.c | 10 | ||||
-rw-r--r-- | src/compiler/parser.c | 2 |
3 files changed, 19 insertions, 9 deletions
diff --git a/code/main.felan b/code/main.felan index b059d04..e2eaaa3 100644 --- a/code/main.felan +++ b/code/main.felan @@ -1,7 +1,17 @@ main :: () -> void { - f(3); + a := f(b = 4,2); + if a == 0 + print_u64 10; + else if a == 1 + print_u64 11; + else if a == 2 + print_u64 12; + else if a == 3 + print_u64 13; + else + print_u64 14; }; -f :(u64)->void: (a:u64)->void{ - print_u64 a; +f :: (a:u64,b:u64)->u64{ + return b-a; }; diff --git a/src/compiler/ast-tree.c b/src/compiler/ast-tree.c index 890d159..111265f 100644 --- a/src/compiler/ast-tree.c +++ b/src/compiler/ast-tree.c @@ -1176,11 +1176,6 @@ AstTree *astTreeParseFunction(ParserNode *parserNode, AstTreeHelper *p_helper) { .globalDeps = p_helper->globalDeps, }; - if ((function->returnType = - astTreeParse(node_metadata->returnType, &helper)) == NULL) { - goto RETURN_ERROR; - } - for (size_t i = 0; i < node_arguments->size; ++i) { ParserNode *arg = node_arguments->data[i]; if (arg->token == PARSER_TOKEN_SYMBOL_COMMA) { @@ -1212,6 +1207,11 @@ AstTree *astTreeParseFunction(ParserNode *parserNode, AstTreeHelper *p_helper) { } } + if ((function->returnType = + astTreeParse(node_metadata->returnType, &helper)) == NULL) { + goto RETURN_ERROR; + } + for (size_t i = 0; i < body->size; ++i) { ParserNode *node = body->data[i]; switch (node->token) { diff --git a/src/compiler/parser.c b/src/compiler/parser.c index 08f262c..9d77462 100644 --- a/src/compiler/parser.c +++ b/src/compiler/parser.c @@ -146,7 +146,7 @@ static constexpr ParserOrder PARSER_ORDER[] = { }, { .ltr = false, - ORDER_ARRAY(LEXER_TOKEN_KEYWORD_IF,LEXER_TOKEN_KEYWORD_WHILE, ), + ORDER_ARRAY(LEXER_TOKEN_KEYWORD_IF, LEXER_TOKEN_KEYWORD_WHILE, ), }, }; |