aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVeikka Tuominen <git@vexu.eu>2022-03-25 11:57:19 +0200
committerVeikka Tuominen <git@vexu.eu>2022-03-25 22:32:14 +0200
commitf6bd534fc9ccbb45d6dfbcaf51eccd2967856661 (patch)
tree72dd55931e52c682e867e6d4947fa9ccc4265bf6
parenta4c5ec49f1781054ef9394fe114e4338ed9970d4 (diff)
downloadzig-f6bd534fc9ccbb45d6dfbcaf51eccd2967856661.tar.gz
zig-f6bd534fc9ccbb45d6dfbcaf51eccd2967856661.zip
Sema: ensure error_set_merged is sorted
-rw-r--r--src/Sema.zig4
-rw-r--r--test/behavior/type.zig7
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" {