File tree Expand file tree Collapse file tree 1 file changed +5
-1
lines changed
Expand file tree Collapse file tree 1 file changed +5
-1
lines changed Original file line number Diff line number Diff 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
350354Expression 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)
You can’t perform that action at this time.
0 commit comments