diff options
author | Noel Grandin <noel.grandin@collabora.co.uk> | 2017-10-30 16:12:01 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2017-10-30 16:30:59 +0200 |
commit | 21cd473a97a053389e4d69b3becf994ace697c86 (patch) | |
tree | 994e6ee50e29b1ff206c3230fde8d21980e8bc9b /compilerplugins/clang/test/constmethod.cxx | |
parent | a4fbe0c5922392341aa48c8d6d8be72e1abf0abf (diff) |
new loplugin: constmethod
parked in store/ for now, because, as I worked my way up the layers of
modules, the higher I got, the more false+ I got when trying to only
make changes that preserved logical-constness.
Change-Id: I4acd2c4416775f7c6a3d91eb0bce048630ccaff5
Diffstat (limited to 'compilerplugins/clang/test/constmethod.cxx')
-rw-r--r-- | compilerplugins/clang/test/constmethod.cxx | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/compilerplugins/clang/test/constmethod.cxx b/compilerplugins/clang/test/constmethod.cxx new file mode 100644 index 000000000000..e801db419aa7 --- /dev/null +++ b/compilerplugins/clang/test/constmethod.cxx @@ -0,0 +1,46 @@ +/* -*- 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 <memory> +#include <vcl/vclptr.hxx> + +class OutputDevice; + +struct Class1 +{ + struct Impl { + void foo_notconst(); + void foo_const() const; + int & foo_both(); + int const & foo_both() const; + }; + std::unique_ptr<Impl> pImpl; + int* m_pint; + VclPtr<OutputDevice> m_pvcl; + + void foo1() { + pImpl->foo_notconst(); + } + void foo2() { // expected-error {{this method can be const [loplugin:constmethod]}} + pImpl->foo_const(); + } + // TODO this should trigger a warning, but doesn't + void foo3() { + pImpl->foo_both(); + } + Impl* foo4() { + return pImpl.get(); // no warning expected + } + int* foo5() { + return m_pint; // no warning expected + } + OutputDevice* foo6() { + return m_pvcl; // no warning expected + } +}; |