diff options
Diffstat (limited to 'contrib/llvm-project/clang/lib/ASTMatchers/ASTMatchersInternal.cpp')
-rw-r--r-- | contrib/llvm-project/clang/lib/ASTMatchers/ASTMatchersInternal.cpp | 72 |
1 files changed, 51 insertions, 21 deletions
diff --git a/contrib/llvm-project/clang/lib/ASTMatchers/ASTMatchersInternal.cpp b/contrib/llvm-project/clang/lib/ASTMatchers/ASTMatchersInternal.cpp index 169ce3b83980..bf87b1aa0992 100644 --- a/contrib/llvm-project/clang/lib/ASTMatchers/ASTMatchersInternal.cpp +++ b/contrib/llvm-project/clang/lib/ASTMatchers/ASTMatchersInternal.cpp @@ -22,7 +22,6 @@ #include "clang/Lex/Lexer.h" #include "llvm/ADT/ArrayRef.h" #include "llvm/ADT/IntrusiveRefCntPtr.h" -#include "llvm/ADT/None.h" #include "llvm/ADT/SmallString.h" #include "llvm/ADT/SmallVector.h" #include "llvm/ADT/StringRef.h" @@ -35,6 +34,7 @@ #include <algorithm> #include <cassert> #include <cstddef> +#include <optional> #include <string> #include <utility> #include <vector> @@ -87,7 +87,7 @@ bool matchesAnyBase(const CXXRecordDecl &Node, [Finder, Builder, &BaseSpecMatcher](const CXXBaseSpecifier *BaseSpec, CXXBasePath &IgnoredParam) { BoundNodesTreeBuilder Result(*Builder); - if (BaseSpecMatcher.matches(*BaseSpec, Finder, Builder)) { + if (BaseSpecMatcher.matches(*BaseSpec, Finder, &Result)) { *Builder = std::move(Result); return true; } @@ -140,7 +140,7 @@ public: return Result; } - llvm::Optional<clang::TraversalKind> TraversalKind() const override { + std::optional<clang::TraversalKind> TraversalKind() const override { return InnerMatcher->TraversalKind(); } @@ -176,7 +176,7 @@ public: return this->InnerMatcher->dynMatches(DynNode, Finder, Builder); } - llvm::Optional<clang::TraversalKind> TraversalKind() const override { + std::optional<clang::TraversalKind> TraversalKind() const override { return TK; } @@ -339,8 +339,9 @@ bool DynTypedMatcher::matchesNoKindCheck(const DynTypedNode &DynNode, return false; } -llvm::Optional<DynTypedMatcher> DynTypedMatcher::tryBind(StringRef ID) const { - if (!AllowBind) return llvm::None; +std::optional<DynTypedMatcher> DynTypedMatcher::tryBind(StringRef ID) const { + if (!AllowBind) + return std::nullopt; auto Result = *this; Result.Implementation = new IdDynMatcher(ID, std::move(Result.Implementation)); @@ -468,8 +469,8 @@ hasAnyOverloadedOperatorNameFunc(ArrayRef<const StringRef *> NameRefs) { } HasNameMatcher::HasNameMatcher(std::vector<std::string> N) - : UseUnqualifiedMatch(llvm::all_of( - N, [](StringRef Name) { return Name.find("::") == Name.npos; })), + : UseUnqualifiedMatch( + llvm::all_of(N, [](StringRef Name) { return !Name.contains("::"); })), Names(std::move(N)) { #ifndef NDEBUG for (StringRef Name : Names) @@ -479,11 +480,11 @@ HasNameMatcher::HasNameMatcher(std::vector<std::string> N) static bool consumeNameSuffix(StringRef &FullName, StringRef Suffix) { StringRef Name = FullName; - if (!Name.endswith(Suffix)) + if (!Name.ends_with(Suffix)) return false; Name = Name.drop_back(Suffix.size()); if (!Name.empty()) { - if (!Name.endswith("::")) + if (!Name.ends_with("::")) return false; Name = Name.drop_back(2); } @@ -529,7 +530,7 @@ public: PatternSet(ArrayRef<std::string> Names) { Patterns.reserve(Names.size()); for (StringRef Name : Names) - Patterns.push_back({Name, Name.startswith("::")}); + Patterns.push_back({Name, Name.starts_with("::")}); } /// Consumes the name suffix from each pattern in the set and removes the ones @@ -651,11 +652,11 @@ bool HasNameMatcher::matchesNodeFullSlow(const NamedDecl &Node) const { const StringRef FullName = OS.str(); for (const StringRef Pattern : Names) { - if (Pattern.startswith("::")) { + if (Pattern.starts_with("::")) { if (FullName == Pattern) return true; - } else if (FullName.endswith(Pattern) && - FullName.drop_back(Pattern.size()).endswith("::")) { + } else if (FullName.ends_with(Pattern) && + FullName.drop_back(Pattern.size()).ends_with("::")) { return true; } } @@ -685,7 +686,7 @@ static bool isTokenAtLoc(const SourceManager &SM, const LangOptions &LangOpts, return !Invalid && Text == TokenText; } -llvm::Optional<SourceLocation> +std::optional<SourceLocation> getExpansionLocOfMacro(StringRef MacroName, SourceLocation Loc, const ASTContext &Context) { auto &SM = Context.getSourceManager(); @@ -696,14 +697,14 @@ getExpansionLocOfMacro(StringRef MacroName, SourceLocation Loc, if (Expansion.isMacroArgExpansion()) // Check macro argument for an expansion of the given macro. For example, // `F(G(3))`, where `MacroName` is `G`. - if (llvm::Optional<SourceLocation> ArgLoc = getExpansionLocOfMacro( + if (std::optional<SourceLocation> ArgLoc = getExpansionLocOfMacro( MacroName, Expansion.getSpellingLoc(), Context)) return ArgLoc; Loc = Expansion.getExpansionLocStart(); if (isTokenAtLoc(SM, LangOpts, MacroName, Loc)) return Loc; } - return llvm::None; + return std::nullopt; } std::shared_ptr<llvm::Regex> createAndVerifyRegex(StringRef Regex, @@ -768,9 +769,23 @@ const internal::VariadicDynCastAllOfMatcher<Decl, TemplateTypeParmDecl> const internal::VariadicDynCastAllOfMatcher<Decl, TemplateTemplateParmDecl> templateTemplateParmDecl; +const internal::VariadicAllOfMatcher<LambdaCapture> lambdaCapture; const internal::VariadicAllOfMatcher<QualType> qualType; const internal::VariadicAllOfMatcher<Type> type; const internal::VariadicAllOfMatcher<TypeLoc> typeLoc; + +const internal::VariadicDynCastAllOfMatcher<TypeLoc, QualifiedTypeLoc> + qualifiedTypeLoc; +const internal::VariadicDynCastAllOfMatcher<TypeLoc, PointerTypeLoc> + pointerTypeLoc; +const internal::VariadicDynCastAllOfMatcher<TypeLoc, ReferenceTypeLoc> + referenceTypeLoc; +const internal::VariadicDynCastAllOfMatcher<TypeLoc, + TemplateSpecializationTypeLoc> + templateSpecializationTypeLoc; +const internal::VariadicDynCastAllOfMatcher<TypeLoc, ElaboratedTypeLoc> + elaboratedTypeLoc; + const internal::VariadicDynCastAllOfMatcher<Stmt, UnaryExprOrTypeTraitExpr> unaryExprOrTypeTraitExpr; const internal::VariadicDynCastAllOfMatcher<Decl, ValueDecl> valueDecl; @@ -785,6 +800,7 @@ const internal::VariadicDynCastAllOfMatcher<Decl, TagDecl> tagDecl; const internal::VariadicDynCastAllOfMatcher<Decl, CXXMethodDecl> cxxMethodDecl; const internal::VariadicDynCastAllOfMatcher<Decl, CXXConversionDecl> cxxConversionDecl; +const internal::VariadicDynCastAllOfMatcher<Decl, ConceptDecl> conceptDecl; const internal::VariadicDynCastAllOfMatcher<Decl, VarDecl> varDecl; const internal::VariadicDynCastAllOfMatcher<Decl, FieldDecl> fieldDecl; const internal::VariadicDynCastAllOfMatcher<Decl, IndirectFieldDecl> @@ -867,12 +883,17 @@ const internal::VariadicDynCastAllOfMatcher<Stmt, CXXNoexceptExpr> cxxNoexceptExpr; const internal::VariadicDynCastAllOfMatcher<Stmt, ArraySubscriptExpr> arraySubscriptExpr; +const internal::VariadicDynCastAllOfMatcher<Stmt, ArrayInitIndexExpr> + arrayInitIndexExpr; +const internal::VariadicDynCastAllOfMatcher<Stmt, ArrayInitLoopExpr> + arrayInitLoopExpr; const internal::VariadicDynCastAllOfMatcher<Stmt, CXXDefaultArgExpr> cxxDefaultArgExpr; const internal::VariadicDynCastAllOfMatcher<Stmt, CXXOperatorCallExpr> cxxOperatorCallExpr; const internal::VariadicDynCastAllOfMatcher<Stmt, CXXRewrittenBinaryOperator> cxxRewrittenBinaryOperator; +const internal::VariadicDynCastAllOfMatcher<Stmt, CXXFoldExpr> cxxFoldExpr; const internal::VariadicDynCastAllOfMatcher<Stmt, Expr> expr; const internal::VariadicDynCastAllOfMatcher<Stmt, DeclRefExpr> declRefExpr; const internal::VariadicDynCastAllOfMatcher<Stmt, ObjCIvarRefExpr> objcIvarRefExpr; @@ -895,6 +916,8 @@ const internal::VariadicDynCastAllOfMatcher<Stmt, SwitchCase> switchCase; const internal::VariadicDynCastAllOfMatcher<Stmt, CaseStmt> caseStmt; const internal::VariadicDynCastAllOfMatcher<Stmt, DefaultStmt> defaultStmt; const internal::VariadicDynCastAllOfMatcher<Stmt, CompoundStmt> compoundStmt; +const internal::VariadicDynCastAllOfMatcher<Stmt, CoroutineBodyStmt> + coroutineBodyStmt; const internal::VariadicDynCastAllOfMatcher<Stmt, CXXCatchStmt> cxxCatchStmt; const internal::VariadicDynCastAllOfMatcher<Stmt, CXXTryStmt> cxxTryStmt; const internal::VariadicDynCastAllOfMatcher<Stmt, CXXThrowExpr> cxxThrowExpr; @@ -903,6 +926,7 @@ const internal::VariadicDynCastAllOfMatcher<Stmt, AsmStmt> asmStmt; const internal::VariadicDynCastAllOfMatcher<Stmt, CXXBoolLiteralExpr> cxxBoolLiteral; const internal::VariadicDynCastAllOfMatcher<Stmt, StringLiteral> stringLiteral; +const internal::VariadicDynCastAllOfMatcher<Stmt, ObjCStringLiteral> objcStringLiteral; const internal::VariadicDynCastAllOfMatcher<Stmt, CharacterLiteral> characterLiteral; const internal::VariadicDynCastAllOfMatcher<Stmt, IntegerLiteral> @@ -918,6 +942,8 @@ const internal::VariadicDynCastAllOfMatcher<Stmt, CompoundLiteralExpr> const internal::VariadicDynCastAllOfMatcher<Stmt, CXXNullPtrLiteralExpr> cxxNullPtrLiteralExpr; const internal::VariadicDynCastAllOfMatcher<Stmt, ChooseExpr> chooseExpr; +const internal::VariadicDynCastAllOfMatcher<Stmt, ConvertVectorExpr> + convertVectorExpr; const internal::VariadicDynCastAllOfMatcher<Stmt, CoawaitExpr> coawaitExpr; const internal::VariadicDynCastAllOfMatcher<Stmt, DependentCoawaitExpr> @@ -1000,19 +1026,20 @@ const internal::ArgumentAdaptingMatcherFunc<internal::ForEachDescendantMatcher> forEachDescendant = {}; const internal::ArgumentAdaptingMatcherFunc< internal::HasParentMatcher, - internal::TypeList<Decl, NestedNameSpecifierLoc, Stmt, TypeLoc>, - internal::TypeList<Decl, NestedNameSpecifierLoc, Stmt, TypeLoc>> + internal::TypeList<Decl, NestedNameSpecifierLoc, Stmt, TypeLoc, Attr>, + internal::TypeList<Decl, NestedNameSpecifierLoc, Stmt, TypeLoc, Attr>> hasParent = {}; const internal::ArgumentAdaptingMatcherFunc< internal::HasAncestorMatcher, - internal::TypeList<Decl, NestedNameSpecifierLoc, Stmt, TypeLoc>, - internal::TypeList<Decl, NestedNameSpecifierLoc, Stmt, TypeLoc>> + internal::TypeList<Decl, NestedNameSpecifierLoc, Stmt, TypeLoc, Attr>, + internal::TypeList<Decl, NestedNameSpecifierLoc, Stmt, TypeLoc, Attr>> hasAncestor = {}; const internal::VariadicOperatorMatcherFunc<1, 1> unless = { internal::DynTypedMatcher::VO_UnaryNot}; const internal::VariadicAllOfMatcher<NestedNameSpecifier> nestedNameSpecifier; const internal::VariadicAllOfMatcher<NestedNameSpecifierLoc> nestedNameSpecifierLoc; +const internal::VariadicAllOfMatcher<Attr> attr; const internal::VariadicDynCastAllOfMatcher<Stmt, CUDAKernelCallExpr> cudaKernelCallExpr; const AstTypeMatcher<BuiltinType> builtinType; @@ -1022,6 +1049,7 @@ const AstTypeMatcher<ConstantArrayType> constantArrayType; const AstTypeMatcher<DeducedTemplateSpecializationType> deducedTemplateSpecializationType; const AstTypeMatcher<DependentSizedArrayType> dependentSizedArrayType; +const AstTypeMatcher<DependentSizedExtVectorType> dependentSizedExtVectorType; const AstTypeMatcher<IncompleteArrayType> incompleteArrayType; const AstTypeMatcher<VariableArrayType> variableArrayType; const AstTypeMatcher<AtomicType> atomicType; @@ -1031,6 +1059,7 @@ const AstTypeMatcher<FunctionType> functionType; const AstTypeMatcher<FunctionProtoType> functionProtoType; const AstTypeMatcher<ParenType> parenType; const AstTypeMatcher<BlockPointerType> blockPointerType; +const AstTypeMatcher<MacroQualifiedType> macroQualifiedType; const AstTypeMatcher<MemberPointerType> memberPointerType; const AstTypeMatcher<PointerType> pointerType; const AstTypeMatcher<ObjCObjectPointerType> objcObjectPointerType; @@ -1044,6 +1073,7 @@ const AstTypeMatcher<UnaryTransformType> unaryTransformType; const AstTypeMatcher<RecordType> recordType; const AstTypeMatcher<TagType> tagType; const AstTypeMatcher<ElaboratedType> elaboratedType; +const AstTypeMatcher<UsingType> usingType; const AstTypeMatcher<SubstTemplateTypeParmType> substTemplateTypeParmType; const AstTypeMatcher<TemplateTypeParmType> templateTypeParmType; const AstTypeMatcher<InjectedClassNameType> injectedClassNameType; |