From dcdebc1a76a0a6ffbfd6a5805354f8f679c60202 Mon Sep 17 00:00:00 2001 From: Yong He Date: Sat, 9 Aug 2025 09:43:25 -0700 Subject: Allow specializing entrypoints with generic value args or variadic types from API (#8119) Closes #8110. Closes #8011. --- source/slang/slang-linkable-impls.cpp | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) (limited to 'source/slang/slang-linkable-impls.cpp') 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 CompositeComponentType::_validateSpecializationArgsImpl( SpecializationArg const* args, Index argCount, + Index& outConsumedArgCount, DiagnosticSink* sink) { SLANG_UNUSED(argCount); @@ -189,15 +190,16 @@ RefPtr 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 TypeConformance::_validateSpecializationArgsImpl( SpecializationArg const* args, Index argCount, + Index& outConsumedArgCount, DiagnosticSink* sink) { SLANG_UNUSED(args); SLANG_UNUSED(argCount); SLANG_UNUSED(sink); + outConsumedArgCount = 0; return nullptr; } -- cgit v1.2.3