Skip to content

Commit 43dd5b4

Browse files
committed
Move enum number analysis to sementic2
1 parent e92dcf0 commit 43dd5b4

File tree

1 file changed

+5
-1
lines changed

1 file changed

+5
-1
lines changed

compiler/src/dmd/enumsem.d

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -345,6 +345,10 @@ void enumSemantic(Scope* sc, EnumDeclaration ed)
345345

346346
//if (ed.defaultval) printf("ed.defaultval: %s %s\n", ed.defaultval.toChars(), ed.defaultval.type.toChars());
347347
//printf("members = %s\n", members.toChars());
348+
349+
// Set semantic2done here to indicate all members have been processed
350+
// This prevents using the enum in a final switch while being defined
351+
ed.semanticRun = PASS.semantic2done;
348352
}
349353

350354
Expression getDefaultValue(EnumDeclaration ed, Loc loc)
@@ -734,7 +738,7 @@ void enumSemantic2(Scope* sc, EnumDeclaration ed)
734738
return;
735739
}
736740

737-
assert(ed.semanticRun == PASS.semanticdone);
741+
assert(ed.semanticRun == PASS.semanticdone || ed.semanticRun == PASS.semantic2);
738742
ed.semanticRun = PASS.semantic2;
739743

740744
if (!ed.members || !ed.symtab || ed.errors)

0 commit comments

Comments
 (0)