summaryrefslogtreecommitdiff
path: root/source/slang/slang-check-decl.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/slang/slang-check-decl.cpp')
-rw-r--r--source/slang/slang-check-decl.cpp26
1 files changed, 19 insertions, 7 deletions
diff --git a/source/slang/slang-check-decl.cpp b/source/slang/slang-check-decl.cpp
index ab3335bfb..39ab41421 100644
--- a/source/slang/slang-check-decl.cpp
+++ b/source/slang/slang-check-decl.cpp
@@ -12735,14 +12735,26 @@ struct CapabilityDeclReferenceVisitor
std::swap(stmt->targetCases[i], stmt->targetCases[i + 1]);
continue;
}
-
- if (!maybeRequireCapability)
- targetCap = (CapabilitySet(CapabilityName::any_target)
- .getTargetsThisHasButOtherDoesNot(set));
+ if (as<StageSwitchStmt>(stmt))
+ {
+ if (!maybeRequireCapability)
+ targetCap = (CapabilitySet(CapabilityName::any_target)
+ .getStagesThisHasButOtherDoesNot(set));
+ else
+ targetCap =
+ (maybeRequireCapability->capabilitySet.getStagesThisHasButOtherDoesNot(
+ set));
+ }
else
- targetCap =
- (maybeRequireCapability->capabilitySet.getTargetsThisHasButOtherDoesNot(
- set));
+ {
+ if (!maybeRequireCapability)
+ targetCap = (CapabilitySet(CapabilityName::any_target)
+ .getTargetsThisHasButOtherDoesNot(set));
+ else
+ targetCap =
+ (maybeRequireCapability->capabilitySet.getTargetsThisHasButOtherDoesNot(
+ set));
+ }
}
else
{