summaryrefslogtreecommitdiff
path: root/source/slang/slang-check-expr.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/slang/slang-check-expr.cpp')
-rw-r--r--source/slang/slang-check-expr.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/source/slang/slang-check-expr.cpp b/source/slang/slang-check-expr.cpp
index 8c170698b..47eb6be45 100644
--- a/source/slang/slang-check-expr.cpp
+++ b/source/slang/slang-check-expr.cpp
@@ -2038,6 +2038,12 @@ IntVal* SemanticsVisitor::tryConstantFoldExpr(
}
else if (auto enumRef = declRef.as<EnumCaseDecl>())
{
+ auto enumTypeDecl = enumRef.getParent().getDecl();
+ if (enumTypeDecl && !enumTypeDecl->checkState.isBeingChecked())
+ {
+ ensureDecl(enumRef.getParent(), DeclCheckState::DefinitionChecked);
+ }
+
// The cases in an `enum` declaration can also be used as constant expressions,
if (auto tagExpr = getTagExpr(m_astBuilder, enumRef))
{