diff options
-rw-r--r-- | src/parser.c | 11 | ||||
-rw-r--r-- | test/parser.c | 5 |
2 files changed, 10 insertions, 6 deletions
diff --git a/src/parser.c b/src/parser.c index ac08a16..731df78 100644 --- a/src/parser.c +++ b/src/parser.c @@ -100,10 +100,17 @@ tree_t* parser_parse_kwd(parser_t* parser) { call->data.call.target = parser->token->val; parser->token->val = NULL; - - if (parser_nxt_token_match(parser, TOKEN_TYPE_APPLY)) { + + /* Skip over keyword, check for arguments. */ + if ( + parser_nxt_token(parser) && + parser->token->type == TOKEN_TYPE_APPLY + ) { + /* Expect some arguments. */ + parser_nxt_token(parser); call->data.call.arg = parser_parse_carg(parser); } else { + /* There're no arguments. */ call->data.call.arg = NULL; } diff --git a/test/parser.c b/test/parser.c index 3bceab1..503244f 100644 --- a/test/parser.c +++ b/test/parser.c @@ -716,7 +716,7 @@ void cargumented_call_of_call() { char* target1 = tree1call->data.call.target = ecalloc(2, sizeof(char)); strcpy(target1, "x"); tree1call->data.call.arg = NULL; - tree0call->data.carg.nxt = NULL; + tree0carg->data.carg.nxt = NULL; tree->data.block.nxt = NULL; pp = pp_init(src); @@ -730,9 +730,6 @@ void cargumented_call_of_call() { ASSERT(tree_cmp(parser->tree, tree) == 1); - tree_print(tree, 0); - tree_print(parser->tree, 0); - token_destroy(lexer->tokenl); lexer_destroy(lexer); free(pp->psrc); |