summaryrefslogtreecommitdiff
path: root/compilerplugins/clang/refcounting.cxx
diff options
context:
space:
mode:
authorStephan Bergmann <sbergman@redhat.com>2021-02-22 14:35:31 +0100
committerStephan Bergmann <sbergman@redhat.com>2021-02-22 16:43:46 +0100
commitb0f1672a5db0379b0e5f424038fc38f5d699eceb (patch)
tree63fb89fa4616bd0a0e4a171e7aef4823f27564de /compilerplugins/clang/refcounting.cxx
parent68a323c97ad817faf95d2569b0965c4654044f60 (diff)
Avoid loplugin:refounting in uninstantiated template code
...causing e.g. false positive > In file included from shell/source/win32/spsupp/COMOpenDocuments_x64.cxx:11: > In file included from shell/source/win32/spsupp/COMOpenDocuments.cxx:16: > In file included from shell/inc/spsupp\COMOpenDocuments.hpp:21: > shell/inc/spsupp/COMRefCounted.hpp(35,13): error: cppu::OWeakObject subclass 'COMRefCounted<Interfaces...>' being deleted via delete, should be managed via rtl::Reference [loplugin:refcounting] > delete this; > ^~~~~~~~~~~ with clang-cl on Windows. (Ideally, this would be made up for with setting this plugins' shouldVisitTemplateInstantiations() to true, see the TODO added in compilerplugins/clang/test/refcounting.cxx, but that would cause lots of other findings, so is left out for now.) Change-Id: Ia52b13498a0c7169b37ecf4882ce84c3cc1d2cc4 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/111339 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
Diffstat (limited to 'compilerplugins/clang/refcounting.cxx')
-rw-r--r--compilerplugins/clang/refcounting.cxx3
1 files changed, 3 insertions, 0 deletions
diff --git a/compilerplugins/clang/refcounting.cxx b/compilerplugins/clang/refcounting.cxx
index fa026877680b..f15e423aebd2 100644
--- a/compilerplugins/clang/refcounting.cxx
+++ b/compilerplugins/clang/refcounting.cxx
@@ -211,6 +211,9 @@ bool containsOWeakObjectSubclass(const QualType& qType) {
bool containsOWeakObjectSubclass(const clang::Type* pType0) {
if (!pType0)
return false;
+ if (pType0->isDependentType()) {
+ return false;
+ }
const clang::Type* pType = pType0->getUnqualifiedDesugaredType();
if (!pType)
return false;