authorgravatar for mitchell.hashimoto@gmail.comMitchell Hashimoto <mitchell.hashimoto@gmail.com> 2022-02-27 19:13:52-08:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2022-02-28 20:42:13-07:00
log0eb3cb9e8cd263172fec797ed916aade3e5404f0
treed9639a8320f0c65030f6c011834ad6695dfb38e2
parent6dae1de017f6d9e49fc99eb14c689180e08fb7fe

stage2: order of error set merging should match stage1


2 files changed, 14 insertions(+), 14 deletions(-)

src/Sema.zig+2-2
...@@ -17763,7 +17763,7 @@ fn resolvePeerTypes(...@@ -17763,7 +17763,7 @@ fn resolvePeerTypes(
17763 }17763 }
1776417764
17765 // Merge errors17765 // Merge errors
17766 err_set_ty = try err_set_ty.?.errorSetMerge(sema.arena, candidate_ty);17766 err_set_ty = try candidate_ty.errorSetMerge(sema.arena, err_set_ty.?);
17767 chosen = candidate;17767 chosen = candidate;
17768 chosen_i = candidate_i + 1;17768 chosen_i = candidate_i + 1;
17769 continue;17769 continue;
...@@ -17850,7 +17850,7 @@ fn resolvePeerTypes(...@@ -17850,7 +17850,7 @@ fn resolvePeerTypes(
17850 }17850 }
1785117851
17852 // Not a superset, create merged error set17852 // Not a superset, create merged error set
17853 err_set_ty = try err_set_ty.?.errorSetMerge(sema.arena, eu_set_ty);17853 err_set_ty = try eu_set_ty.errorSetMerge(sema.arena, err_set_ty.?);
17854 chosen = candidate;17854 chosen = candidate;
17855 chosen_i = candidate_i + 1;17855 chosen_i = candidate_i + 1;
17856 continue;17856 continue;
test/behavior/cast.zig+12-12
...@@ -669,16 +669,16 @@ test "peer type resolution: disjoint error sets" {...@@ -669,16 +669,16 @@ test "peer type resolution: disjoint error sets" {
669 const a: error{ One, Two } = undefined;669 const a: error{ One, Two } = undefined;
670 const b: error{Three} = undefined;670 const b: error{Three} = undefined;
671671
672 // note: order of error set members doesn't member, may want to sort672 // note: order of error set made to match stage1 during stage2 dev
673673
674 {674 {
675 const ty = @TypeOf(a, b);675 const ty = @TypeOf(a, b);
676 const error_set_info = @typeInfo(ty);676 const error_set_info = @typeInfo(ty);
677 try expect(error_set_info == .ErrorSet);677 try expect(error_set_info == .ErrorSet);
678 try expect(error_set_info.ErrorSet.?.len == 3);678 try expect(error_set_info.ErrorSet.?.len == 3);
679 try expect(mem.eql(u8, error_set_info.ErrorSet.?[0].name, "One"));679 try expect(mem.eql(u8, error_set_info.ErrorSet.?[0].name, "Three"));
680 try expect(mem.eql(u8, error_set_info.ErrorSet.?[1].name, "Two"));680 try expect(mem.eql(u8, error_set_info.ErrorSet.?[1].name, "One"));
681 try expect(mem.eql(u8, error_set_info.ErrorSet.?[2].name, "Three"));681 try expect(mem.eql(u8, error_set_info.ErrorSet.?[2].name, "Two"));
682 }682 }
683683
684 {684 {
...@@ -686,9 +686,9 @@ test "peer type resolution: disjoint error sets" {...@@ -686,9 +686,9 @@ test "peer type resolution: disjoint error sets" {
686 const error_set_info = @typeInfo(ty);686 const error_set_info = @typeInfo(ty);
687 try expect(error_set_info == .ErrorSet);687 try expect(error_set_info == .ErrorSet);
688 try expect(error_set_info.ErrorSet.?.len == 3);688 try expect(error_set_info.ErrorSet.?.len == 3);
689 try expect(mem.eql(u8, error_set_info.ErrorSet.?[0].name, "Three"));689 try expect(mem.eql(u8, error_set_info.ErrorSet.?[0].name, "One"));
690 try expect(mem.eql(u8, error_set_info.ErrorSet.?[1].name, "One"));690 try expect(mem.eql(u8, error_set_info.ErrorSet.?[1].name, "Two"));
691 try expect(mem.eql(u8, error_set_info.ErrorSet.?[2].name, "Two"));691 try expect(mem.eql(u8, error_set_info.ErrorSet.?[2].name, "Three"));
692 }692 }
693}693}
694694
...@@ -701,7 +701,7 @@ test "peer type resolution: error union and error set" {...@@ -701,7 +701,7 @@ test "peer type resolution: error union and error set" {
701 const a: error{Three} = undefined;701 const a: error{Three} = undefined;
702 const b: error{ One, Two }!u32 = undefined;702 const b: error{ One, Two }!u32 = undefined;
703703
704 // note: order of error set members doesn't member, may want to sort704 // note: order of error set made to match stage1 during stage2 dev
705705
706 {706 {
707 const ty = @TypeOf(a, b);707 const ty = @TypeOf(a, b);
...@@ -710,9 +710,9 @@ test "peer type resolution: error union and error set" {...@@ -710,9 +710,9 @@ test "peer type resolution: error union and error set" {
710710
711 const error_set_info = @typeInfo(info.ErrorUnion.error_set);711 const error_set_info = @typeInfo(info.ErrorUnion.error_set);
712 try expect(error_set_info.ErrorSet.?.len == 3);712 try expect(error_set_info.ErrorSet.?.len == 3);
713 try expect(mem.eql(u8, error_set_info.ErrorSet.?[0].name, "Three"));713 try expect(mem.eql(u8, error_set_info.ErrorSet.?[0].name, "One"));
714 try expect(mem.eql(u8, error_set_info.ErrorSet.?[1].name, "One"));714 try expect(mem.eql(u8, error_set_info.ErrorSet.?[1].name, "Two"));
715 try expect(mem.eql(u8, error_set_info.ErrorSet.?[2].name, "Two"));715 try expect(mem.eql(u8, error_set_info.ErrorSet.?[2].name, "Three"));
716 }716 }
717717
718 {718 {
...@@ -737,7 +737,7 @@ test "peer type resolution: error union after non-error" {...@@ -737,7 +737,7 @@ test "peer type resolution: error union after non-error" {
737 const a: u32 = undefined;737 const a: u32 = undefined;
738 const b: error{ One, Two }!u32 = undefined;738 const b: error{ One, Two }!u32 = undefined;
739739
740 // note: order of error set members doesn't member, may want to sort740 // note: order of error set made to match stage1 during stage2 dev
741741
742 {742 {
743 const ty = @TypeOf(a, b);743 const ty = @TypeOf(a, b);