diff options
| author | Veikka Tuominen <git@vexu.eu> | 2022-03-25 11:57:19 +0200 |
|---|---|---|
| committer | Veikka Tuominen <git@vexu.eu> | 2022-03-25 22:32:14 +0200 |
| commit | f6bd534fc9ccbb45d6dfbcaf51eccd2967856661 (patch) | |
| tree | 72dd55931e52c682e867e6d4947fa9ccc4265bf6 | |
| parent | a4c5ec49f1781054ef9394fe114e4338ed9970d4 (diff) | |
| download | zig-f6bd534fc9ccbb45d6dfbcaf51eccd2967856661.tar.gz zig-f6bd534fc9ccbb45d6dfbcaf51eccd2967856661.zip | |
Sema: ensure error_set_merged is sorted
| -rw-r--r-- | src/Sema.zig | 4 | ||||
| -rw-r--r-- | test/behavior/type.zig | 7 |
2 files changed, 11 insertions, 0 deletions
diff --git a/src/Sema.zig b/src/Sema.zig index d9eea3e811..2e7bd06ada 100644 --- a/src/Sema.zig +++ b/src/Sema.zig @@ -7390,6 +7390,8 @@ fn zirSwitchBlock(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError names.putAssumeCapacityNoClobber(error_name, {}); } + // names must be sorted + Module.ErrorSet.sortNames(&names); else_error_ty = try Type.Tag.error_set_merged.create(sema.arena, names); } }, @@ -12979,6 +12981,8 @@ fn zirReify(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air.I ); } + // names must be sorted + Module.ErrorSet.sortNames(&names); const ty = try Type.Tag.error_set_merged.create(sema.arena, names); return sema.addType(ty); }, diff --git a/test/behavior/type.zig b/test/behavior/type.zig index e3c896d0f7..65bebff946 100644 --- a/test/behavior/type.zig +++ b/test/behavior/type.zig @@ -260,6 +260,13 @@ test "Type.ErrorSet" { .{ .name = "C" }, }, }); + _ = @Type(.{ + .ErrorSet = &.{ + .{ .name = "C" }, + .{ .name = "B" }, + .{ .name = "A" }, + }, + }); } test "Type.Struct" { |
