Commit Graph

173 Commits

Author SHA1 Message Date
Shuai Wang 926e91b0e6 [ASTMatchers] Let isArrow also support UnresolvedMemberExpr, CXXDependentScopeMemberExpr
Reviewers: aaron.ballman

Subscribers: cfe-commits

Differential Revision: https://reviews.llvm.org/D52157

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@342407 91177308-0d34-0410-b5e6-96231b3b80d8
2018-09-17 18:48:43 +00:00
Jonas Toth 0a8a76da18 [ASTMatchers] add three matchers for dependent expressions
Summary:
The new matchers can be used to check if an expression is type-, value- or instantiation-dependent
in a templated context.
These matchers are used in a clang-tidy check and generally useful as the
problem of unresolved templates occurs more often in clang-tidy and they
provide an easy way to check for this issue.

Reviewers: aaron.ballman, alexfh, klimek

Reviewed By: aaron.ballman

Subscribers: cfe-commits

Differential Revision: https://reviews.llvm.org/D51880

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@341958 91177308-0d34-0410-b5e6-96231b3b80d8
2018-09-11 16:09:19 +00:00
Shuai Wang 43ee86bb6e [ASTMatchers] Let hasObjectExpression also support UnresolvedMemberExpr, CXXDependentScopeMemberExpr
Reviewers: aaron.ballman

Subscribers: cfe-commits

Differential Revision: https://reviews.llvm.org/D50617

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@340547 91177308-0d34-0410-b5e6-96231b3b80d8
2018-08-23 17:16:06 +00:00
Shuai Wang 9c1b31eade [ASTMatchers] Let hasAnyArgument also support CXXUnresolvedConstructExpr
Subscribers: cfe-commits

Differential Revision: https://reviews.llvm.org/D50605

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@339530 91177308-0d34-0410-b5e6-96231b3b80d8
2018-08-12 23:30:05 +00:00
Shuai Wang 341c84f772 [ASTMatchers] Add matchers unresolvedMemberExpr, cxxDependentScopeMemberExpr
Subscribers: cfe-commits

Differential Revision: https://reviews.llvm.org/D50606

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@339522 91177308-0d34-0410-b5e6-96231b3b80d8
2018-08-12 17:34:36 +00:00
George Karpenkov f0389c4d45 [ASTMatchers] Introduce a matcher for `ObjCIvarExpr`, support getting it's declaration.
ObjCIvarExpr is *not* a subclass of MemberExpr, and a separate matcher
is required to support it.
Adding a hasDeclaration support as well, as it's not very useful without
it.

Differential Revision: https://reviews.llvm.org/D49701

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@338137 91177308-0d34-0410-b5e6-96231b3b80d8
2018-07-27 17:26:11 +00:00
Jonas Toth 6d3287506d [ASTMatchers] fix the missing documentation for new decltypeType matcher
Summary: Regenerate the Matchers documentation, forgotten in the original patch.

Reviewers: alexfh, aaron.ballman

Reviewed By: aaron.ballman

Subscribers: cfe-commits

Differential Revision: https://reviews.llvm.org/D49850

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@338022 91177308-0d34-0410-b5e6-96231b3b80d8
2018-07-26 13:02:05 +00:00
George Karpenkov bcd3d176cb [ASTMatchers] Add an isMain() matcher
Differential Revision: https://reviews.llvm.org/D49615

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@337761 91177308-0d34-0410-b5e6-96231b3b80d8
2018-07-23 22:29:35 +00:00
George Karpenkov 3787b2b6af [ASTMatchers] [NFC] Regenerate HTML docs.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@337760 91177308-0d34-0410-b5e6-96231b3b80d8
2018-07-23 22:29:10 +00:00
George Karpenkov a621a93add [ASTMatchers] Introduce Objective-C matchers `hasReceiver` and `isInstanceMessage` for ObjCMessageExpr
Differential Revision: https://reviews.llvm.org/D49333

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@337209 91177308-0d34-0410-b5e6-96231b3b80d8
2018-07-16 20:22:12 +00:00
George Karpenkov 2ffe81c7bf [ASTMatchers] A matcher for Objective-C @autoreleasepool
Differential Revision: https://reviews.llvm.org/D48910

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@336468 91177308-0d34-0410-b5e6-96231b3b80d8
2018-07-06 21:36:04 +00:00
George Karpenkov 9a64e8cc61 [ASTMatchers] Introduce a blockDecl matcher for matching block declarations
Blocks can be matched just as well as functions or Objective-C methods.

Differential Revision: https://reviews.llvm.org/D46980

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@332545 91177308-0d34-0410-b5e6-96231b3b80d8
2018-05-16 22:47:03 +00:00
Gabor Horvath 3c266eaeba [ASTMatchers] Overload isConstexpr for ifStmts
Differential Revision: https://reviews.llvm.org/D46233


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@331759 91177308-0d34-0410-b5e6-96231b3b80d8
2018-05-08 11:53:32 +00:00
Alexander Kornienko d00eb8a651 Regenerated AST Matchers doc.
Backported a minor fix to the comment in the header.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@331207 91177308-0d34-0410-b5e6-96231b3b80d8
2018-04-30 18:12:15 +00:00
Alexander Kornienko b8b9458165 Fix typos in clang
Found via codespell -q 3 -I ../clang-whitelist.txt
Where whitelist consists of:

  archtype
  cas
  classs
  checkk
  compres
  definit
  frome
  iff
  inteval
  ith
  lod
  methode
  nd
  optin
  ot
  pres
  statics
  te
  thru

Patch by luzpaz! (This is a subset of D44188 that applies cleanly with a few
files that have dubious fixes reverted.)

Differential revision: https://reviews.llvm.org/D44188

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@329399 91177308-0d34-0410-b5e6-96231b3b80d8
2018-04-06 15:14:32 +00:00
George Karpenkov 8e76adccd4 [ASTMatchers] Introduce a matcher for matching any given Objective-C selector
Incudes a tiny related refactoring.

Differential Revision: https://reviews.llvm.org/D44858

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@328747 91177308-0d34-0410-b5e6-96231b3b80d8
2018-03-29 00:51:12 +00:00
George Karpenkov 9741fa7361 [ASTMatchers] Extend hasParameter and hasAnyParameter matches to handle Objective-C methods
Differential Revision: https://reviews.llvm.org/D44707

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@328746 91177308-0d34-0410-b5e6-96231b3b80d8
2018-03-29 00:51:11 +00:00
Peter Szecsi d2f21a2bf5 [ASTMatchers] Add isAssignmentOperator matcher
Adding a matcher for BinaryOperator and cxxOperatorCallExpr to be able to
decide whether it is any kind of assignment operator or not. This would be
useful since allows us to easily detect assignments via matchers for static
analysis (Tidy, SA) purposes.

Differential Revision: https://reviews.llvm.org/D44893



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@328618 91177308-0d34-0410-b5e6-96231b3b80d8
2018-03-27 12:11:46 +00:00
Clement Courbet f8d8ed2b2b [ASTMatchers] Remove extra qualifier for consistency (LibASTMatchersReference.html)
+ Regenerate doc.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@328087 91177308-0d34-0410-b5e6-96231b3b80d8
2018-03-21 10:54:29 +00:00
Clement Courbet 2eb7a8389d [ASTMatchers] Regenerate doc.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@328086 91177308-0d34-0410-b5e6-96231b3b80d8
2018-03-21 10:48:00 +00:00
George Karpenkov e91c6a13f6 [ASTMatcher] Extend hasAnyArgument to ObjCMessageExpr
Currently hasArgument works with both ObjC messages and function calls,
but not hasAnyArgument.
This patch fixes that discrepancy, as it's often more convenient to use
hasAnyArgument.

On a more general note, it would be great to have a common superclass
for objc-call and function call, and a matcher matching that, but that's
probably a job for another commit.

Differential Revision: https://reviews.llvm.org/D44169

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@326865 91177308-0d34-0410-b5e6-96231b3b80d8
2018-03-07 02:32:44 +00:00
Eric Liu 1e53950cab [ASTMatchers] Regenerate documentation after r325678
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@325682 91177308-0d34-0410-b5e6-96231b3b80d8
2018-02-21 14:22:42 +00:00
Julie Hockett 00c472cb9e Add hasTrailingReturn AST matcher
Adds AST matcher for a FunctionDecl that has a trailing return type.

Differential Revision: https://reviews.llvm.org/D42273

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@323158 91177308-0d34-0410-b5e6-96231b3b80d8
2018-01-22 22:45:23 +00:00
Fangrui Song 36e16a4009 [ASTMatchers] [NFC] Fix code examples
Subscribers: klimek, cfe-commits

Differential Revision: https://reviews.llvm.org/D42213

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@323157 91177308-0d34-0410-b5e6-96231b3b80d8
2018-01-22 22:34:15 +00:00
Haojian Wu a842b5f965 [ASTMatcher] Add isScoped matcher for enumDecl.
Summary:

Reviewers: bkramer, aaron.ballman

Subscribers: aaron.ballman, cfe-commits, klimek

Differential Revision: https://reviews.llvm.org/D42185

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@322826 91177308-0d34-0410-b5e6-96231b3b80d8
2018-01-18 09:47:57 +00:00
Roman Lebedev 3d90a2c568 [ASTMatchers] Add isNoReturn() match narrower for FunctionDeclarations
Reviewers: aaron.ballman

Reviewed By: aaron.ballman

Subscribers: dblaikie, klimek, cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D41455

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@322746 91177308-0d34-0410-b5e6-96231b3b80d8
2018-01-17 19:40:55 +00:00
Benjamin Kramer 584c883bb0 Update dump_ast_matchers for many recent changes.
The html file hasn't been updated in a long time so there are quite a
few changes in there. No matchers were removed though.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@322687 91177308-0d34-0410-b5e6-96231b3b80d8
2018-01-17 16:50:14 +00:00
Aaron Ballman 709440ae21 Add the hasDefinition() AST matcher to match class declarations that also have a definition.
Patch by Julie Hockett.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@319360 91177308-0d34-0410-b5e6-96231b3b80d8
2017-11-29 21:21:51 +00:00
Adam Balogh be065bce29 [ASTMatchers] Matchers for new[] operators
Two new matchers for `CXXNewExpr` are added which may be useful e.g. in
`clang-tidy` checkers. One of them is `isArray` which matches `new[]` but not
plain `new`. The other one, `hasArraySize` matches `new[]` for a given size.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@318909 91177308-0d34-0410-b5e6-96231b3b80d8
2017-11-23 12:43:20 +00:00
Aaron Ballman 8f491b9cec Add an AST matcher for hasDefaultArgument() to match on parameter declarations that have a default value.
Patch by Julie Hockett.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@318794 91177308-0d34-0410-b5e6-96231b3b80d8
2017-11-21 19:22:34 +00:00
Dave Lee 56cc8f8880 Make isDefinition matcher support ObjCMethodDecl
Summary:
Allow the `isDefinition()` matcher to apply to `ObjCMethodDecl` nodes, in
addition to those it already supports. For whatever reason, `ObjCMethodDecl`
does not inherit from `FunctionDecl` and so this is specialization is necessary.

Reviewers: aaron.ballman, malcolm.parsons, alexshap

Reviewed By: aaron.ballman

Subscribers: cfe-commits, klimek

Differential Revision: https://reviews.llvm.org/D39948

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@318152 91177308-0d34-0410-b5e6-96231b3b80d8
2017-11-14 14:17:26 +00:00
Dave Lee 3e80fc7738 Fix AST matcher documentation typo
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@317993 91177308-0d34-0410-b5e6-96231b3b80d8
2017-11-11 23:53:27 +00:00
Dave Lee 831957f6bf Add ObjC exception statement AST matchers
Summary: Add AST matchers for Objective-C @throw, @try, @catch and @finally.

Reviewers: aaron.ballman, malcolm.parsons, alexshap, compnerd

Reviewed By: aaron.ballman

Subscribers: cfe-commits, klimek

Differential Revision: https://reviews.llvm.org/D39940

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@317992 91177308-0d34-0410-b5e6-96231b3b80d8
2017-11-11 22:46:15 +00:00
Dave Lee c9d23a99f0 Add objcCategoryImplDecl matcher
Summary:
Add `objcCategoryImplDecl` which matches ObjC category definitions
(`@implementation`). This matcher complements `objcCategoryDecl` (`@interface`)
which was added in D30854.

Reviewers: aaron.ballman, malcolm.parsons, alexshap

Reviewed By: aaron.ballman

Subscribers: klimek, cfe-commits

Differential Revision: https://reviews.llvm.org/D39293

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@316670 91177308-0d34-0410-b5e6-96231b3b80d8
2017-10-26 15:53:37 +00:00
Alexander Shaposhnikov b20ea24998 [clang] Fix isExternC matcher docs
The wording in the documentation for the matcher isExternC 
appears to be misleading since this matcher 
is applicable to functions and variables as well. 
This diff changes the comment and regenerates the html file.

Differential revision: https://reviews.llvm.org/D38151


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@314022 91177308-0d34-0410-b5e6-96231b3b80d8
2017-09-22 19:29:38 +00:00
Dave Lee 1b5154c90e Add objcImplementationDecl matcher
Summary:
Add the `objcImplementationDecl` matcher. See related: D30854

Tested with:

```
./tools/clang/unittests/ASTMatchers/ASTMatchersTests
```

Reviewers: aaron.ballman, compnerd, alexshap

Reviewed By: aaron.ballman

Subscribers: klimek, cfe-commits

Differential Revision: https://reviews.llvm.org/D37643

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@312889 91177308-0d34-0410-b5e6-96231b3b80d8
2017-09-10 21:00:15 +00:00
Manuel Klimek 81937d827d Unify and simplify the behavior of the hasDeclaration matcher.
Originally, we weren't able to match on Type nodes themselves (only QualType),
so the hasDeclaration matcher was initially written to give what we thought are
reasonable results for QualType matches.

When we chagned the matchers to allow matching on Type nodes, it turned out
that the hasDeclaration matcher was by chance written templated enough to now
allow hasDeclaration to also match on (some) Type nodes.

This patch change the hasDeclaration matcher to:
a) work the same on Type and QualType nodes,
b) be completely explicit about what nodes we can match instead of just allowing
   anything with a getDecl() to match,
c) explicitly control desugaring only one level in very specific instances.
d) adds hasSpecializedTemplate and tagType matchers to allow migrating
  existing use cases that now need more explicit matchers

Note: This patch breaks clang-tools-extra. The corresponding patch there
is approved and will land in a subsequent patch.

Differential Revision: https://reviews.llvm.org/D27104

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@309809 91177308-0d34-0410-b5e6-96231b3b80d8
2017-08-02 13:04:44 +00:00
Clement Courbet e575997e85 [ASTMatchers][NFC] integerLiteral(): Mention negative integers in
documentation.

Trying to match integerLiteral(-1) will silently fail, because an numeric
literal is always positive.
- Update the documentation to explain how to match negative numeric
  literals.
- Add a unit test.

Differential Revision: https://reviews.llvm.org/D35196

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@307663 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-11 15:45:22 +00:00
Peter Wu 32dfbce661 [ASTMatchers] Add clang-query support for equals matcher
Summary:
This allows the clang-query tool to use matchers like
"integerLiteral(equals(32))". For this to work, an overloaded function
is added for each possible parameter type.

Reviewed By: aaron.ballman

Differential Revision: https://reviews.llvm.org/D33094

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@305022 91177308-0d34-0410-b5e6-96231b3b80d8
2017-06-08 22:00:58 +00:00
Jakub Kuderski b64b36bd35 Add cxxStdInitializerListExpr AST matcher
Summary:
This adds a new ASTMatcher for CXXStdInitializerListExprs that matches C++ initializer list expressions.

The primary motivation is to use it to fix [[ https://bugs.llvm.org/show_bug.cgi?id=32896 | PR32896 ]] (review here [[ https://reviews.llvm.org/D32767 | D32767 ]]).

Reviewers: alexfh, Prazek, aaron.ballman

Reviewed By: alexfh, aaron.ballman

Subscribers: malcolm.parsons, cfe-commits, klimek

Differential Revision: https://reviews.llvm.org/D32810

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@302287 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-05 21:01:12 +00:00
Eric Liu 54a8f5f00e [ASTMatchers] add typeAliasTemplateDecl matcher.
Reviewers: hokein, aaron.ballman

Reviewed By: aaron.ballman

Subscribers: aaron.ballman, cfe-commits, klimek

Differential Revision: https://reviews.llvm.org/D28671

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@298912 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-28 12:56:47 +00:00
Aaron Ballman 219029ad97 Add AST matchers for ObjCProtocolDecl, ObjCCategoryDecl, ObjCMethodDecl, ObjCIvarDecl, and ObjCPropertyDecl.
Patch by Dave Lee.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@297882 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-15 20:14:25 +00:00
Malcolm Parsons 4e003c16fb Fix documentation typo.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@292595 91177308-0d34-0410-b5e6-96231b3b80d8
2017-01-20 09:54:26 +00:00
Malcolm Parsons 8614176ac5 [ASTMatchers] Add hasInClassInitializer traversal matcher for FieldDecl.
Summary:
I needed to know whether a FieldDecl had an in-class
initializer for D26453. I used a narrowing matcher there, but a
traversal matcher might be generally useful.

Reviewers: sbenza, bkramer, klimek, aaron.ballman

Subscribers: aaron.ballman, Prazek, cfe-commits

Differential Revision: https://reviews.llvm.org/D28034

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@290492 91177308-0d34-0410-b5e6-96231b3b80d8
2016-12-24 13:35:14 +00:00
Malcolm Parsons 1083e52e5a [ASTMatchers] Fix doc for hasBitWidth
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@290491 91177308-0d34-0410-b5e6-96231b3b80d8
2016-12-24 13:22:26 +00:00
Malcolm Parsons ba42896805 [ASTMatcher] Add hasReplacementType matcher for SubstTemplateTypeParmType
Summary: Needed for https://reviews.llvm.org/D27166

Reviewers: sbenza, bkramer, klimek

Subscribers: aemerson, cfe-commits

Differential Revision: https://reviews.llvm.org/D27447

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@289042 91177308-0d34-0410-b5e6-96231b3b80d8
2016-12-08 11:46:22 +00:00
Manuel Klimek 441c3af190 Adds hasUnqualifiedDesugaredType to allow matching through type sugar.
Differential Revision: https://reviews.llvm.org/D27207

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@288366 91177308-0d34-0410-b5e6-96231b3b80d8
2016-12-01 15:45:06 +00:00
Artem Dergachev e7600adac6 [ASTMatchers] Fix a typo in cStyleCastExpr() HTML docs as well. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@286651 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-11 22:34:53 +00:00
Malcolm Parsons cc21152c21 [ASTMatcher] Add CXXNewExpr support to hasDeclaration
Reviewers: sbenza, lukasza, aaron.ballman, klimek

Subscribers: lukasza, sbenza, cfe-commits

Differential Revision: https://reviews.llvm.org/D26032

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@285644 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-31 22:04:07 +00:00
Haojian Wu 12b3804145 [ASTMatcher] Clarify isStaticStorageClass and hasStaticStorageDuration documents.
Reviewers: aaron.ballman

Subscribers: klimek, cfe-commits

Differential Revision: https://reviews.llvm.org/D24928

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@282474 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-27 07:53:20 +00:00