Sema: ensure error_set_merged is sorted

This commit is contained in:
Veikka Tuominen 2022-03-25 11:57:19 +02:00
parent a4c5ec49f1
commit f6bd534fc9
2 changed files with 11 additions and 0 deletions

View File

@ -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);
},

View File

@ -260,6 +260,13 @@ test "Type.ErrorSet" {
.{ .name = "C" },
},
});
_ = @Type(.{
.ErrorSet = &.{
.{ .name = "C" },
.{ .name = "B" },
.{ .name = "A" },
},
});
}
test "Type.Struct" {