Version 6.1.0.2, tag libreoffice-6.1.0.2
[LibreOffice.git] / compilerplugins / clang / test / constmethod.cxx
blobe801db419aa782e48f16be69027cda395899cff2
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */
2 /*
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 */
10 #include <memory>
11 #include <vcl/vclptr.hxx>
13 class OutputDevice;
15 struct Class1
17 struct Impl {
18 void foo_notconst();
19 void foo_const() const;
20 int & foo_both();
21 int const & foo_both() const;
23 std::unique_ptr<Impl> pImpl;
24 int* m_pint;
25 VclPtr<OutputDevice> m_pvcl;
27 void foo1() {
28 pImpl->foo_notconst();
30 void foo2() { // expected-error {{this method can be const [loplugin:constmethod]}}
31 pImpl->foo_const();
33 // TODO this should trigger a warning, but doesn't
34 void foo3() {
35 pImpl->foo_both();
37 Impl* foo4() {
38 return pImpl.get(); // no warning expected
40 int* foo5() {
41 return m_pint; // no warning expected
43 OutputDevice* foo6() {
44 return m_pvcl; // no warning expected