[PATCH] D138134: [include-cleaner] Defer decl->stdlib conversion into decl->location conversion
Kadir Cetinkaya via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed Nov 16 06:59:28 PST 2022
kadircet created this revision.
kadircet added reviewers: hokein, sammccall.
Herald added a project: All.
kadircet requested review of this revision.
Herald added a project: clang-tools-extra.
Herald added a subscriber: cfe-commits.
We preserve decls for stdlib symbols after this patch in symbol. That
way we have a more unified view of stdlib and regular decls and can provide
reacher information in applications.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D138134
Files:
clang-tools-extra/include-cleaner/include/clang-include-cleaner/Types.h
clang-tools-extra/include-cleaner/lib/Analysis.cpp
clang-tools-extra/include-cleaner/lib/Types.cpp
Index: clang-tools-extra/include-cleaner/lib/Types.cpp
===================================================================
--- clang-tools-extra/include-cleaner/lib/Types.cpp
+++ clang-tools-extra/include-cleaner/lib/Types.cpp
@@ -22,8 +22,6 @@
return OS << S.declaration().getDeclKindName();
case Symbol::Macro:
return OS << S.macro().Name;
- case Symbol::Standard:
- return OS << S.standard().scope() << S.standard().name();
}
llvm_unreachable("Unhandled Symbol kind");
}
Index: clang-tools-extra/include-cleaner/lib/Analysis.cpp
===================================================================
--- clang-tools-extra/include-cleaner/lib/Analysis.cpp
+++ clang-tools-extra/include-cleaner/lib/Analysis.cpp
@@ -25,13 +25,14 @@
for (auto *Root : ASTRoots) {
auto &SM = Root->getASTContext().getSourceManager();
walkAST(*Root, [&](SourceLocation Loc, NamedDecl &ND, RefType RT) {
+ SymbolReference SymRef{Loc, ND, RT};
if (auto SS = Recognizer(&ND)) {
// FIXME: Also report forward decls from main-file, so that the caller
// can decide to insert/ignore a header.
- return CB({Loc, Symbol(*SS), RT}, findHeaders(*SS, SM, PI));
+ return CB(SymRef, findHeaders(*SS, SM, PI));
}
// FIXME: Extract locations from redecls.
- return CB({Loc, Symbol(ND), RT}, findHeaders(ND.getLocation(), SM, PI));
+ return CB(SymRef, findHeaders(ND.getLocation(), SM, PI));
});
}
for (const SymbolReference &MacroRef : MacroRefs) {
Index: clang-tools-extra/include-cleaner/include/clang-include-cleaner/Types.h
===================================================================
--- clang-tools-extra/include-cleaner/include/clang-include-cleaner/Types.h
+++ clang-tools-extra/include-cleaner/include/clang-include-cleaner/Types.h
@@ -52,27 +52,21 @@
Declaration,
/// A preprocessor macro, as defined in a specific location.
Macro,
- /// A recognized symbol from the standard library, like std::string.
- Standard,
};
Symbol(const Decl &D) : Storage(&D) {}
Symbol(struct Macro M) : Storage(M) {}
- Symbol(tooling::stdlib::Symbol S) : Storage(S) {}
Kind kind() const { return static_cast<Kind>(Storage.index()); }
bool operator==(const Symbol &RHS) const { return Storage == RHS.Storage; }
const Decl &declaration() const { return *std::get<Declaration>(Storage); }
struct Macro macro() const { return std::get<Macro>(Storage); }
- tooling::stdlib::Symbol standard() const {
- return std::get<Standard>(Storage);
- }
private:
// FIXME: Add support for macros.
// Order must match Kind enum!
- std::variant<const Decl *, struct Macro, tooling::stdlib::Symbol> Storage;
+ std::variant<const Decl *, struct Macro> Storage;
};
llvm::raw_ostream &operator<<(llvm::raw_ostream &, const Symbol &);
@@ -122,9 +116,7 @@
tooling::stdlib::Header standard() const {
return std::get<Standard>(Storage);
}
- StringRef verbatim() const {
- return std::get<Verbatim>(Storage);
- }
+ StringRef verbatim() const { return std::get<Verbatim>(Storage); }
private:
// Order must match Kind enum!
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D138134.475819.patch
Type: text/x-patch
Size: 3161 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20221116/6fd15116/attachment.bin>
More information about the cfe-commits
mailing list