diff options
| author | Mitchell Hashimoto <mitchell.hashimoto@gmail.com> | 2022-02-27 19:13:52 -0800 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2022-02-28 20:42:13 -0700 |
| commit | 0eb3cb9e8cd263172fec797ed916aade3e5404f0 (patch) | |
| tree | d9639a8320f0c65030f6c011834ad6695dfb38e2 | |
| parent | 6dae1de017f6d9e49fc99eb14c689180e08fb7fe (diff) | |
| download | zig-0eb3cb9e8cd263172fec797ed916aade3e5404f0.tar.gz zig-0eb3cb9e8cd263172fec797ed916aade3e5404f0.zip | |
stage2: order of error set merging should match stage1
| -rw-r--r-- | src/Sema.zig | 4 | ||||
| -rw-r--r-- | test/behavior/cast.zig | 24 |
2 files changed, 14 insertions, 14 deletions
diff --git a/src/Sema.zig b/src/Sema.zig index e5cad45e90..e69d0829f1 100644 --- a/src/Sema.zig +++ b/src/Sema.zig @@ -17763,7 +17763,7 @@ fn resolvePeerTypes( } // Merge errors - err_set_ty = try err_set_ty.?.errorSetMerge(sema.arena, candidate_ty); + err_set_ty = try candidate_ty.errorSetMerge(sema.arena, err_set_ty.?); chosen = candidate; chosen_i = candidate_i + 1; continue; @@ -17850,7 +17850,7 @@ fn resolvePeerTypes( } // Not a superset, create merged error set - err_set_ty = try err_set_ty.?.errorSetMerge(sema.arena, eu_set_ty); + err_set_ty = try eu_set_ty.errorSetMerge(sema.arena, err_set_ty.?); chosen = candidate; chosen_i = candidate_i + 1; continue; diff --git a/test/behavior/cast.zig b/test/behavior/cast.zig index af2eef03f1..9ecfaa5edb 100644 --- a/test/behavior/cast.zig +++ b/test/behavior/cast.zig @@ -669,16 +669,16 @@ test "peer type resolution: disjoint error sets" { const a: error{ One, Two } = undefined; const b: error{Three} = undefined; - // note: order of error set members doesn't member, may want to sort + // note: order of error set made to match stage1 during stage2 dev { const ty = @TypeOf(a, b); const error_set_info = @typeInfo(ty); try expect(error_set_info == .ErrorSet); try expect(error_set_info.ErrorSet.?.len == 3); - try expect(mem.eql(u8, error_set_info.ErrorSet.?[0].name, "One")); - try expect(mem.eql(u8, error_set_info.ErrorSet.?[1].name, "Two")); - try expect(mem.eql(u8, error_set_info.ErrorSet.?[2].name, "Three")); + try expect(mem.eql(u8, error_set_info.ErrorSet.?[0].name, "Three")); + try expect(mem.eql(u8, error_set_info.ErrorSet.?[1].name, "One")); + try expect(mem.eql(u8, error_set_info.ErrorSet.?[2].name, "Two")); } { @@ -686,9 +686,9 @@ test "peer type resolution: disjoint error sets" { const error_set_info = @typeInfo(ty); try expect(error_set_info == .ErrorSet); try expect(error_set_info.ErrorSet.?.len == 3); - try expect(mem.eql(u8, error_set_info.ErrorSet.?[0].name, "Three")); - try expect(mem.eql(u8, error_set_info.ErrorSet.?[1].name, "One")); - try expect(mem.eql(u8, error_set_info.ErrorSet.?[2].name, "Two")); + try expect(mem.eql(u8, error_set_info.ErrorSet.?[0].name, "One")); + try expect(mem.eql(u8, error_set_info.ErrorSet.?[1].name, "Two")); + try expect(mem.eql(u8, error_set_info.ErrorSet.?[2].name, "Three")); } } @@ -701,7 +701,7 @@ test "peer type resolution: error union and error set" { const a: error{Three} = undefined; const b: error{ One, Two }!u32 = undefined; - // note: order of error set members doesn't member, may want to sort + // note: order of error set made to match stage1 during stage2 dev { const ty = @TypeOf(a, b); @@ -710,9 +710,9 @@ test "peer type resolution: error union and error set" { const error_set_info = @typeInfo(info.ErrorUnion.error_set); try expect(error_set_info.ErrorSet.?.len == 3); - try expect(mem.eql(u8, error_set_info.ErrorSet.?[0].name, "Three")); - try expect(mem.eql(u8, error_set_info.ErrorSet.?[1].name, "One")); - try expect(mem.eql(u8, error_set_info.ErrorSet.?[2].name, "Two")); + try expect(mem.eql(u8, error_set_info.ErrorSet.?[0].name, "One")); + try expect(mem.eql(u8, error_set_info.ErrorSet.?[1].name, "Two")); + try expect(mem.eql(u8, error_set_info.ErrorSet.?[2].name, "Three")); } { @@ -737,7 +737,7 @@ test "peer type resolution: error union after non-error" { const a: u32 = undefined; const b: error{ One, Two }!u32 = undefined; - // note: order of error set members doesn't member, may want to sort + // note: order of error set made to match stage1 during stage2 dev { const ty = @TypeOf(a, b); |
