From 6c7120d684cc46caafbe348d658158c0060a7638 Mon Sep 17 00:00:00 2001 From: Yong He Date: Wed, 5 Jul 2023 14:37:48 -0700 Subject: Bottleneck DeclRef creation through ASTBuilder. (#2689) * Bottleneck DeclRef creation through ASTBuilder. * Fix clang error. * Fix. * Fix. * More fix. * Rebase on top of tree. --------- Co-authored-by: Yong He --- source/slang/slang-language-server.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'source/slang/slang-language-server.cpp') diff --git a/source/slang/slang-language-server.cpp b/source/slang/slang-language-server.cpp index dbe031fd3..db50f9bdb 100644 --- a/source/slang/slang-language-server.cpp +++ b/source/slang/slang-language-server.cpp @@ -232,19 +232,19 @@ String getDeclKindString(DeclRef declRef) } else if (auto varDecl = declRef.as()) { - auto parent = declRef.getParent(); + auto parent = declRef.getDecl()->parentDecl; if (as(parent)) - parent = parent.getParent(); - if (parent.as()) + parent = parent->parentDecl; + if (as(parent)) { return "(associated constant) "; } - else if (parent.as()) + else if (as(parent)) { return "(field) "; } const char* scopeKind = ""; - if (parent.as()) + if (as(parent)) scopeKind = "global "; else if (getParentDecl(declRef.getDecl())) scopeKind = "local "; @@ -707,11 +707,11 @@ SlangResult LanguageServer::hover( } else if (auto decl = as(leafNode)) { - fillDeclRefHoverInfo(DeclRef(decl, nullptr)); + fillDeclRefHoverInfo(version->linkage->getASTBuilder()->getSpecializedDeclRef(decl, nullptr)); } else if (auto attr = as(leafNode)) { - fillDeclRefHoverInfo(DeclRef(attr->attributeDecl, nullptr)); + fillDeclRefHoverInfo(version->linkage->getASTBuilder()->getSpecializedDeclRef(attr->attributeDecl, nullptr)); } if (sb.getLength() == 0) { @@ -1320,7 +1320,7 @@ SlangResult LanguageServer::signatureHelp( // Look for initializers for (auto member : aggDecl->getMembersOfType()) { - addDeclRef(DeclRef(member, declRefExpr->declRef.substitutions)); + addDeclRef(version->linkage->getASTBuilder()->getSpecializedDeclRef(member, declRefExpr->declRef.substitutions)); } } else -- cgit v1.2.3