Haojian Wu
f193bff5be
[clang-tidy] Fix modernize-use-nullptr only warns the first NULL argument.
...
Reviewers: alexfh
Reviewed By: alexfh
Subscribers: xazax.hun, cfe-commits
Differential Revision: https://reviews.llvm.org/D34526
llvm-svn: 306651
2017-06-29 08:43:36 +00:00
Haojian Wu
25e54c93bb
[clang-tidy] Fix a false positive in modernize-use-nullptr.
...
Summary:
The FP happens when a casting nullptr expression is used within a NULL-default-arguemnt cxx constructor.
Before the fix, the check will give a warning on nullptr when running
with the test case, which should not happen:
```
G(g(static_cast<char*>(nullptr)));
^~~~~~~~~~~
nullptr
```
Reviewers: alexfh
Reviewed By: alexfh
Subscribers: cfe-commits, xazax.hun
Differential Revision: https://reviews.llvm.org/D34524
llvm-svn: 306091
2017-06-23 09:36:49 +00:00
Haojian Wu
1aa5885f00
[clang-tidy] Ignore substituted template types in modernize-use-nullptr check.
...
Reviewers: alexfh
Reviewed By: alexfh
Subscribers: xazax.hun, malcolm.parsons, JDevlieghere, cfe-commits
Differential Revision: https://reviews.llvm.org/D30639
llvm-svn: 297009
2017-03-06 14:46:44 +00:00
Haojian Wu
b780c59b93
[clang-tidy] Fix a false positive on modernize-use-nullptr check.
...
Summary:
The false positive happens on two neighbour CXXDefaultArgExpr AST nodes.
like below:
```
CXXFunctionalCastExpr 0x85c9670 <col:7, col:23> 'struct ZZ' functional cast to struct ZZ <ConstructorConversion>
`-CXXConstructExpr 0x85c9518 <col:7, col:23> 'struct ZZ' 'void (uint64, const uint64 *)'
|-CallExpr 0x85a0a90 <col:10, col:22> 'uint64':'unsigned long long'
| |-ImplicitCastExpr 0x85a0a78 <col:10> 'uint64 (*)(uint64)' <FunctionToPointerDecay>
| | `-DeclRefExpr 0x85a09f0 <col:10> 'uint64 (uint64)' lvalue Function 0x85a06a0 'Hash' 'uint64 (uint64)'
| `-CXXDefaultArgExpr 0x85a0ac8 <<invalid sloc>> 'uint64':'unsigned long long'
`-CXXDefaultArgExpr 0x85c94f8 <<invalid sloc>> 'const uint64 *'
```
For each particular CXXDefaultArgExpr node, we need to reset
FirstSubExpr, otherwise FirstSubExpr will refer to an incorrect expr.
Reviewers: alexfh
Reviewed By: alexfh
Subscribers: JDevlieghere, cfe-commits
Differential Revision: https://reviews.llvm.org/D30412
llvm-svn: 296479
2017-02-28 15:29:52 +00:00
Piotr Padlewski
08124b110a
modernize-use-auto NFC fixes
...
llvm-svn: 289656
2016-12-14 15:29:23 +00:00
Mandeep Singh Grang
7c7ea7d0ae
[clang-tools-extra] Format sources with clang-format. NFC.
...
Summary:
Ran clang-format on all .c/.cpp/.h files in clang-tools-extra.
Excluded the test, unittests, clang-reorder-fields, include-fixer, modularize and pptrace directories.
Reviewers: klimek, alexfh
Subscribers: nemanjai
Tags: #clang-tools-extra
Differential Revision: https://reviews.llvm.org/D26329
llvm-svn: 286221
2016-11-08 07:50:19 +00:00
Haojian Wu
a29ae6f2d7
[clang-tidy] Fix a regression issue introduced by r285239.
...
Summary:
r285239 changes the behavior of AST CXXDefaultArgExpr node.
Update `modernize-use-nullptr` to handle CXXDefaultArgExpr correctly.
Reviewers: alexfh
Subscribers: cfe-commits
Differential Revision: https://reviews.llvm.org/D26301
llvm-svn: 286156
2016-11-07 21:46:24 +00:00
Etienne Bergeron
e15ef2f609
[clang-tidy] Lift common matchers to utils namespace
...
Summary:
This patch is lifting matchers used by more than one checkers
to the common namespace.
Reviewers: aaron.ballman, alexfh
Subscribers: aaron.ballman, cfe-commits
Differential Revision: http://reviews.llvm.org/D19841
llvm-svn: 269804
2016-05-17 19:36:09 +00:00
Haojian Wu
0519744343
[clang-tidy] Make 'modernize-use-nullptr' check ignores NULL marcos used in other macros.
...
Reviewers: bkramer, alexfh
Subscribers: cfe-commits
Differential Revision: http://reviews.llvm.org/D17958
llvm-svn: 263221
2016-03-11 11:40:08 +00:00
Haojian Wu
678f65a9b4
[clang-tidy] Make 'modernize-use-nullptr' check work on multiple nested implicit cast expressions.
...
Summary:
For some test cases like:
```
int func(int, void*, void*);
(double)func(0, 0, 0);
```
The AST contains several `ImplicitCastExpr`s, so we should not only check on the first sub expression.
```
`-CStyleCastExpr 0x7fe43a088938 <line:6:3, col:24> 'double' <NoOp>
`-ImplicitCastExpr 0x7fe43a088920 <col:11, col:24> 'double' <IntegralToFloating>
`-CallExpr 0x7fe43a0888a0 <col:11, col:24> 'int'
|-ImplicitCastExpr 0x7fe43a088888 <col:11> 'int (*)(int, void *, void *)' <FunctionToPointerDecay>
| `-DeclRefExpr 0x7fe43a0887d8 <col:11> 'int (int, void *, void *)' lvalue Function 0x7fe43a0886f0 'func1' 'int (int, void *, void *)'
|-IntegerLiteral 0x7fe43a088800 <col:17> 'int' 0
|-ImplicitCastExpr 0x7fe43a0888e0 <col:20> 'void *' <NullToPointer>
| `-IntegerLiteral 0x7fe43a088820 <col:20> 'int' 0
`-ImplicitCastExpr 0x7fe43a0888f8 <col:23> 'void *' <NullToPointer>
`-IntegerLiteral 0x7fe43a088840 <col:23> 'int' 0
```
Reviewers: alexfh
Subscribers: cfe-commits
Differential Revision: http://reviews.llvm.org/D17849
llvm-svn: 262698
2016-03-04 08:55:54 +00:00
Haojian Wu
0d5e9d3135
[clang-tidy] Fix an assertion failure in `modernize-use-nullptr` check.
...
Reviewers: alexfh
Subscribers: cfe-commits
Differential Revision: http://reviews.llvm.org/D17640
llvm-svn: 262024
2016-02-26 15:34:35 +00:00
Angel Garcia Gomez
dc39f313e2
Remove unreachable that was reached in modernize-use-nullptr.
...
Summary: When traversing the parent map, the check assumed that all the nodes would be either Stmt or Decl. After r251101, this is no longer true: there can be TypeLoc and NestedNameSpecifierLoc nodes.
Reviewers: alexfh
Subscribers: klimek, cfe-commits
Differential Revision: http://reviews.llvm.org/D14229
llvm-svn: 251803
2015-11-02 15:28:06 +00:00
Angel Garcia Gomez
c50b9fbb84
Fix bug in modernize-use-nullptr.
...
Summary:
https://llvm.org/bugs/show_bug.cgi?id=24960
modernize-use-nullptr would hit an assertion in some cases involving macros and initializer lists, due to finding a node with more than one parent (the two forms of the initializer list).
However, this doesn't mean that the replacement is incorrect, so instead of just rejecting this case I tried to find a way to make it work. Looking at the semantic form of the InitListExpr made sense to me (looking at both forms results in false negatives) but I am not sure of the things that we can miss by skipping the syntactic form.
Reviewers: klimek
Subscribers: cfe-commits, alexfh
Differential Revision: http://reviews.llvm.org/D13246
llvm-svn: 249291
2015-10-05 08:40:13 +00:00
Aaron Ballman
f36a425eba
Reapplying r246209, which exposed language options to the checkers. This time disable UseNullptrCheck when not compiling in C++ mode, but still allow in C++11 mode since it's likely the user wishes to modernize their code.
...
llvm-svn: 246298
2015-08-28 13:20:46 +00:00
Aaron Ballman
46c9ae3578
Reverting r246209 while I investigate a build bot failure: http://lab.llvm.org:8011/builders/clang-x86_64-debian-fast/builds/30516
...
llvm-svn: 246224
2015-08-27 22:19:50 +00:00
Aaron Ballman
ed916fa458
Expose language options to the checkers; disable UseNullptrCheck when not compiling in C++11 mode.
...
llvm-svn: 246209
2015-08-27 21:17:47 +00:00
Angel Garcia Gomez
485f38756d
Test commit!
...
llvm-svn: 245701
2015-08-21 13:55:16 +00:00
Benjamin Kramer
e09303808a
[clang-tidy] Fold the meat of the UseNullPtrCheck into an anonymous namespace.
...
While convenient, RecursiveASTVisitor generates a ridiculous amount of dead
template code. Making it not visible from the outside lets the compiler
eliminate some of it, shrinking clang-tidy by ~140k.
llvm-svn: 245548
2015-08-20 09:47:06 +00:00
Alexander Kornienko
20ce95f294
[clang-tidy] Add back a test with a custom NULL macro. Remove redundant default.
...
llvm-svn: 245533
2015-08-20 01:44:14 +00:00
Alexander Kornienko
0777b3cffe
[clang-tidy] Fix use-after-free in UseNullptrCheck.
...
llvm-svn: 245524
2015-08-19 23:57:34 +00:00
Alexander Kornienko
87d89d2be1
[clang-tidy] Work around failure in Darwin.
...
llvm-svn: 245517
2015-08-19 23:03:23 +00:00
Alexander Kornienko
1b7bf7a2a7
[clang-tidy] Add modernize-use-nullptr check, attempt 2.
...
This patch re-applies r245434 and r245471 reverted in r245493, and changes the
way custom null macros are configured. The test for custom null macros is
temporarily excluded and will be committed separately to reduce chances of
breakages.
Initial patches by Angel Garcia.
llvm-svn: 245511
2015-08-19 22:21:37 +00:00
Justin Bogner
71e1a579b2
Revert "[clang-tidy] Add use-nullptr check to clang-tidy."
...
The new test is failing on darwin:
http://lab.llvm.org:8080/green/job/clang-stage1-configure-RA_check/10339/
This reverts r245434 and its follow up r245471.
llvm-svn: 245493
2015-08-19 20:30:07 +00:00
Alexander Kornienko
be6e053938
[clang-tidy] Fix a bug in UseNullptrCheck.
...
http://reviews.llvm.org/D12162
Patch by Angel Garcia!
llvm-svn: 245471
2015-08-19 17:50:22 +00:00
Alexander Kornienko
bd725b4537
[clang-tidy] Add use-nullptr check to clang-tidy.
...
Move UseNullptr from clang-modernize to modernize module in clang-tidy.
http://reviews.llvm.org/D12081
Patch by Angel Garcia!
llvm-svn: 245434
2015-08-19 13:13:12 +00:00