From a2d90fb275962da84611160f8ddd74d934a68dbd Mon Sep 17 00:00:00 2001 From: Yong He Date: Fri, 4 Aug 2023 15:47:39 -0700 Subject: Redesign `DeclRef` and systematic `Val` deduplication (#3049) * Redesign DeclRef + Deduplicate Val. * Update project files * Fix warning. * Fix. * Fix. * Remove `Val::_equalsImplOverride`. * Rmove `Val::_getHashCodeOverride`. * Remove `semanticVisitor` param from `resolve`. * Cleanups. --------- Co-authored-by: Yong He --- source/slang/slang-ast-print.cpp | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) (limited to 'source/slang/slang-ast-print.cpp') diff --git a/source/slang/slang-ast-print.cpp b/source/slang/slang-ast-print.cpp index 84c521108..b80afeee1 100644 --- a/source/slang/slang-ast-print.cpp +++ b/source/slang/slang-ast-print.cpp @@ -36,12 +36,12 @@ void ASTPrinter::addType(Type* type) { if (auto vectorType = as(type)) { - if (as(vectorType->elementType)) + if (as(vectorType->getElementType())) { - vectorType->elementType->toText(m_builder); - if (as(vectorType->elementCount)) + vectorType->getElementType()->toText(m_builder); + if (as(vectorType->getElementCount())) { - m_builder << vectorType->elementCount; + m_builder << vectorType->getElementCount(); return; } } @@ -107,14 +107,14 @@ void ASTPrinter::_addDeclPathRec(const DeclRef& declRef, Index depth) auto& sb = m_builder; // Find the parent declaration - auto parentDeclRef = declRef.getParent(m_astBuilder); + auto parentDeclRef = declRef.getParent(); // If the immediate parent is a generic, then we probably // want the declaration above that... auto parentGenericDeclRef = parentDeclRef.as(); if (parentGenericDeclRef) { - parentDeclRef = parentGenericDeclRef.getParent(m_astBuilder); + parentDeclRef = parentGenericDeclRef.getParent(); } // Depending on what the parent is, we may want to format things specially @@ -172,12 +172,9 @@ void ASTPrinter::_addDeclPathRec(const DeclRef& declRef, Index depth) !declRef.as() && !declRef.as()) { - auto genSubst = as(declRef.getSubst()); - if (genSubst) + auto substArgs = tryGetGenericArguments(SubstitutionSet(declRef), parentGenericDeclRef.getDecl()); + if (substArgs.getCount()) { - SLANG_RELEASE_ASSERT(genSubst); - SLANG_RELEASE_ASSERT(genSubst->getGenericDecl() == parentGenericDeclRef.getDecl()); - // If the name we printed previously was an operator // that ends with `<`, then immediately printing the // generic arguments inside `<...>` may cause it to @@ -193,7 +190,7 @@ void ASTPrinter::_addDeclPathRec(const DeclRef& declRef, Index depth) sb << "<"; bool first = true; - for (auto arg : genSubst->getArgs()) + for (auto arg : substArgs) { // When printing the representation of a specialized // generic declaration we don't want to include the @@ -331,7 +328,7 @@ void ASTPrinter::addDeclParams(const DeclRef& declRef, List>* { addGenericParams(genericDeclRef); - addDeclParams(m_astBuilder->getSpecializedDeclRef(getInner(genericDeclRef), genericDeclRef.getSubst()), outParamRange); + addDeclParams(m_astBuilder->getMemberDeclRef(genericDeclRef, genericDeclRef.getDecl()->inner), outParamRange); } else { @@ -443,7 +440,7 @@ void ASTPrinter::addDeclResultType(const DeclRef& inDeclRef) DeclRef declRef = inDeclRef; if (auto genericDeclRef = declRef.as()) { - declRef = m_astBuilder->getSpecializedDeclRef(getInner(genericDeclRef), genericDeclRef.getSubst()); + declRef = m_astBuilder->getMemberDeclRef(genericDeclRef, genericDeclRef.getDecl()->inner); } if (declRef.as()) -- cgit v1.2.3