Martin Bohme
565bdd9fed
[ASTMatchers] Add templateTypeParmDecl() to Registry.cpp
...
Summary:
This appears to have been forgotten when templateTypeParmDecl() was initially
added.
Reviewers: alexfh, aaron.ballman
Subscribers: aaron.ballman, klimek, aemerson, rengolin, samparker, cfe-commits
Differential Revision: https://reviews.llvm.org/D23448
llvm-svn: 278507
2016-08-12 13:51:00 +00:00
Martin Bohme
8cef2c2f2d
[ASTMatchers] Add matchers canReferToDecl() and hasUnderlyingDecl()
...
Summary: Required for D22220
Reviewers: sbenza, klimek, aaron.ballman, alexfh
Subscribers: alexfh, klimek, cfe-commits
Differential Revision: https://reviews.llvm.org/D23004
llvm-svn: 278123
2016-08-09 15:07:52 +00:00
Haojian Wu
b33b02e9f0
[ASTMatcher] Add templateName matcher.
...
Reviewers: klimek
Subscribers: klimek, cfe-commits
Differential Revision: https://reviews.llvm.org/D22963
llvm-svn: 277155
2016-07-29 15:45:11 +00:00
Clement Courbet
425175934e
[ASTMatchers] isSignedInteger() and isUnsignedInteger()
...
Complementary to isInteger(), these match signed and unsigned integers
respectively.
Review: http://reviews.llvm.org/D21989
llvm-svn: 275157
2016-07-12 06:36:00 +00:00
Aaron Ballman
5c574341f5
Add AST matchers for handling bit-fields and narrowing based on their width.
...
llvm-svn: 274652
2016-07-06 18:25:16 +00:00
Haojian Wu
e775de8171
[ASTMatcher] Add a node matcher for EnumType.
...
Reviewers: aaron.ballman
Subscribers: cfe-commits, klimek
Differential Revision: http://reviews.llvm.org/D21860
llvm-svn: 274217
2016-06-30 07:50:01 +00:00
Samuel Benzaquen
49385c78bc
[ASTMatchers] Add isLambda() matcher.
...
llvm-svn: 274015
2016-06-28 14:08:56 +00:00
Cong Liu
8a02efb143
IgnoringImplicit matcher.
...
llvm-svn: 273659
2016-06-24 09:38:03 +00:00
Aaron Ballman
ba8dbbe86f
Adding an AST matcher to ignore parenthesis in *types* (rather than expressions). This is required for traversing certain types (like function pointer types).
...
llvm-svn: 271927
2016-06-06 18:52:17 +00:00
Haojian Wu
7751c92582
[ASTMatcher] Add a node matcher for UnresolvedLookupExpr.
...
Reviewers: alexfh, aaron.ballman
Subscribers: aaron.ballman, klimek, cfe-commits
Differential Revision: http://reviews.llvm.org/D20360
llvm-svn: 269916
2016-05-18 12:53:59 +00:00
Aaron Ballman
abdbbbc51f
Add the hasDynamicExceptionSpec() AST matcher to match function declarations that have a dynamic exception specification.
...
Patch by Don Hinton.
llvm-svn: 269662
2016-05-16 16:49:01 +00:00
Etienne Bergeron
75e52725e4
Add an AST matcher for CastExpr kind
...
Summary:
This AST matcher will match a given CastExpr kind.
It's an narrowing matcher on CastExpr.
Reviewers: klimek, alexfh, sbenza, aaron.ballman
Subscribers: Prazek, jroelofs, aaron.ballman, klimek, cfe-commits
Differential Revision: http://reviews.llvm.org/D19871
llvm-svn: 269460
2016-05-13 19:36:55 +00:00
Gabor Horvath
1b3f8db8b6
[ASTMatchers] New matcher forFunction
...
Summary: Matcher proposed in the review of checker misc-assign-operator (name pending). Its goal is to find the direct enclosing function declaration of a statement and run the inner matcher on it. Two version is attached in this patch (thus it will not compile), to be decided which approach to take. The second one always chooses one single parent while the first one does a depth-first search upwards (thus a height-first search) and returns the first positive match of the inner matcher (thus it always returns zero or one matches, not more). Further questions: is it enough to implement it in-place, or ASTMatchersInternals or maybe ASTMatchFinder should be involved?
Reviewers: sbenza
Subscribers: aaron.ballman, klimek, o.gyorgy, xazax.hun, cfe-commits
Differential Revision: http://reviews.llvm.org/D19357
llvm-svn: 268490
2016-05-04 11:59:39 +00:00
Aaron Ballman
66eb58a756
Add typedefNameDecl() and typeAliasDecl() to the AST matchers; improves hasType() to match on TypedefNameDecl nodes.
...
Patch by Clement Courbet.
llvm-svn: 266331
2016-04-14 16:05:45 +00:00
Alexander Kornienko
976921d4b4
[ASTMatchers] New matcher hasReturnValue added
...
Summary: A checker (will be uploaded after this patch) needs to check implicit casts. Existing generic matcher "has" ignores implicit casts and parenthesized expressions and no specific matcher for matching return value expression preexisted. The patch adds such a matcher (hasReturnValue).
Reviewers: klimek, sbenza
Subscribers: xazax.hun, klimek, cfe-commits
Patch by Ádám Balogh!
Differential Revision: http://reviews.llvm.org/D17986
llvm-svn: 264037
2016-03-22 11:03:03 +00:00
Aaron Ballman
a35b8fcef8
Adding new AST matchers for: addrLabelExpr, atomicExpr, binaryConditionalOperator, designatedInitExpr, designatorCountIs, hasSyntacticForm, implicitValueInitExpr, labelDecl, opaqueValueExpr, parenListExpr, predefinedExpr, requiresZeroInitialization, and stmtExpr.
...
Patch by Aleksei Sidorin.
llvm-svn: 263027
2016-03-09 17:11:51 +00:00
Samuel Benzaquen
922bef4f38
[ASTMatchers] Add matcher hasAnyName.
...
Summary: Add matcher hasAnyName as an optimization over anyOf(hasName(),...)
Reviewers: alexfh
Subscribers: klimek, cfe-commits
Differential Revision: http://reviews.llvm.org/D17163
llvm-svn: 261574
2016-02-22 21:13:02 +00:00
Aaron Ballman
eb7e5d9074
Add an AST matcher for real floating-point types. e.g., float, double, long double, but not complex.
...
llvm-svn: 261221
2016-02-18 16:36:01 +00:00
Aaron Ballman
232e63d00b
Add a nullPointerConstant() AST matcher to handle variations of null pointer constants in one matcher.
...
llvm-svn: 261008
2016-02-16 21:02:23 +00:00
Felix Berger
cc9df3b9cc
Add isAnyPointer() matchers. Register missing matchers.
...
Summary:
The isAnyPointer() matcher is useful for http://reviews.llvm.org/D15623 .
Reviewers: alexfh, klimek
Subscribers: cfe-commits
Differential Revision: http://reviews.llvm.org/D15819
llvm-svn: 260872
2016-02-15 04:00:39 +00:00
Aaron Ballman
880a65bba5
Registering the gnuNullExpr AST matcher as a dynamic matcher so that it is available from clang-query.
...
llvm-svn: 260222
2016-02-09 14:04:49 +00:00
Aaron Ballman
7e7b7b2def
Reapply r259210 with a fix for RegistryTest.cpp.
...
Patch by Richard Thomson.
llvm-svn: 259359
2016-02-01 14:11:47 +00:00
Hans Wennborg
2b79910d8b
Revert r259210 "Extend hasType narrowing matcher for TypedefDecls, add functionProtoType matcher for FunctionProtoType nodes, extend parameterCountIs to FunctionProtoType nodes."
...
It didn't pass check-clang.
llvm-svn: 259218
2016-01-29 18:24:34 +00:00
Aaron Ballman
fb9d0e354d
Extend hasType narrowing matcher for TypedefDecls, add functionProtoType matcher for FunctionProtoType nodes, extend parameterCountIs to FunctionProtoType nodes.
...
Patch by Richard Thomson
llvm-svn: 259210
2016-01-29 17:03:11 +00:00
Aaron Ballman
31bde8762e
Add am AST matcher for isMoveAssignmentOperator.
...
Patch by Jonathan Coe.
llvm-svn: 258573
2016-01-22 22:37:09 +00:00
Nico Weber
a415a1d0d7
Add an isVirtualAsWritten AST matcher.
...
http://reviews.llvm.org/D16394
llvm-svn: 258415
2016-01-21 17:56:24 +00:00
Aaron Ballman
433485f003
Register the isCopyAssignmentOperator AST matcher so that it can be used dynamically.
...
Path by Jonathan Coe.
llvm-svn: 258341
2016-01-20 20:47:58 +00:00
Aaron Ballman
e8295d7980
Add AST matcher for paren expressions.
...
Patch by Adrian Zgorzałek.
llvm-svn: 258321
2016-01-20 16:17:39 +00:00
Aaron Ballman
eb85b04c7e
Add an AST matcher for checking whether a function is defaulted.
...
Patch by Jonathan Coe.
llvm-svn: 258072
2016-01-18 20:37:44 +00:00
Manuel Klimek
ce28f9ebd3
Add forEachArgumentWithParam AST matcher.
...
The new matcher allows users to provide a matcher for both the argument
of a CallExpr/CxxConstructExpr a well as the ParmVarDecl of the
argument.
Patch by Felix Berger.
Differential Revision: http://reviews.llvm.org/D13845
llvm-svn: 258042
2016-01-18 11:20:09 +00:00
Samuel Benzaquen
bd3232af03
[ASTMatchers] Add booleanType() matcher.
...
llvm-svn: 256278
2015-12-22 20:06:40 +00:00
Aaron Ballman
a60bcdab92
Add a narrowing AST matcher that matches on a FunctionDecl with a non-throwing exception specification.
...
llvm-svn: 254516
2015-12-02 15:23:59 +00:00
Aaron Ballman
6290fc9154
Add an AST matcher for narrowing when a type is volatile-qualified.
...
llvm-svn: 253882
2015-11-23 17:09:24 +00:00
Aaron Ballman
8e7f00b0eb
Re-committing r253473 after hopefully fixing the bot breakage. There was a copy-pasta issue that my local testing did not catch.
...
llvm-svn: 253481
2015-11-18 17:56:55 +00:00
Aaron Ballman
81d17f2f7e
Reverting r253473 while I investigate build bot failures.
...
llvm-svn: 253475
2015-11-18 17:16:01 +00:00
Aaron Ballman
34e0bd40e4
Adding AST matchers for VarDecl storage durations. Can now determine whether a VarDecl has automatic, static, or thread storage duration. This also updates the documentation for matchers, which appear to be missing some previous additions.
...
llvm-svn: 253473
2015-11-18 17:05:39 +00:00
Matthias Gehre
2cf7e803bb
Add decayedType and hasDecayedType AST matchers
...
Summary: Add decayedType and hasDecayedType AST matchers
Reviewers: klimek
Subscribers: klimek, cfe-commits
Differential Revision: http://reviews.llvm.org/D13639
llvm-svn: 250114
2015-10-12 21:46:07 +00:00
Aaron Ballman
3fd6c110be
Adding a narrowing AST matcher for FunctionDecl::isVariadic(), plus tests and documentation.
...
llvm-svn: 249321
2015-10-05 14:41:27 +00:00
Craig Topper
e335f25949
SourceRanges are small and trivially copyable, don't them by reference.
...
llvm-svn: 249259
2015-10-04 04:53:55 +00:00
Aaron Ballman
512fb64765
Rename AST node matchers to match the AST node names directly. Part of this rename also splits recordDecl() (which used to match CXXRecordDecl) into recordDecl() (that matches RecordDecl) and cxxRecordDecl (that matches CXXRecordDecl). Also adds isStruct(), isUnion(), and isClass() narrowing matchers for RecordDecl objects.
...
llvm-svn: 247885
2015-09-17 13:30:52 +00:00
Aaron Ballman
b85be665b0
Fixed HasDeclarationMatcher to properly convert all types into decls where possible. Added objcObjectPointerType(), objcInterfaceDecl(), templateTypeParmType(), injectedClassNameType(), and unresolvedUsingTypenameDecl(). Updated documentation for pointerType() to call out that it does not match ObjCObjectPointerType types. Changed pointsTo() to handle ObjCObjectPointerType as well as PointerType.
...
While this may seem like a lot of unrelated changes, they all relate back to fixing HasDeclarationMatcher.
This now allows us to write a matcher like:
varDecl(hasType(namedDecl(hasName("Foo"))))
that matches code using typedefs, objc interfaces, template type parameters, injected class names, or unresolved using typenames.
llvm-svn: 247404
2015-09-11 11:51:24 +00:00
Aaron Ballman
6c79f352b8
Adding an AST matcher for namespaceAliasDecl.
...
llvm-svn: 246322
2015-08-28 19:39:21 +00:00
Samuel Benzaquen
f8ec454f7d
[ASTMatchers] Add type matcher for SubstTemplateTypeParmType.
...
llvm-svn: 246037
2015-08-26 16:15:59 +00:00
Aaron Ballman
11825f2592
Add AST narrowing matchers for inline and anonymous namespaces. Since the inline keyword can also be specified on a FunctionDecl, this is a polymorphic matcher.
...
llvm-svn: 245337
2015-08-18 19:55:20 +00:00
Aaron Ballman
7596bcf726
Switching from an explicit loop to DeleteContainerSeconds; NFC.
...
llvm-svn: 244802
2015-08-12 20:05:18 +00:00
Aaron Ballman
001f168e94
RangRangify some more for loops; NFC.
...
llvm-svn: 244792
2015-08-12 19:00:39 +00:00
Aaron Ballman
6f6d0b6c5a
Add a polymorphic AST matcher for testing whether a constructor or a conversion declaration is marked as explicit or not.
...
llvm-svn: 244666
2015-08-11 21:09:52 +00:00
Aaron Ballman
ed455d4062
Add an AST matcher to match member intializers of a CXXCtorInitializer.
...
llvm-svn: 244662
2015-08-11 20:42:00 +00:00
Aaron Ballman
1ca258e6a8
Add AST matchers for narrowing constructors that are default, copy, or move constructors, as well as functionality to determine whether a ctor initializer is a base initializer.
...
llvm-svn: 244036
2015-08-05 12:11:30 +00:00
Aaron Ballman
41143bb573
Add an AST matcher, isFinal(), for testing whether a method or class declaration are marked final.
...
llvm-svn: 243107
2015-07-24 12:35:41 +00:00