summaryrefslogtreecommitdiff
path: root/source/slang/slang-ir-generics-lowering-context.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/slang/slang-ir-generics-lowering-context.cpp')
-rw-r--r--source/slang/slang-ir-generics-lowering-context.cpp7
1 files changed, 4 insertions, 3 deletions
diff --git a/source/slang/slang-ir-generics-lowering-context.cpp b/source/slang/slang-ir-generics-lowering-context.cpp
index bef4dbb0a..4c4224295 100644
--- a/source/slang/slang-ir-generics-lowering-context.cpp
+++ b/source/slang/slang-ir-generics-lowering-context.cpp
@@ -134,13 +134,14 @@ namespace Slang
if (isTypeValue(paramType))
{
- return builder->getPtrType(builder->getRTTIType());
+ return builder->getRTTIHandleType();
}
IRIntegerValue anyValueSize = kInvalidAnyValueSize;
switch (paramType->op)
{
case kIROp_WitnessTableType:
+ case kIROp_WitnessTableIDType:
case kIROp_ExtractExistentialType:
// Do not translate these types.
return (IRType*)paramType;
@@ -174,8 +175,8 @@ namespace Slang
// An existential type translates into a tuple of (AnyValue, WitnessTable, RTTI*)
anyValueSize = getInterfaceAnyValueSize(paramType, paramType->sourceLoc);
auto anyValueType = builder->getAnyValueType(anyValueSize);
- auto witnessTableType = builder->getWitnessTableType((IRType*)paramType);
- auto rttiType = builder->getPtrType(builder->getRTTIType());
+ auto witnessTableType = builder->getWitnessTableIDType((IRType*)paramType);
+ auto rttiType = builder->getRTTIHandleType();
auto tupleType = builder->getTupleType(rttiType, witnessTableType, anyValueType);
return tupleType;
}