commit f6bd534fc9ccbb45d6dfbcaf51eccd2967856661 (tree)
parent a4c5ec49f1781054ef9394fe114e4338ed9970d4
Author: Veikka Tuominen <git@vexu.eu>
Date: Fri, 25 Mar 2022 11:57:19 +0200
Sema: ensure error_set_merged is sorted
Diffstat:
2 files changed, 11 insertions(+), 0 deletions(-)
diff --git 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
@@ -260,6 +260,13 @@ test "Type.ErrorSet" {
.{ .name = "C" },
},
});
+ _ = @Type(.{
+ .ErrorSet = &.{
+ .{ .name = "C" },
+ .{ .name = "B" },
+ .{ .name = "A" },
+ },
+ });
}
test "Type.Struct" {