diff options
author | Felix Berger <flx@google.com> | 2016-12-02 14:44:16 +0000 |
---|---|---|
committer | Felix Berger <flx@google.com> | 2016-12-02 14:44:16 +0000 |
commit | e4ab0602f214dda9955a07aa8fc7ea4e68e5a867 (patch) | |
tree | 01f18cfe9122eb959b5aced9c211ebd7cf45b4d6 /clang-tools-extra/test/clang-tidy/performance-unnecessary-value-param.cpp | |
parent | 3a19863f1c308d59cdecffdf18997dadff09a33e (diff) | |
download | bcm5719-llvm-e4ab0602f214dda9955a07aa8fc7ea4e68e5a867.tar.gz bcm5719-llvm-e4ab0602f214dda9955a07aa8fc7ea4e68e5a867.zip |
[clang-tidy] Do not trigger unnecessary-value-param check on methods marked as final
Summary: Virtual method overrides of dependent types cannot be recognized unless
they are marked as override or final.
Exclude methods marked as final from check and add test.
Reviewers: sbenza, hokein, alexfh
Subscribers: malcolm.parsons, JDevlieghere, cfe-commits
Differential Revision: https://reviews.llvm.org/D27248
llvm-svn: 288502
Diffstat (limited to 'clang-tools-extra/test/clang-tidy/performance-unnecessary-value-param.cpp')
-rw-r--r-- | clang-tools-extra/test/clang-tidy/performance-unnecessary-value-param.cpp | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/clang-tools-extra/test/clang-tidy/performance-unnecessary-value-param.cpp b/clang-tools-extra/test/clang-tidy/performance-unnecessary-value-param.cpp index 3da15a359c8..5f7a4dd91d4 100644 --- a/clang-tools-extra/test/clang-tidy/performance-unnecessary-value-param.cpp +++ b/clang-tools-extra/test/clang-tidy/performance-unnecessary-value-param.cpp @@ -271,3 +271,21 @@ void PositiveMessageAndFixAsFunctionIsCalled(ExpensiveToCopyType A) { 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 {} +}; |