summaryrefslogtreecommitdiffstats
path: root/clang-tools-extra/test/clang-tidy/performance-unnecessary-value-param.cpp
diff options
context:
space:
mode:
authorFelix Berger <flx@google.com>2016-12-02 14:44:16 +0000
committerFelix Berger <flx@google.com>2016-12-02 14:44:16 +0000
commite4ab0602f214dda9955a07aa8fc7ea4e68e5a867 (patch)
tree01f18cfe9122eb959b5aced9c211ebd7cf45b4d6 /clang-tools-extra/test/clang-tidy/performance-unnecessary-value-param.cpp
parent3a19863f1c308d59cdecffdf18997dadff09a33e (diff)
downloadbcm5719-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.cpp18
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 {}
+};
OpenPOWER on IntegriCloud