[PATCH] D97615: [clangd] Include macro expansions in documentSymbol hierarchy
Kadir Cetinkaya via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Mon Mar 1 01:41:44 PST 2021
kadircet added a comment.
thanks, LGTM. with a couple nits and asking for some extra clarifications :)
================
Comment at: clang-tools-extra/clangd/FindSymbols.cpp:283
+ public:
+ SymBuilder() = default;
+
----------------
nit: drop this one?
================
Comment at: clang-tools-extra/clangd/FindSymbols.cpp:290
+ // This can fix some edge-cases in the AST, but is vital for macros.
+ // (We determine macro hierarchy using primary location only, and in
+ // general macros need not nest with AST nodes).
----------------
this comment feels a little out-of-place, maybe move it next to `possibleMacroContainer` call?
================
Comment at: clang-tools-extra/clangd/FindSymbols.cpp:327
+ Sym.selectionRange = halfOpenToRange(SM, Tok.range(SM).toCharRange(SM));
+ if (Exp)
+ Sym.range = halfOpenToRange(SM, CharSourceRange::getCharRange(
----------------
nit:
```
Sym.range = Sym.selectionRange = halfOpenToRange(SM, Tok.range(SM).toCharRange(SM));
if (Exp) {
Sym.range = .... // cover Exp;
// Populate Sym.detail.
}
```
================
Comment at: clang-tools-extra/clangd/FindSymbols.cpp:402
+
+ // Determines where a decl should appear in the DocumentSymbol hierarchy.
+ //
----------------
also mention that `there's at most one node for each macro invocation in the document symbol hierarchy, even if it yields multiple decls`
================
Comment at: clang-tools-extra/clangd/FindSymbols.cpp:424
+ Loc = SM.getImmediateMacroCallerLoc(Loc)) {
+ FileID MacroBody;
+ if (SM.isMacroArgExpansion(Loc)) {
----------------
nit:
```
SourceLocation ExpansionLoc = Loc;
// If ExpansionLoc is inside a macro argument, use the outer macro invocation instead. e.g:
// #define ID(X) X
// ID(int y); // chose location of ID, not X
if(SM.isMacroArgExpansion(ExpansionLoc))
ExpansionLoc = SM.getImmediateExpansionRange(Loc).getBegin();
FileID MacroBody = SM.getFileID(ExpansionLoc);
```
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D97615/new/
https://reviews.llvm.org/D97615
More information about the cfe-commits
mailing list