diff options
Diffstat (limited to 'src/parser_bison.y')
-rw-r--r-- | src/parser_bison.y | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/src/parser_bison.y b/src/parser_bison.y index 58bc6805..ee6729f1 100644 --- a/src/parser_bison.y +++ b/src/parser_bison.y @@ -771,8 +771,6 @@ common_block : INCLUDE QUOTED_STRING stmt_separator { struct scope *scope = current_scope(state); - /* ignore missing identifier */ - symbol_unbind(scope, $2); symbol_bind(scope, $2, $4); xfree($2); } @@ -2584,16 +2582,17 @@ match_stmt : relational_expr variable_expr : '$' identifier { struct scope *scope = current_scope(state); + struct symbol *sym; - if (symbol_lookup(scope, $2) == NULL) { + sym = symbol_get(scope, $2); + if (!sym) { erec_queue(error(&@2, "unknown identifier '%s'", $2), state->msgs); xfree($2); YYERROR; } - $$ = symbol_expr_alloc(&@$, SYMBOL_DEFINE, - scope, $2); + $$ = variable_expr_alloc(&@$, scope, sym); xfree($2); } ; |