Commit 3ce857d054

mlugg <mlugg@mlugg.co.uk>
2025-02-05 19:31:39
Sema: fix incorrectly succeeding type resolution
Resolves: #21436
1 parent f01f1e3
Changed files (2)
src/InternPool.zig
@@ -4011,7 +4011,7 @@ pub const LoadedStructType = struct {
 
     pub fn haveFieldTypes(s: LoadedStructType, ip: *const InternPool) bool {
         const types = s.field_types.get(ip);
-        return types.len == 0 or types[0] != .none;
+        return types.len == 0 or types[types.len - 1] != .none;
     }
 
     pub fn haveFieldInits(s: LoadedStructType, ip: *const InternPool) bool {
test/cases/compile_errors/struct_depends_on_itself_via_non_initial_field.zig
@@ -0,0 +1,12 @@
+const A = struct {
+    a: u8,
+    bytes: [@sizeOf(A)]u8,
+};
+
+comptime {
+    _ = A;
+}
+
+// error
+//
+// :1:11: error: struct 'tmp.A' depends on itself