authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2019-03-16 00:18:10-04:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2019-03-16 00:18:10-04:00
logc40448eb9a0e777c98c78d4ac0ddf08867618ea4
treeb12dc5540ebf3d8f92ebdc2e8c3167164f0b2544
parent4a5cd0b895d0c6093fa710ed4ecb819726b58c25
signaturelock-open Commit is signed but in an unrecognized format.

add compile error for wrong type with `use`

closes #1557

2 files changed, 14 insertions(+), 0 deletions(-)

src/analyze.cpp+7
......@@ -4367,6 +4367,13 @@ static void add_symbols_from_import(CodeGen *g, AstNode *src_use_node, AstNode *
43674367 ZigType *target_import = use_target_value->data.x_type;
43684368 assert(target_import);
43694369
4370 if (target_import->id != ZigTypeIdStruct) {
4371 add_node_error(g, dst_use_node,
4372 buf_sprintf("expected struct, found '%s'", buf_ptr(&target_import->name)));
4373 get_container_scope(dst_use_node->owner)->any_imports_failed = true;
4374 return;
4375 }
4376
43704377 if (get_container_scope(target_import)->any_imports_failed) {
43714378 get_container_scope(dst_use_node->owner)->any_imports_failed = true;
43724379 }
test/compile_errors.zig+7
......@@ -2,6 +2,13 @@ const tests = @import("tests.zig");
22const builtin = @import("builtin");
33
44pub fn addCases(cases: *tests.CompileErrorContext) void {
5 cases.add(
6 "usingnamespace with wrong type",
7 \\use void;
8 ,
9 "tmp.zig:1:1: error: expected struct, found 'void'",
10 );
11
512 cases.add(
613 "ignored expression in while continuation",
714 \\export fn a() void {