Commit 6f5a438946

Veikka Tuominen <git@vexu.eu>
2022-11-29 17:40:28
AstGen: unstack block scope when creating opaque type
Closes #13697
1 parent e60db70
Changed files (2)
src
test
behavior
src/AstGen.zig
@@ -5070,6 +5070,7 @@ fn containerDecl(
             try astgen.extra.ensureUnusedCapacity(gpa, decls_slice.len);
             astgen.extra.appendSliceAssumeCapacity(decls_slice);
 
+            block_scope.unstack();
             try gz.addNamespaceCaptures(&namespace);
             return rvalue(gz, ri, indexToRef(decl_inst), node);
         },
test/behavior/basic.zig
@@ -1127,3 +1127,14 @@ test "pointer to zero sized global is mutable" {
     };
     try expect(@TypeOf(&S.thing) == *S.Thing);
 }
+
+test "returning an opaque type from a function" {
+    const S = struct {
+        fn foo(comptime a: u32) type {
+            return opaque {
+                const b = a;
+            };
+        }
+    };
+    try expect(S.foo(123).b == 123);
+}