summaryrefslogtreecommitdiffstats
path: root/source
diff options
context:
space:
mode:
Diffstat (limited to 'source')
-rw-r--r--source/slang/slang-mangle.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/source/slang/slang-mangle.cpp b/source/slang/slang-mangle.cpp
index a7d047a0c..2386e9f5a 100644
--- a/source/slang/slang-mangle.cpp
+++ b/source/slang/slang-mangle.cpp
@@ -287,6 +287,24 @@ namespace Slang
emitRaw(context, "k");
emit(context, (UInt) constantIntVal->value);
}
+ else if (auto funcCallIntVal = dynamicCast<FuncCallIntVal>(val))
+ {
+ emitRaw(context, "KC");
+ emit(context, funcCallIntVal->args.getCount());
+ emitName(context, funcCallIntVal->funcDeclRef.getName());
+ for (Index i = 0; i < funcCallIntVal->args.getCount(); i++)
+ emitVal(context, funcCallIntVal->args[i]);
+ }
+ else if (auto lookupIntVal = dynamicCast<WitnessLookupIntVal>(val))
+ {
+ emitRaw(context, "KL");
+ emitVal(context, lookupIntVal->witness);
+ emitName(context, lookupIntVal->key->getName());
+ }
+ else if (auto polynomialIntVal = dynamicCast<PolynomialIntVal>(val))
+ {
+ emitRaw(context, "KX");
+ }
else
{
SLANG_UNEXPECTED("unimplemented case in mangling");