diff options
| author | Andrew Kelley <superjoe30@gmail.com> | 2018-01-31 11:13:39 -0500 |
|---|---|---|
| committer | Andrew Kelley <superjoe30@gmail.com> | 2018-01-31 11:13:39 -0500 |
| commit | 44f38b04b0cc374fcd377df0fe68f29c824185ff (patch) | |
| tree | 4d3302eeb87b768a8d1d0b78eaebc54daf077f2e | |
| parent | 40ca39d3d5a556e3b5d7298e3a5182f4351bdd17 (diff) | |
| download | zig-44f38b04b0cc374fcd377df0fe68f29c824185ff.tar.gz zig-44f38b04b0cc374fcd377df0fe68f29c824185ff.zip | |
fix assertion fail when using global var number literal
closes #697
| -rw-r--r-- | src/analyze.cpp | 4 | ||||
| -rw-r--r-- | test/compile_errors.zig | 7 |
2 files changed, 11 insertions, 0 deletions
diff --git a/src/analyze.cpp b/src/analyze.cpp index 4fa8dad7ce..2812c9d79e 100644 --- a/src/analyze.cpp +++ b/src/analyze.cpp @@ -3295,6 +3295,10 @@ static void resolve_decl_var(CodeGen *g, TldVar *tld_var) { is_const, init_val, &tld_var->base); tld_var->var->linkage = linkage; + if (implicit_type != nullptr && type_is_invalid(implicit_type)) { + tld_var->var->value->type = g->builtin_types.entry_invalid; + } + if (var_decl->align_expr != nullptr) { if (!analyze_const_align(g, tld_var->base.parent_scope, var_decl->align_expr, &tld_var->var->align_bytes)) { tld_var->var->value->type = g->builtin_types.entry_invalid; diff --git a/test/compile_errors.zig b/test/compile_errors.zig index 223646e767..3267ea7435 100644 --- a/test/compile_errors.zig +++ b/test/compile_errors.zig @@ -1,6 +1,13 @@ const tests = @import("tests.zig"); pub fn addCases(cases: &tests.CompileErrorContext) void { + cases.add("use invalid number literal as array index", + \\var v = 25; + \\export fn entry() void { + \\ var arr: [v]u8 = undefined; + \\} + , ".tmp_source.zig:1:1: error: unable to infer variable type"); + cases.add("duplicate struct field", \\const Foo = struct { \\ Bar: i32, |
