summaryrefslogtreecommitdiffstats
path: root/source/slang/slang-linkable-impls.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/slang/slang-linkable-impls.cpp')
-rw-r--r--source/slang/slang-linkable-impls.cpp18
1 files changed, 11 insertions, 7 deletions
diff --git a/source/slang/slang-linkable-impls.cpp b/source/slang/slang-linkable-impls.cpp
index d03ecb3ca..082974fae 100644
--- a/source/slang/slang-linkable-impls.cpp
+++ b/source/slang/slang-linkable-impls.cpp
@@ -180,6 +180,7 @@ void CompositeComponentType::acceptVisitor(
RefPtr<ComponentType::SpecializationInfo> CompositeComponentType::_validateSpecializationArgsImpl(
SpecializationArg const* args,
Index argCount,
+ Index& outConsumedArgCount,
DiagnosticSink* sink)
{
SLANG_UNUSED(argCount);
@@ -189,15 +190,16 @@ RefPtr<ComponentType::SpecializationInfo> CompositeComponentType::_validateSpeci
Index offset = 0;
for (auto child : m_childComponents)
{
- auto childParamCount = child->getSpecializationParamCount();
- SLANG_ASSERT(offset + childParamCount <= argCount);
-
- auto childInfo = child->_validateSpecializationArgs(args + offset, childParamCount, sink);
-
+ Index consumedArgCount = 0;
+ auto childInfo = child->_validateSpecializationArgs(
+ args + offset,
+ argCount - offset,
+ consumedArgCount,
+ sink);
specializationInfo->childInfos.add(childInfo);
-
- offset += childParamCount;
+ offset += consumedArgCount;
}
+ outConsumedArgCount = offset;
return specializationInfo;
}
@@ -717,11 +719,13 @@ void TypeConformance::acceptVisitor(
RefPtr<ComponentType::SpecializationInfo> TypeConformance::_validateSpecializationArgsImpl(
SpecializationArg const* args,
Index argCount,
+ Index& outConsumedArgCount,
DiagnosticSink* sink)
{
SLANG_UNUSED(args);
SLANG_UNUSED(argCount);
SLANG_UNUSED(sink);
+ outConsumedArgCount = 0;
return nullptr;
}