diff options
Diffstat (limited to 'source/slang/slang-mangle.cpp')
| -rw-r--r-- | source/slang/slang-mangle.cpp | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/source/slang/slang-mangle.cpp b/source/slang/slang-mangle.cpp index 9431533ac..d72644c9f 100644 --- a/source/slang/slang-mangle.cpp +++ b/source/slang/slang-mangle.cpp @@ -260,6 +260,12 @@ namespace Slang for (Index i = 0; i < n; ++i) emitVal(context, modifiedType->getModifier(i)); } + else if (auto andType = as<AndType>(type)) + { + emitRaw(context, "Ta"); + emitType(context, andType->getLeft()); + emitType(context, andType->getRight()); + } else { SLANG_UNEXPECTED("unimplemented case in type mangling"); @@ -601,10 +607,18 @@ namespace Slang emitQualifiedName(context, makeDeclRef(innerDecl), true); return; } - else if (as<ForwardDerivativeRequirementDecl>(decl)) + else if (auto fwdReq = as<ForwardDerivativeRequirementDecl>(decl)) + { emitRaw(context, "FwdReq_"); - else if (as<BackwardDerivativeRequirementDecl>(decl)) + emitQualifiedName(context, fwdReq->originalRequirementDecl, true); + return; + } + else if (auto bwdReq = as<BackwardDerivativeRequirementDecl>(decl)) + { emitRaw(context, "BwdReq_"); + emitQualifiedName(context, bwdReq->originalRequirementDecl, true); + return; + } else { // TODO: handle other cases |
