This revision was automatically updated to reflect the committed changes. Closed by commit rL288502: [clang-tidy] Do not trigger unnecessary-value-param check on methods marked as… (authored by flx).
Changed prior to commit: https://reviews.llvm.org/D27248?vs=79732&id=80066#toc Repository: rL LLVM https://reviews.llvm.org/D27248 Files: clang-tools-extra/trunk/clang-tidy/performance/UnnecessaryValueParamCheck.cpp clang-tools-extra/trunk/test/clang-tidy/performance-unnecessary-value-param.cpp Index: clang-tools-extra/trunk/clang-tidy/performance/UnnecessaryValueParamCheck.cpp =================================================================== --- clang-tools-extra/trunk/clang-tidy/performance/UnnecessaryValueParamCheck.cpp +++ clang-tools-extra/trunk/clang-tidy/performance/UnnecessaryValueParamCheck.cpp @@ -61,7 +61,8 @@ unless(referenceType())))), decl().bind("param")); Finder->addMatcher( - functionDecl(isDefinition(), unless(cxxMethodDecl(isOverride())), + functionDecl(isDefinition(), + unless(cxxMethodDecl(anyOf(isOverride(), isFinal()))), unless(isInstantiated()), has(typeLoc(forEach(ExpensiveValueParamDecl))), decl().bind("functionDecl")), Index: clang-tools-extra/trunk/test/clang-tidy/performance-unnecessary-value-param.cpp =================================================================== --- clang-tools-extra/trunk/test/clang-tidy/performance-unnecessary-value-param.cpp +++ clang-tools-extra/trunk/test/clang-tidy/performance-unnecessary-value-param.cpp @@ -271,3 +271,21 @@ void ReferenceFunctionByCallingIt() { PositiveMessageAndFixAsFunctionIsCalled(ExpensiveToCopyType()); } + +// Virtual method overrides of dependent types cannot be recognized unless they +// are marked as override or final. Test that check is not triggered on methods +// marked with override or final. +template <typename T> +struct NegativeDependentTypeInterface { + virtual void Method(ExpensiveToCopyType E) = 0; +}; + +template <typename T> +struct NegativeOverrideImpl : public NegativeDependentTypeInterface<T> { + void Method(ExpensiveToCopyType E) override {} +}; + +template <typename T> +struct NegativeFinalImpl : public NegativeDependentTypeInterface<T> { + void Method(ExpensiveToCopyType E) final {} +};
Index: clang-tools-extra/trunk/clang-tidy/performance/UnnecessaryValueParamCheck.cpp =================================================================== --- clang-tools-extra/trunk/clang-tidy/performance/UnnecessaryValueParamCheck.cpp +++ clang-tools-extra/trunk/clang-tidy/performance/UnnecessaryValueParamCheck.cpp @@ -61,7 +61,8 @@ unless(referenceType())))), decl().bind("param")); Finder->addMatcher( - functionDecl(isDefinition(), unless(cxxMethodDecl(isOverride())), + functionDecl(isDefinition(), + unless(cxxMethodDecl(anyOf(isOverride(), isFinal()))), unless(isInstantiated()), has(typeLoc(forEach(ExpensiveValueParamDecl))), decl().bind("functionDecl")), Index: clang-tools-extra/trunk/test/clang-tidy/performance-unnecessary-value-param.cpp =================================================================== --- clang-tools-extra/trunk/test/clang-tidy/performance-unnecessary-value-param.cpp +++ clang-tools-extra/trunk/test/clang-tidy/performance-unnecessary-value-param.cpp @@ -271,3 +271,21 @@ void ReferenceFunctionByCallingIt() { PositiveMessageAndFixAsFunctionIsCalled(ExpensiveToCopyType()); } + +// Virtual method overrides of dependent types cannot be recognized unless they +// are marked as override or final. Test that check is not triggered on methods +// marked with override or final. +template <typename T> +struct NegativeDependentTypeInterface { + virtual void Method(ExpensiveToCopyType E) = 0; +}; + +template <typename T> +struct NegativeOverrideImpl : public NegativeDependentTypeInterface<T> { + void Method(ExpensiveToCopyType E) override {} +}; + +template <typename T> +struct NegativeFinalImpl : public NegativeDependentTypeInterface<T> { + void Method(ExpensiveToCopyType E) final {} +};
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits