add compile error for wrong type with use

closes #1557
This commit is contained in:
Andrew Kelley 2019-03-16 00:18:10 -04:00
parent 4a5cd0b895
commit c40448eb9a
No known key found for this signature in database
GPG Key ID: 7C5F548F728501A9
2 changed files with 14 additions and 0 deletions

View File

@ -4367,6 +4367,13 @@ static void add_symbols_from_import(CodeGen *g, AstNode *src_use_node, AstNode *
ZigType *target_import = use_target_value->data.x_type;
assert(target_import);
if (target_import->id != ZigTypeIdStruct) {
add_node_error(g, dst_use_node,
buf_sprintf("expected struct, found '%s'", buf_ptr(&target_import->name)));
get_container_scope(dst_use_node->owner)->any_imports_failed = true;
return;
}
if (get_container_scope(target_import)->any_imports_failed) {
get_container_scope(dst_use_node->owner)->any_imports_failed = true;
}

View File

@ -2,6 +2,13 @@ const tests = @import("tests.zig");
const builtin = @import("builtin");
pub fn addCases(cases: *tests.CompileErrorContext) void {
cases.add(
"usingnamespace with wrong type",
\\use void;
,
"tmp.zig:1:1: error: expected struct, found 'void'",
);
cases.add(
"ignored expression in while continuation",
\\export fn a() void {