aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Sema.zig2
-rw-r--r--test/behavior/basic.zig10
2 files changed, 11 insertions, 1 deletions
diff --git a/src/Sema.zig b/src/Sema.zig
index 505810a158..ed8391a44d 100644
--- a/src/Sema.zig
+++ b/src/Sema.zig
@@ -2976,7 +2976,7 @@ fn zirResolveInferredAlloc(sema: *Sema, block: *Block, inst: Zir.Inst.Index) Com
// Even though we reuse the constant instruction, we still remove it from the
// block so that codegen does not see it.
- block.instructions.shrinkRetainingCapacity(block.instructions.items.len - 3);
+ block.instructions.shrinkRetainingCapacity(search_index);
sema.air_values.items[value_index] = try Value.Tag.decl_ref.create(sema.arena, new_decl_index);
// if bitcast ty ref needs to be made const, make_ptr_const
// ZIR handles it later, so we can just use the ty ref here.
diff --git a/test/behavior/basic.zig b/test/behavior/basic.zig
index e887a1d4b6..8bc1ad5cf2 100644
--- a/test/behavior/basic.zig
+++ b/test/behavior/basic.zig
@@ -977,3 +977,13 @@ test "weird array and tuple initializations" {
.b = if (a) .{ .e = .a } else .{ .e = .b },
};
}
+
+test "array type comes from generic function" {
+ const S = struct {
+ fn A() type {
+ return struct { a: u8 = 0 };
+ }
+ };
+ const args = [_]S.A(){.{}};
+ _ = args;
+}