Author: hokein Date: Mon Mar 6 08:46:44 2017 New Revision: 297009 URL: http://llvm.org/viewvc/llvm-project?rev=297009&view=rev Log: [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 Modified: clang-tools-extra/trunk/clang-tidy/modernize/UseNullptrCheck.cpp clang-tools-extra/trunk/test/clang-tidy/modernize-use-nullptr.cpp Modified: clang-tools-extra/trunk/clang-tidy/modernize/UseNullptrCheck.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/modernize/UseNullptrCheck.cpp?rev=297009&r1=297008&r2=297009&view=diff ============================================================================== --- clang-tools-extra/trunk/clang-tidy/modernize/UseNullptrCheck.cpp (original) +++ clang-tools-extra/trunk/clang-tidy/modernize/UseNullptrCheck.cpp Mon Mar 6 08:46:44 2017 @@ -39,6 +39,7 @@ AST_MATCHER(Type, sugaredNullptrType) { StatementMatcher makeCastSequenceMatcher() { StatementMatcher ImplicitCastToNull = implicitCastExpr( anyOf(hasCastKind(CK_NullToPointer), hasCastKind(CK_NullToMemberPointer)), + unless(hasImplicitDestinationType(qualType(substTemplateTypeParmType()))), unless(hasSourceExpression(hasType(sugaredNullptrType())))); return castExpr(anyOf(ImplicitCastToNull, Modified: clang-tools-extra/trunk/test/clang-tidy/modernize-use-nullptr.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/modernize-use-nullptr.cpp?rev=297009&r1=297008&r2=297009&view=diff ============================================================================== --- clang-tools-extra/trunk/test/clang-tidy/modernize-use-nullptr.cpp (original) +++ clang-tools-extra/trunk/test/clang-tidy/modernize-use-nullptr.cpp Mon Mar 6 08:46:44 2017 @@ -244,3 +244,20 @@ void f() { bool a; a = ZZ(Hash()); } + +// Test on ignoring substituted template types. +template<typename T> +class TemplateClass { + public: + explicit TemplateClass(int a, T default_value = 0) {} + + void h(T *default_value = 0) {} + + void f(int* p = 0) {} +// CHECK-MESSAGES: :[[@LINE-1]]:19: warning: use nullptr +// CHECK-FIXES: void f(int* p = nullptr) {} +}; + +void IgnoreSubstTemplateType() { + TemplateClass<int*> a(1); +} _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits