This revision was automatically updated to reflect the committed changes. Closed by commit rL296479: [clang-tidy] Fix a false positive on modernize-use-nullptr check. (authored by hokein).
Changed prior to commit: https://reviews.llvm.org/D30412?vs=89894&id=90032#toc Repository: rL LLVM https://reviews.llvm.org/D30412 Files: clang-tools-extra/trunk/clang-tidy/modernize/UseNullptrCheck.cpp clang-tools-extra/trunk/test/clang-tidy/modernize-use-nullptr.cpp Index: clang-tools-extra/trunk/clang-tidy/modernize/UseNullptrCheck.cpp =================================================================== --- clang-tools-extra/trunk/clang-tidy/modernize/UseNullptrCheck.cpp +++ clang-tools-extra/trunk/clang-tidy/modernize/UseNullptrCheck.cpp @@ -190,8 +190,10 @@ bool VisitStmt(Stmt *S) { auto *C = dyn_cast<CastExpr>(S); // Catch the castExpr inside cxxDefaultArgExpr. - if (auto *E = dyn_cast<CXXDefaultArgExpr>(S)) + if (auto *E = dyn_cast<CXXDefaultArgExpr>(S)) { C = dyn_cast<CastExpr>(E->getExpr()); + FirstSubExpr = nullptr; + } if (!C) { FirstSubExpr = nullptr; return true; Index: clang-tools-extra/trunk/test/clang-tidy/modernize-use-nullptr.cpp =================================================================== --- clang-tools-extra/trunk/test/clang-tidy/modernize-use-nullptr.cpp +++ clang-tools-extra/trunk/test/clang-tidy/modernize-use-nullptr.cpp @@ -228,3 +228,19 @@ void test_default_argument() { D(nullptr); } + +// Test on two neighbour CXXDefaultArgExprs nodes. +typedef unsigned long long uint64; +struct ZZ { + explicit ZZ(uint64, const uint64* = NULL) {} +// CHECK-MESSAGES: :[[@LINE-1]]:39: warning: use nullptr +// CHECK-FIXES: explicit ZZ(uint64, const uint64* = nullptr) {} + operator bool() { return true; } +}; + +uint64 Hash(uint64 seed = 0) { return 0; } + +void f() { + bool a; + a = ZZ(Hash()); +}
Index: clang-tools-extra/trunk/clang-tidy/modernize/UseNullptrCheck.cpp =================================================================== --- clang-tools-extra/trunk/clang-tidy/modernize/UseNullptrCheck.cpp +++ clang-tools-extra/trunk/clang-tidy/modernize/UseNullptrCheck.cpp @@ -190,8 +190,10 @@ bool VisitStmt(Stmt *S) { auto *C = dyn_cast<CastExpr>(S); // Catch the castExpr inside cxxDefaultArgExpr. - if (auto *E = dyn_cast<CXXDefaultArgExpr>(S)) + if (auto *E = dyn_cast<CXXDefaultArgExpr>(S)) { C = dyn_cast<CastExpr>(E->getExpr()); + FirstSubExpr = nullptr; + } if (!C) { FirstSubExpr = nullptr; return true; Index: clang-tools-extra/trunk/test/clang-tidy/modernize-use-nullptr.cpp =================================================================== --- clang-tools-extra/trunk/test/clang-tidy/modernize-use-nullptr.cpp +++ clang-tools-extra/trunk/test/clang-tidy/modernize-use-nullptr.cpp @@ -228,3 +228,19 @@ void test_default_argument() { D(nullptr); } + +// Test on two neighbour CXXDefaultArgExprs nodes. +typedef unsigned long long uint64; +struct ZZ { + explicit ZZ(uint64, const uint64* = NULL) {} +// CHECK-MESSAGES: :[[@LINE-1]]:39: warning: use nullptr +// CHECK-FIXES: explicit ZZ(uint64, const uint64* = nullptr) {} + operator bool() { return true; } +}; + +uint64 Hash(uint64 seed = 0) { return 0; } + +void f() { + bool a; + a = ZZ(Hash()); +}
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits