From 1d2e55f53dfab5153dbfd0c03f28cd9daedb3b77 Mon Sep 17 00:00:00 2001 From: Bruce Hill Date: Sun, 6 Apr 2025 19:20:07 -0400 Subject: Allow uninitialized variables when there's a sensible empty value (defaults to empty/zero value) --- src/parse.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) (limited to 'src/parse.c') diff --git a/src/parse.c b/src/parse.c index 7ba557fb..c76266ee 100644 --- a/src/parse.c +++ b/src/parse.c @@ -1677,13 +1677,15 @@ PARSER(parse_declaration) { spaces(&pos); type_ast_t *type = optional(ctx, &pos, parse_type); spaces(&pos); - if (!match(&pos, "=")) return NULL; - ast_t *val = optional(ctx, &pos, parse_extended_expr); - if (!val) { - if (optional(ctx, &pos, parse_use)) - parser_err(ctx, start, pos, "'use' statements are only allowed at the top level of a file"); - else - parser_err(ctx, pos, eol(pos), "This is not a valid expression"); + ast_t *val = NULL; + if (match(&pos, "=")) { + val = optional(ctx, &pos, parse_extended_expr); + if (!val) { + if (optional(ctx, &pos, parse_use)) + parser_err(ctx, start, pos, "'use' statements are only allowed at the top level of a file"); + else + parser_err(ctx, pos, eol(pos), "This is not a valid expression"); + } } return NewAST(ctx->file, start, pos, Declare, .var=var, .type=type, .value=val); } -- cgit v1.2.3