================
@@ -1336,6 +1336,45 @@ class MatchASTVisitor : public
RecursiveASTVisitor<MatchASTVisitor>,
return false;
}
+ bool isInSystemHeader(const SourceLocation &Loc) {
+ const SourceManager &SM = getASTContext().getSourceManager();
+ return SM.isInSystemHeader(Loc);
+ }
+
+ template <typename T> SourceLocation getNodeLocation(T const &Node) {
+ return Node.getBeginLoc();
+ }
+
+ SourceLocation getNodeLocation(QualType const &Node) { return {}; }
+
+ SourceLocation getNodeLocation(NestedNameSpecifier const &Node) { return {};
}
+
+ SourceLocation getNodeLocation(CXXCtorInitializer const &Node) {
+ return Node.getSourceLocation();
+ }
+
+ SourceLocation getNodeLocation(TemplateArgumentLoc const &Node) {
+ return Node.getLocation();
+ }
+
+ SourceLocation getNodeLocation(Attr const &Node) {
+ return Node.getLocation();
+ }
+
+ template <typename T>
+ auto shouldSkipNode(T const &Node)
+ -> std::enable_if_t<std::is_pointer_v<T>, bool> {
+ return (Node == nullptr) || shouldSkipNode(*Node);
+ }
+
+ template <typename T>
+ auto shouldSkipNode(T const &Node)
+ -> std::enable_if_t<!std::is_pointer_v<T>, bool> {
+ if (Options.IgnoreSystemHeaders && isInSystemHeader(getNodeLocation(Node)))
+ return true;
+ return false;
+ }
----------------
vbvictor wrote:
Could we use `if constexpr` and merge these 2 functions? IMO, it will be more
readable.
https://github.com/llvm/llvm-project/pull/151035
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits