From 9f3e83cf0d664c87a618edf08d834829178030e6 Mon Sep 17 00:00:00 2001 From: Yong He Date: Tue, 6 Sep 2022 16:08:48 -0700 Subject: Specialize and SSA in a loop + better diagnostics on dynamic dispatch failure (#2396) * Report diagnostic when dynamic dispatch failed instead of crashing. * Specialize and SSA in a loop. Explicit specialization only interface. Co-authored-by: Yong He --- source/slang/slang-ir-lower-generic-call.cpp | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'source/slang/slang-ir-lower-generic-call.cpp') diff --git a/source/slang/slang-ir-lower-generic-call.cpp b/source/slang/slang-ir-lower-generic-call.cpp index 574db5dab..a94e72664 100644 --- a/source/slang/slang-ir-lower-generic-call.cpp +++ b/source/slang/slang-ir-lower-generic-call.cpp @@ -296,6 +296,11 @@ namespace Slang auto requirementKey = lookupInst->getRequirementKey(); auto requirementVal = sharedContext->findInterfaceRequirementVal(interfaceType, requirementKey); + + if (interfaceType->findDecoration()) + { + sharedContext->sink->diagnose(callInst->sourceLoc, Diagnostics::dynamicDispatchOnSpecializeOnlyInterface, interfaceType); + } auto dispatchFunc = getOrCreateInterfaceDispatchMethod( builder, interfaceType, requirementKey, requirementVal); -- cgit v1.2.3