From a74a5494b34e2b41a294042ab8b3e7bce115dcba Mon Sep 17 00:00:00 2001 From: Yong He Date: Tue, 16 Jan 2018 15:38:36 -0500 Subject: bug fixes to get falcor example shader code to compile. 1. prevent cyclic lookups when an interface inherits transitively from itself. 2. in `createGlobalGenericParamSubstitution`, create a default substitution for the base type declref before using it to lookup the witness table. --- source/slang/ir.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'source/slang/ir.cpp') diff --git a/source/slang/ir.cpp b/source/slang/ir.cpp index 45ad71b67..f65af2ba4 100644 --- a/source/slang/ir.cpp +++ b/source/slang/ir.cpp @@ -4889,8 +4889,10 @@ namespace Slang { if (auto subDeclRefType = subtypeWitness->sub.As()) { - auto genericWitnessTableName = getMangledNameForConformanceWitness(DeclRef(subDeclRefType->declRef.getDecl(), nullptr), subtypeWitness->sup); + auto defaultSubst = createDefaultSubstitutions(entryPointRequest->compileRequest->mSession, subDeclRefType->declRef.getDecl()); + auto genericWitnessTableName = getMangledNameForConformanceWitness(DeclRef(subDeclRefType->declRef.getDecl(), defaultSubst), subtypeWitness->sup); table = findWitnessTableByName(genericWitnessTableName); + SLANG_ASSERT(table); WitnessTableSpecializationWorkItem workItem; workItem.srcTable = (IRWitnessTable*)table; workItem.dstTable = context->builder->createWitnessTable(); -- cgit v1.2.3