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(
1776317763 }
1776417764
1776517765 // 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.?);
1776717767 chosen = candidate;
1776817768 chosen_i = candidate_i + 1;
1776917769 continue;
......@@ -17850,7 +17850,7 @@ fn resolvePeerTypes(
1785017850 }
1785117851
1785217852 // 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.?);
1785417854 chosen = candidate;
1785517855 chosen_i = candidate_i + 1;
1785617856 continue;
test/behavior/cast.zig+12-12
......@@ -669,16 +669,16 @@ test "peer type resolution: disjoint error sets" {
669669 const a: error{ One, Two } = undefined;
670670 const b: error{Three} = undefined;
671671
672 // note: order of error set members doesn't member, may want to sort
672 // note: order of error set made to match stage1 during stage2 dev
673673
674674 {
675675 const ty = @TypeOf(a, b);
676676 const error_set_info = @typeInfo(ty);
677677 try expect(error_set_info == .ErrorSet);
678678 try expect(error_set_info.ErrorSet.?.len == 3);
679 try expect(mem.eql(u8, error_set_info.ErrorSet.?[0].name, "One"));
680 try expect(mem.eql(u8, error_set_info.ErrorSet.?[1].name, "Two"));
681 try expect(mem.eql(u8, error_set_info.ErrorSet.?[2].name, "Three"));
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, "One"));
681 try expect(mem.eql(u8, error_set_info.ErrorSet.?[2].name, "Two"));
682682 }
683683
684684 {
......@@ -686,9 +686,9 @@ test "peer type resolution: disjoint error sets" {
686686 const error_set_info = @typeInfo(ty);
687687 try expect(error_set_info == .ErrorSet);
688688 try expect(error_set_info.ErrorSet.?.len == 3);
689 try expect(mem.eql(u8, error_set_info.ErrorSet.?[0].name, "Three"));
690 try expect(mem.eql(u8, error_set_info.ErrorSet.?[1].name, "One"));
691 try expect(mem.eql(u8, error_set_info.ErrorSet.?[2].name, "Two"));
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, "Two"));
691 try expect(mem.eql(u8, error_set_info.ErrorSet.?[2].name, "Three"));
692692 }
693693}
694694
......@@ -701,7 +701,7 @@ test "peer type resolution: error union and error set" {
701701 const a: error{Three} = undefined;
702702 const b: error{ One, Two }!u32 = undefined;
703703
704 // note: order of error set members doesn't member, may want to sort
704 // note: order of error set made to match stage1 during stage2 dev
705705
706706 {
707707 const ty = @TypeOf(a, b);
......@@ -710,9 +710,9 @@ test "peer type resolution: error union and error set" {
710710
711711 const error_set_info = @typeInfo(info.ErrorUnion.error_set);
712712 try expect(error_set_info.ErrorSet.?.len == 3);
713 try expect(mem.eql(u8, error_set_info.ErrorSet.?[0].name, "Three"));
714 try expect(mem.eql(u8, error_set_info.ErrorSet.?[1].name, "One"));
715 try expect(mem.eql(u8, error_set_info.ErrorSet.?[2].name, "Two"));
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, "Two"));
715 try expect(mem.eql(u8, error_set_info.ErrorSet.?[2].name, "Three"));
716716 }
717717
718718 {
......@@ -737,7 +737,7 @@ test "peer type resolution: error union after non-error" {
737737 const a: u32 = undefined;
738738 const b: error{ One, Two }!u32 = undefined;
739739
740 // note: order of error set members doesn't member, may want to sort
740 // note: order of error set made to match stage1 during stage2 dev
741741
742742 {
743743 const ty = @TypeOf(a, b);