diff options
| author | Bruce Hill <bruce@bruce-hill.com> | 2025-04-06 19:20:07 -0400 |
|---|---|---|
| committer | Bruce Hill <bruce@bruce-hill.com> | 2025-04-06 19:20:07 -0400 |
| commit | 1d2e55f53dfab5153dbfd0c03f28cd9daedb3b77 (patch) | |
| tree | aa1c21191800467abe0b3d16cb6c2a0c2e4587f9 /src/parse.c | |
| parent | bc93dea8186168aa015b05a615bc1873173393b5 (diff) | |
Allow uninitialized variables when there's a sensible empty value
(defaults to empty/zero value)
Diffstat (limited to 'src/parse.c')
| -rw-r--r-- | src/parse.c | 16 |
1 files changed, 9 insertions, 7 deletions
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); } |
