diff options
| -rw-r--r-- | evaluate.c | 2 | ||||
| -rw-r--r-- | validation/goto-reserved.c | 12 |
2 files changed, 13 insertions, 1 deletions
@@ -3593,7 +3593,7 @@ static void evaluate_goto_statement(struct statement *stmt) { struct symbol *label = stmt->goto_label; - if (label && !label->stmt && !lookup_keyword(label->ident, NS_KEYWORD)) + if (label && !label->stmt && label->ident && !lookup_keyword(label->ident, NS_KEYWORD)) sparse_error(stmt->pos, "label '%s' was not declared", show_ident(label->ident)); evaluate_expression(stmt->goto_expression); diff --git a/validation/goto-reserved.c b/validation/goto-reserved.c new file mode 100644 index 00000000..fbaf03e1 --- /dev/null +++ b/validation/goto-reserved.c @@ -0,0 +1,12 @@ +static void foo(void) +{ + goto return; +} + +/* + * check-name: goto-reserved + * + * check-error-start +goto-reserved.c:3:14: error: Trying to use reserved word 'return' as identifier + * check-error-end + */ |
