diff --git a/src/analyze.cpp b/src/analyze.cpp index 0a04a14e3f..cadb5dfc01 100644 --- a/src/analyze.cpp +++ b/src/analyze.cpp @@ -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; } diff --git a/test/compile_errors.zig b/test/compile_errors.zig index c6771fb457..2ab5824de5 100644 --- a/test/compile_errors.zig +++ b/test/compile_errors.zig @@ -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 {