authorgravatar for git@vexu.euVeikka Tuominen <git@vexu.eu> 2022-03-25 11:57:19+02:00
committergravatar for git@vexu.euVeikka Tuominen <git@vexu.eu> 2022-03-25 22:32:14+02:00
logf6bd534fc9ccbb45d6dfbcaf51eccd2967856661
tree72dd55931e52c682e867e6d4947fa9ccc4265bf6
parenta4c5ec49f1781054ef9394fe114e4338ed9970d4

Sema: ensure error_set_merged is sorted


2 files changed, 11 insertions(+), 0 deletions(-)

src/Sema.zig+4
...@@ -7390,6 +7390,8 @@ fn zirSwitchBlock(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError...@@ -7390,6 +7390,8 @@ fn zirSwitchBlock(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError
7390 names.putAssumeCapacityNoClobber(error_name, {});7390 names.putAssumeCapacityNoClobber(error_name, {});
7391 }7391 }
73927392
7393 // names must be sorted
7394 Module.ErrorSet.sortNames(&names);
7393 else_error_ty = try Type.Tag.error_set_merged.create(sema.arena, names);7395 else_error_ty = try Type.Tag.error_set_merged.create(sema.arena, names);
7394 }7396 }
7395 },7397 },
...@@ -12979,6 +12981,8 @@ fn zirReify(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air.I...@@ -12979,6 +12981,8 @@ fn zirReify(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air.I
12979 );12981 );
12980 }12982 }
1298112983
12984 // names must be sorted
12985 Module.ErrorSet.sortNames(&names);
12982 const ty = try Type.Tag.error_set_merged.create(sema.arena, names);12986 const ty = try Type.Tag.error_set_merged.create(sema.arena, names);
12983 return sema.addType(ty);12987 return sema.addType(ty);
12984 },12988 },
test/behavior/type.zig+7
...@@ -260,6 +260,13 @@ test "Type.ErrorSet" {...@@ -260,6 +260,13 @@ test "Type.ErrorSet" {
260 .{ .name = "C" },260 .{ .name = "C" },
261 },261 },
262 });262 });
263 _ = @Type(.{
264 .ErrorSet = &.{
265 .{ .name = "C" },
266 .{ .name = "B" },
267 .{ .name = "A" },
268 },
269 });
263}270}
264271
265test "Type.Struct" {272test "Type.Struct" {