diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2022-03-11 19:31:29 -0700 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2022-03-11 19:38:07 -0700 |
| commit | 55ba335e0ffc2af76bf0743d98f5a959ccce0409 (patch) | |
| tree | f9f705b5f33d0d54c52cdee9e38e40424ab9fd52 /test/behavior/array.zig | |
| parent | 2ee3cc453c4cefa3519f6a6238d4721364d829ae (diff) | |
| download | zig-55ba335e0ffc2af76bf0743d98f5a959ccce0409.tar.gz zig-55ba335e0ffc2af76bf0743d98f5a959ccce0409.zip | |
Sema: fix resolution of inferred error sets
Introduce `Module.ensureFuncBodyAnalyzed` and corresponding `Sema`
function. This mirrors `ensureDeclAnalyzed` except also waits until the
function body has been semantically analyzed, meaning that inferred
error sets will have been populated.
Resolving error sets can now emit a "unable to resolve inferred error
set" error instead of producing an incorrect error set type. Resolving
error sets now calls `ensureFuncBodyAnalyzed`. Closes #11046.
`coerceInMemoryAllowedErrorSets` now does a lot more work to avoid
resolving an inferred error set if possible. Same with
`wrapErrorUnionSet`.
Inferred error set types no longer check the `func` field to determine if
they are equal. That was incorrect because an inline or comptime function
call produces a unique error set which has the same `*Module.Fn` value for
this field. Instead we use the `*Module.Fn.InferredErrorSet` pointers to
test equality of inferred error sets.
Diffstat (limited to 'test/behavior/array.zig')
| -rw-r--r-- | test/behavior/array.zig | 3 |
1 files changed, 0 insertions, 3 deletions
diff --git a/test/behavior/array.zig b/test/behavior/array.zig index eb8ae8972d..3d39942e3d 100644 --- a/test/behavior/array.zig +++ b/test/behavior/array.zig @@ -538,9 +538,6 @@ test "type coercion of anon struct literal to array" { try expect(arr1[1] == 56); try expect(arr1[2] == 54); - if (builtin.zig_backend == .stage2_llvm) return error.SkipZigTest; // TODO - if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO - var x2: U = .{ .a = 42 }; const t2 = .{ x2, .{ .b = true }, .{ .c = "hello" } }; var arr2: [3]U = t2; |
