Commit f6bd534fc9

Veikka Tuominen <git@vexu.eu>
2022-03-25 10:57:19
Sema: ensure error_set_merged is sorted
1 parent a4c5ec4
Changed files (2)
src
test
behavior
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);
         },
test/behavior/type.zig
@@ -260,6 +260,13 @@ test "Type.ErrorSet" {
             .{ .name = "C" },
         },
     });
+    _ = @Type(.{
+        .ErrorSet = &.{
+            .{ .name = "C" },
+            .{ .name = "B" },
+            .{ .name = "A" },
+        },
+    });
 }
 
 test "Type.Struct" {