summaryrefslogtreecommitdiff
path: root/compilerplugins
diff options
context:
space:
mode:
authorStephan Bergmann <sbergman@redhat.com>2017-11-08 15:23:24 +0100
committerStephan Bergmann <sbergman@redhat.com>2017-11-08 15:28:20 +0100
commit871e420cbbd8afe064e7bbc0ed426db3b01fddfa (patch)
tree2e97a4d72b9f3c561691dda995bc208ca5fceeeb /compilerplugins
parentbcfd4b0de6b67bfa3e5f42b845d7055073c68d52 (diff)
Fix loplugin::unusedvariablecheck check for std classes
(but which finds no new hits) Change-Id: I862a3c82932ee6d6d0946cd33f965bb8e917cff8
Diffstat (limited to 'compilerplugins')
-rw-r--r--compilerplugins/clang/check.cxx11
-rw-r--r--compilerplugins/clang/test/unusedvariablecheck.cxx28
2 files changed, 31 insertions, 8 deletions
diff --git a/compilerplugins/clang/check.cxx b/compilerplugins/clang/check.cxx
index 03d9683a4903..6f9ee1779bf6 100644
--- a/compilerplugins/clang/check.cxx
+++ b/compilerplugins/clang/check.cxx
@@ -216,14 +216,9 @@ bool isExtraWarnUnusedType(clang::QualType type) {
}
auto const tc = TypeCheck(rec);
// Check some common non-LO types:
- if (tc.Class("string").Namespace("std").GlobalNamespace()
- || tc.Class("basic_string").Namespace("std").GlobalNamespace()
- || tc.Class("list").Namespace("std").GlobalNamespace()
- || (tc.Class("list").Namespace("__debug").Namespace("std")
- .GlobalNamespace())
- || tc.Class("vector").Namespace("std").GlobalNamespace()
- || (tc.Class("vector" ).Namespace("__debug").Namespace("std")
- .GlobalNamespace()))
+ if (tc.Class("basic_string").StdNamespace()
+ || tc.Class("list").StdNamespace()
+ || tc.Class("vector").StdNamespace())
{
return true;
}
diff --git a/compilerplugins/clang/test/unusedvariablecheck.cxx b/compilerplugins/clang/test/unusedvariablecheck.cxx
new file mode 100644
index 000000000000..c5b2a04d89fe
--- /dev/null
+++ b/compilerplugins/clang/test/unusedvariablecheck.cxx
@@ -0,0 +1,28 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#include <sal/config.h>
+
+#include <list>
+#include <string>
+#include <vector>
+
+namespace
+{
+template <typename T> using Vec = std::vector<T>;
+}
+
+int main()
+{
+ std::list<int> v1; // expected-error {{unused variable 'v1' [loplugin:unusedvariablecheck]}}
+ std::string v2; // expected-error {{unused variable 'v2' [loplugin:unusedvariablecheck]}}
+ Vec<int> v3; // expected-error {{unused variable 'v3' [loplugin:unusedvariablecheck]}}
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */