aboutsummaryrefslogtreecommitdiff
path: root/src/Module.zig
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2022-03-30 17:20:12 -0700
committerAndrew Kelley <andrew@ziglang.org>2022-03-30 17:24:01 -0700
commit02d69f50092ee9ecfa552ff94d20fde62edd7adc (patch)
treee2e5537b8aede2f407863a15834641226631620e /src/Module.zig
parent5d5b1b68fc1b3e1f5a8c7871c9f31716c89eb062 (diff)
downloadzig-02d69f50092ee9ecfa552ff94d20fde62edd7adc.tar.gz
zig-02d69f50092ee9ecfa552ff94d20fde62edd7adc.zip
Sema: fix usingnamespace decl Value in wrong arena
closes #11297
Diffstat (limited to 'src/Module.zig')
-rw-r--r--src/Module.zig7
1 files changed, 3 insertions, 4 deletions
diff --git a/src/Module.zig b/src/Module.zig
index 3bc763103b..1fd83108ff 100644
--- a/src/Module.zig
+++ b/src/Module.zig
@@ -3909,19 +3909,18 @@ fn semaDecl(mod: *Module, decl: *Decl) !bool {
const decl_arena_state = try decl_arena_allocator.create(std.heap.ArenaAllocator.State);
if (decl.is_usingnamespace) {
- const ty_ty = Type.initTag(.type);
- if (!decl_tv.ty.eql(ty_ty, target)) {
+ if (!decl_tv.ty.eql(Type.type, target)) {
return sema.fail(&block_scope, src, "expected type, found {}", .{
decl_tv.ty.fmt(target),
});
}
var buffer: Value.ToTypeBuffer = undefined;
- const ty = decl_tv.val.toType(&buffer);
+ const ty = try decl_tv.val.toType(&buffer).copy(decl_arena_allocator);
if (ty.getNamespace() == null) {
return sema.fail(&block_scope, src, "type {} has no namespace", .{ty.fmt(target)});
}
- decl.ty = ty_ty;
+ decl.ty = Type.type;
decl.val = try Value.Tag.ty.create(decl_arena_allocator, ty);
decl.@"align" = 0;
decl.@"linksection" = null;