[clang-tools-extra] 02ec6ff - [clangd] Use name of Macro to compute its SymbolID, NFC.
Haojian Wu via cfe-commits
cfe-commits at lists.llvm.org
Mon Nov 11 03:42:15 PST 2019
Author: Utkarsh Saxena
Date: 2019-11-11T12:38:49+01:00
New Revision: 02ec6ff77eb718528138737c885e67c248ecae49
URL: https://github.com/llvm/llvm-project/commit/02ec6ff77eb718528138737c885e67c248ecae49
DIFF: https://github.com/llvm/llvm-project/commit/02ec6ff77eb718528138737c885e67c248ecae49.diff
LOG: [clangd] Use name of Macro to compute its SymbolID, NFC.
Summary:
We use the name from the IdentifierInfo of the Macro to compute its
SymbolID. It is better to just take the Name as a parameter to avoid
storing the IdentifierInfo whenever we need the SymbolID for the Macro.
Patch by UTKARSH SAXENA!
Reviewers: hokein
Reviewed By: hokein
Subscribers: ilya-biryukov, MaskRay, jkorous, arphaman, kadircet, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D69937
Added:
Modified:
clang-tools-extra/clangd/AST.cpp
clang-tools-extra/clangd/AST.h
clang-tools-extra/clangd/CodeComplete.cpp
clang-tools-extra/clangd/index/SymbolCollector.cpp
Removed:
################################################################################
diff --git a/clang-tools-extra/clangd/AST.cpp b/clang-tools-extra/clangd/AST.cpp
index 002f2ef08cc7..1958ebf80c4c 100644
--- a/clang-tools-extra/clangd/AST.cpp
+++ b/clang-tools-extra/clangd/AST.cpp
@@ -203,13 +203,13 @@ llvm::Optional<SymbolID> getSymbolID(const Decl *D) {
return SymbolID(USR);
}
-llvm::Optional<SymbolID> getSymbolID(const IdentifierInfo &II,
+llvm::Optional<SymbolID> getSymbolID(const llvm::StringRef MacroName,
const MacroInfo *MI,
const SourceManager &SM) {
if (MI == nullptr)
return None;
llvm::SmallString<128> USR;
- if (index::generateUSRForMacro(II.getName(), MI->getDefinitionLoc(), SM, USR))
+ if (index::generateUSRForMacro(MacroName, MI->getDefinitionLoc(), SM, USR))
return None;
return SymbolID(USR);
}
diff --git a/clang-tools-extra/clangd/AST.h b/clang-tools-extra/clangd/AST.h
index b05e0a224774..8f1abdd3297d 100644
--- a/clang-tools-extra/clangd/AST.h
+++ b/clang-tools-extra/clangd/AST.h
@@ -17,6 +17,7 @@
#include "clang/AST/Decl.h"
#include "clang/Basic/SourceLocation.h"
#include "clang/Lex/MacroInfo.h"
+#include "llvm/ADT/StringRef.h"
namespace clang {
class SourceManager;
@@ -69,7 +70,7 @@ llvm::Optional<SymbolID> getSymbolID(const Decl *D);
/// macro (e.g. a change in definition offset can result in a
diff erent USR). We
/// could change these semantics in the future by reimplementing this funcure
/// (e.g. avoid USR for macros).
-llvm::Optional<SymbolID> getSymbolID(const IdentifierInfo &II,
+llvm::Optional<SymbolID> getSymbolID(const llvm::StringRef MacroName,
const MacroInfo *MI,
const SourceManager &SM);
diff --git a/clang-tools-extra/clangd/CodeComplete.cpp b/clang-tools-extra/clangd/CodeComplete.cpp
index db9f9cc0519b..4ef9842a381c 100644
--- a/clang-tools-extra/clangd/CodeComplete.cpp
+++ b/clang-tools-extra/clangd/CodeComplete.cpp
@@ -492,7 +492,7 @@ llvm::Optional<SymbolID> getSymbolID(const CodeCompletionResult &R,
return clang::clangd::getSymbolID(R.Declaration);
}
case CodeCompletionResult::RK_Macro:
- return clang::clangd::getSymbolID(*R.Macro, R.MacroDefInfo, SM);
+ return clang::clangd::getSymbolID(R.Macro->getName(), R.MacroDefInfo, SM);
case CodeCompletionResult::RK_Keyword:
return None;
}
diff --git a/clang-tools-extra/clangd/index/SymbolCollector.cpp b/clang-tools-extra/clangd/index/SymbolCollector.cpp
index b0932dcf97ad..06fe854b2e0b 100644
--- a/clang-tools-extra/clangd/index/SymbolCollector.cpp
+++ b/clang-tools-extra/clangd/index/SymbolCollector.cpp
@@ -377,7 +377,7 @@ bool SymbolCollector::handleMacroOccurence(const IdentifierInfo *Name,
Roles & static_cast<unsigned>(index::SymbolRole::Definition)))
return true;
- auto ID = getSymbolID(*Name, MI, SM);
+ auto ID = getSymbolID(Name->getName(), MI, SM);
if (!ID)
return true;
@@ -473,14 +473,14 @@ void SymbolCollector::finish() {
// First, drop header guards. We can't identify these until EOF.
for (const IdentifierInfo *II : IndexedMacros) {
if (const auto *MI = PP->getMacroDefinition(II).getMacroInfo())
- if (auto ID = getSymbolID(*II, MI, PP->getSourceManager()))
+ if (auto ID = getSymbolID(II->getName(), MI, PP->getSourceManager()))
if (MI->isUsedForHeaderGuard())
Symbols.erase(*ID);
}
// Now increment refcounts.
for (const IdentifierInfo *II : ReferencedMacros) {
if (const auto *MI = PP->getMacroDefinition(II).getMacroInfo())
- if (auto ID = getSymbolID(*II, MI, PP->getSourceManager()))
+ if (auto ID = getSymbolID(II->getName(), MI, PP->getSourceManager()))
IncRef(*ID);
}
}
More information about the cfe-commits
mailing list