From cbc1eff56057f199183bb7c17d8a360326512367 Mon Sep 17 00:00:00 2001 From: Yong He Date: Tue, 1 Nov 2022 08:46:57 -0700 Subject: Make `DifferentialPair` able to nest. (#2477) --- source/slang/slang-ast-builder.cpp | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) (limited to 'source/slang/slang-ast-builder.cpp') diff --git a/source/slang/slang-ast-builder.cpp b/source/slang/slang-ast-builder.cpp index f6c550d69..beee16f9c 100644 --- a/source/slang/slang-ast-builder.cpp +++ b/source/slang/slang-ast-builder.cpp @@ -141,6 +141,16 @@ Type* SharedASTBuilder::getNoneType() return m_noneType; } +Type* SharedASTBuilder::getDifferentialBottomType() +{ + if (!m_diffBottomType) + { + auto diffBottomTypeDecl = findMagicDecl("DifferentialBottomType"); + m_diffBottomType = DeclRefType::create(m_astBuilder, makeDeclRef(diffBottomTypeDecl)); + } + return m_diffBottomType; +} + SharedASTBuilder::~SharedASTBuilder() { // Release built in types.. @@ -299,13 +309,18 @@ VectorExpressionType* ASTBuilder::getVectorType( return result; } -DifferentialPairType* ASTBuilder::getDifferentialPairType(Type* valueType, Witness* conformanceWitness) +DifferentialPairType* ASTBuilder::getDifferentialPairType( + Type* valueType, + Witness* primalIsDifferentialWitness) { auto genericDecl = dynamicCast(m_sharedASTBuilder->findMagicDecl("DifferentialPairType")); auto typeDecl = genericDecl->inner; - auto substitutions = getOrCreate(genericDecl, valueType, conformanceWitness); + auto substitutions = getOrCreate( + genericDecl, + valueType, + primalIsDifferentialWitness); auto declRef = DeclRef(typeDecl, substitutions); auto rsType = DeclRefType::create(this, declRef); -- cgit v1.2.3