summaryrefslogtreecommitdiff
path: root/compilerplugins
diff options
context:
space:
mode:
authorStephan Bergmann <sbergman@redhat.com>2017-03-13 14:22:08 +0100
committerStephan Bergmann <sbergman@redhat.com>2017-03-13 14:22:08 +0100
commitf2b4d849715b5dfcbaf422846327fd41d3576ba1 (patch)
treef298b1dc8ded2f0dff5097f0ba86d429eb118d2e /compilerplugins
parent6e4d3bad807a32371fe49f0a4a28ca0e5b0f6e70 (diff)
Fix loplugin:unnecessaryoverride
(user-provided virtual dtor in class with dependent base) Change-Id: I37b3cc3d32e76a0286ecc91f999920e3dfe706cc
Diffstat (limited to 'compilerplugins')
-rw-r--r--compilerplugins/clang/test/unnecessaryoverride-dtor.hxx4
-rw-r--r--compilerplugins/clang/unnecessaryoverride.cxx4
2 files changed, 8 insertions, 0 deletions
diff --git a/compilerplugins/clang/test/unnecessaryoverride-dtor.hxx b/compilerplugins/clang/test/unnecessaryoverride-dtor.hxx
index 81733a92a3ab..e26024be1a28 100644
--- a/compilerplugins/clang/test/unnecessaryoverride-dtor.hxx
+++ b/compilerplugins/clang/test/unnecessaryoverride-dtor.hxx
@@ -46,6 +46,10 @@ struct MarkedInlineButNotDefined {
inline ~MarkedInlineButNotDefined();
};
+template<typename T> struct TemplateBase: T {
+ virtual ~TemplateBase() {}
+};
+
#endif
/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */
diff --git a/compilerplugins/clang/unnecessaryoverride.cxx b/compilerplugins/clang/unnecessaryoverride.cxx
index 8cf811b58415..166ae654f99f 100644
--- a/compilerplugins/clang/unnecessaryoverride.cxx
+++ b/compilerplugins/clang/unnecessaryoverride.cxx
@@ -143,6 +143,10 @@ bool UnnecessaryOverride::VisitCXXMethodDecl(const CXXMethodDecl* methodDecl)
return true;
}
}
+ else
+ {
+ return true; // dependent base
+ }
}
}
// corner case