Commit Graph

586 Commits

Author SHA1 Message Date
Stephan Bergmann
206b5b2661 New loplugin:external
...warning about (for now only) functions and variables with external linkage
that likely don't need it.

The problems with moving entities into unnamed namespacs and breaking ADL
(as alluded to in comments in compilerplugins/clang/external.cxx) are
illustrated by the fact that while

  struct S1 { int f() { return 0; } };
  int f(S1 s) { return s.f(); }
  namespace N {
    struct S2: S1 { int f() { return 1; } };
    int f(S2 s) { return s.f(); }
  }
  int main() { return f(N::S2()); }

returns 1, both moving just the struct S2 into an nunnamed namespace,

  struct S1 { int f() { return 0; } };
  int f(S1 s) { return s.f(); }
  namespace N {
    namespace { struct S2: S1 { int f() { return 1; } }; }
    int f(S2 s) { return s.f(); }
  }
  int main() { return f(N::S2()); }

as well as moving just the function f overload into an unnamed namespace,

  struct S1 { int f() { return 0; } };
  int f(S1 s) { return s.f(); }
  namespace N {
    struct S2: S1 { int f() { return 1; } };
    namespace { int f(S2 s) { return s.f(); } }
  }
  int main() { return f(N::S2()); }

would each change the program to return 0 instead.

Change-Id: I4d09f7ac5e8f9bcd6e6bde4712608444b642265c
Reviewed-on: https://gerrit.libreoffice.org/60539
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2018-09-17 09:05:38 +02:00
Noel Grandin
bb209f2f53 Revert "clang bugprone-unused-return-value"
comment from sberg:
  aren't these changes broken in general, when the called function
  may throw an exception before it takes ownership of the passed-in pointer?

So revert, except for
  (a) PlainTextFilterDetect::detect, which was definitely a leak
  (b) SwCursor::FindAll, where unique_ptr was being unnecessarily used

This reverts commit 7764ae70b0.

Change-Id: I555e651b44e245b031729013d2ce88d26e8a357e
Reviewed-on: https://gerrit.libreoffice.org/60301
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Tested-by: Noel Grandin <noel.grandin@collabora.co.uk>
2018-09-11 15:18:26 +02:00
Stephan Bergmann
a55711ad4f Generate UNO exception classes as SAL_WARN_UNUSED
...to find more places like 09978dd1fc "clang-tidy
bugprone-unused-return-value"

Change-Id: Ibe8b6790c701dc8270295dd1e2cbc9023b5ce018
Reviewed-on: https://gerrit.libreoffice.org/60234
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2018-09-10 14:49:23 +02:00
Noel Grandin
7764ae70b0 clang bugprone-unused-return-value
most of these changes just make the change of ownership when using
std::unique_ptr clearer, but there is one definite leak fix in
    PlainTextFilterDetect::detect

Change-Id: I8282a68007222a4fee84004f394bde0cca8569e9
Reviewed-on: https://gerrit.libreoffice.org/60159
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Tested-by: Noel Grandin <noel.grandin@collabora.co.uk>
2018-09-08 08:45:41 +02:00
Noel Grandin
c83a807166 loplugin:unusedfields
Change-Id: I9ae44279f1cce06bd6868005fbb878ba4894aed7
Reviewed-on: https://gerrit.libreoffice.org/58706
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2018-08-08 09:30:23 +02:00
Stephan Bergmann
1a400fc390 codemaker: avoid -Werror=deprecated-copy (GCC trunk towards GCC 9)
...by explicitly defaulting the copy/move functions (and, where needed in turn,
also a default ctor) for classes that have a user-declared dtor that does
nothing other than an implicitly-defined one would do, but needs to be user-
declared because it is virtual and potentially serves as a key function to
emit the vtable, or is non-public, etc.  (For LIBO_INTERNAL_ONLY, in cppumaker-
genered code.)

Change-Id: Ia13d945c10600f5793a3247f85a464170ede483d
Reviewed-on: https://gerrit.libreoffice.org/58116
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2018-07-27 08:28:02 +02:00
Muhammet Kara
082c7caece Add missing method hasUnsignedLongDependency()
m_unsignedLongDependency was already set but never used.

Behavior of Includes::Includes ctor is now in consistency with
the related switch cases in Includes::add (see: m_includeSalTypesH)

Change-Id: I4cca1bab014ac280b73b7532aadfd5ff2b0b9894
Reviewed-on: https://gerrit.libreoffice.org/57792
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
Tested-by: Jenkins
2018-07-25 19:28:03 +02:00
Gabor Kelemen
7af90cc93b Add missing sal/log.hxx headers
rtl/string.hxx and rtl/ustring.hxx both unnecessarily #include <sal/log.hxx>
(and don't make use of it themselves), but many other files happen to depend on it.
This is a continuation of commit 6ff2d84ade
to be able to remove those unneeded includes.

This commit adds missing headers to every file found by:
grep -FwL sal/log.hxx $(git grep -Elw 'SAL_INFO|SAL_INFO_IF|SAL_WARN|SAL_WARN_IF|SAL_DETAIL_LOG_STREAM|SAL_WHERE|SAL_STREAM|SAL_DEBUG')
to directories from a* to configmgr

Change-Id: I6ea1a7f992b1f835f5bac7a725e1135abee3f85a
Reviewed-on: https://gerrit.libreoffice.org/57170
Tested-by: Jenkins
Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk>
2018-07-09 10:49:06 +02:00
Arkadiy Illarionov
5437eb15ad tdf#96099 Remove trivial std::map typedefs in [cd]*
Change-Id: I043d265d3d73a3e16f05d5ca7e29a09341651d82
Reviewed-on: https://gerrit.libreoffice.org/56639
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2018-06-29 08:46:34 +02:00
Miklos Vajna
a96a260a5f tdf#117918 codemaker: avoid including ourselves in .hpp files
It's pointless, include guards will make sure it's a NOP, but it
confuses tools like IWYU.

Change-Id: Ic1f56ef267954cdf8bf3cb4f4a5e841d5e4bb82a
Reviewed-on: https://gerrit.libreoffice.org/55354
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2018-06-06 08:41:29 +02:00
Caolán McNamara
4e5cb9fdba coverity#1019311 silence Unchecked return value
Change-Id: Ife2bfed0eecff5fe247d0fef6ee7d77626d9f0be
2018-01-26 13:01:47 +00:00
Noel Grandin
be8c414567 loplugin:unusedmethods also check for functions returning bool
we were previously excluding them

Change-Id: I48a68799b0de60b4995fae541eb363e043d4dd11
Reviewed-on: https://gerrit.libreoffice.org/48167
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2018-01-19 13:26:27 +01:00
Stephan Bergmann
697f01e052 SAL_W32 is just an alias for _WIN32
...so consistently use the latter instead of the former

Change-Id: I144d5e7c472632f93b2258461510346bc85892d9
Reviewed-on: https://gerrit.libreoffice.org/48135
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2018-01-19 08:19:38 +01:00
Stephan Bergmann
56bd8bb862 More loplugin:cstylecast: codemaker
auto-rewrite with <https://gerrit.libreoffice.org/#/c/47798/> "Enable
loplugin:cstylecast for some more cases" plus
solenv/clang-format/reformat-formatted-files

Change-Id: If1c6b7a83f6f64fbcbced4f036c0f859a1408d0c
2018-01-12 20:28:16 +01:00
Andrea Gelmini
a2ef65b09d Fix typos
Change-Id: I0e56430afa65b6b5826d56212ac501c0244fce9b
Reviewed-on: https://gerrit.libreoffice.org/47145
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2017-12-29 09:56:34 +01:00
Stephan Bergmann
a2656563f1 loplugin:unnecessaryparen: Warn about parentheses around literals
...that are not composed of multiple tokens, like ("foo" "bar").  Also don't yet
warn about Boolean literals, which are sometimes wrapped in parentheses to
silence unreachable-code warnings.

To avoid multiple warnings about code like

  f((0))

switch to generally using a set of ParenExpr to keep track of which occurrences
have already been handled.

Change-Id: I036a25a92836ec6ab6c56ea848f71bc6d63822bc
Reviewed-on: https://gerrit.libreoffice.org/45317
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2017-11-27 14:04:40 +01:00
Julien Nabet
10593acac0 Replace most lists by vectors in codemaker
Change-Id: Id867b497514d2d795504ae5c9e7d0ad356524ad5
Reviewed-on: https://gerrit.libreoffice.org/45274
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2017-11-26 00:48:10 +01:00
Noel Grandin
1a284d1f98 loplugin:constantparam in c*
Change-Id: I10c7b62e6458062324367b94b207f776af79f598
Reviewed-on: https://gerrit.libreoffice.org/44129
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Tested-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-11-01 07:13:02 +01:00
Stephan Bergmann
696722f2c8 loplugin:includeform: codemaker
Change-Id: If0c6726c4e096f50e2e16f2a4f7e5821457ac368
2017-10-23 22:46:12 +02:00
Noel Grandin
14d4566543 loplugin:constmethod in codemaker,registry,store
Change-Id: Ie75875974f054ff79bd64b1c261e79e2b78eb7fc
Reviewed-on: https://gerrit.libreoffice.org/43540
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-10-20 08:50:48 +02:00
Noel Grandin
2c05d758b2 add << operator for css::uno::Exception
Change-Id: Ia23dafd07133779144965682df3b7125a3214235
Reviewed-on: https://gerrit.libreoffice.org/43046
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
Tested-by: Jenkins <ci@libreoffice.org>
2017-10-04 15:18:00 +02:00
Noel Grandin
4c09f8e087 clang-tidy modernize-use-emplace in c*
Change-Id: I419d1f67ba301050d05981db2a3d6178878684a9
Reviewed-on: https://gerrit.libreoffice.org/42110
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-09-11 08:40:57 +02:00
Noel Grandin
0c3bd1d482 new loplugin:droplong
The types 'long' and 'unsigned long' are different sizes on different
platforms, making them wholy unsuitable for portable code.
And when I mean different sizes, I mean 64bit Linux and 64bit Windows
have different bit sizes.

Change-Id: Id4d8cd709bf71a3f85ed6515fae2b0a21ae8c25d
Reviewed-on: https://gerrit.libreoffice.org/41130
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-08-14 09:14:39 +02:00
Noel Grandin
db17a874af convert std::map::insert to std::map::emplace II
Change-Id: Ief8bd59c903625ba65b75114b7b52c3b7ecbd331
Reviewed-on: https://gerrit.libreoffice.org/41019
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-08-11 13:51:29 +02:00
Noel Grandin
c9253818ec loplugin:oncevar
extend oncevar to any POD type

Change-Id: Ia98ee0a67f183e40fb0c38477760124b2c411dc0
Reviewed-on: https://gerrit.libreoffice.org/40564
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-07-31 08:25:07 +02:00
Noel Grandin
41dc56df37 loplugin:constparams codemaker,idl,idlc
Change-Id: Ic72b7525cfbfbd3c5afb12fe9ea814176e6c8c9d
Reviewed-on: https://gerrit.libreoffice.org/40126
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-07-18 13:27:45 +02:00
Noel Grandin
4250b25c6a teach unnecessaryparen loplugin about identifiers
Change-Id: I5710b51e53779c222cec0bf08cd34bda330fec4b
Reviewed-on: https://gerrit.libreoffice.org/39737
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Tested-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-07-10 09:57:24 +02:00
Noel Grandin
868d8c8f0f loplugin:unnecessaryparen handle parens inside call expr
stick to single-arg function calls, sometimes parens in multi-arg calls
might be there for clarity

Change-Id: Ib80190c571ce65b5d219a88056687042de749e74
Reviewed-on: https://gerrit.libreoffice.org/39676
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-07-07 10:45:05 +02:00
Noel Grandin
8ed77fae3e loplugin:oncevar in codemaker..connectivity
Change-Id: Ia479d9d3d459a699dfc5c1148d01c35e8bc973bd
Reviewed-on: https://gerrit.libreoffice.org/39000
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-06-20 11:54:20 +02:00
Arnaud Versini
c4ac732d81 Remove usage of OString("")
Change-Id: I0874f81c35573048d05b3842806daa0db67f7887
Reviewed-on: https://gerrit.libreoffice.org/38386
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Tested-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-06-04 15:13:17 +02:00
Noel Grandin
ef513fd4b0 remove unnecessary use of OString::getStr
Change-Id: I0490efedf459190521f4339854b3394d57765fdb
Reviewed-on: https://gerrit.libreoffice.org/38058
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-05-28 19:44:08 +02:00
Jochen Nitschke
959496794c cleanup osl/diagnose.h includes
with command
> git grep -l osl/diagnose.h *.cxx |
  xargs grep -L -w 'OSL_\w*' |
  xargs sed -i '/#include *\(<\|\"\)osl\/diagnose.h\(>\|\"\).*/d'

headers need more work

Change-Id: I906519ebbd47a04703b4fa5943b2f7abea7a97ab
Reviewed-on: https://gerrit.libreoffice.org/37350
Tested-by: Jochen Nitschke <j.nitschke+logerrit@ok.de>
Reviewed-by: Michael Stahl <mstahl@redhat.com>
2017-05-09 15:41:46 +02:00
Julien Nabet
097bec4b78 cppcheck: duplicateBreak
Change-Id: Ia33dddfba35da3b495aae4edabe80b1a560674cd
Reviewed-on: https://gerrit.libreoffice.org/37111
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2017-04-30 23:57:45 +02:00
Chris Sherlock
da64d198ec tools: svstream.hxx needs only errcode.hxx & not errinf.hxx
Change-Id: Ia28e35ae5af4f601e9a586a3deffbcd61702b0ca
Reviewed-on: https://gerrit.libreoffice.org/36896
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Chris Sherlock <chris.sherlock79@gmail.com>
2017-04-25 09:31:31 +02:00
Stephan Bergmann
a2d1a73304 More commit resurrection
(why do people do such silly reformatting?)

Change-Id: Ie9d45d7dfccb000f53fa5e8dc456f1e7c033af18
2017-04-04 14:45:01 +02:00
Stephan Bergmann
13adffdfeb Move comment back to where it makes sense
It appertains to the preceding code, not the following, so it was indented for a
subtle reason.

Change-Id: I032033f04a1ca3a91024c11de74ef96527562b41
2017-04-04 14:41:14 +02:00
Noel Grandin
5676ced825 make UNO enums scoped for internal LO code
this modifies codemaker so that, for an UNO enum, we generate code
that effectively looks like:

   #ifdef LIBO_INTERNAL_ONLY && HAVE_CX11_CONSTEXPR
       enum class XXX {
           ONE = 1
       };
       constexpr auto ONE = XXX_ONE;
   #else
      ...the old normal way..
   #endif

which means that for LO internal code, the enums are scoped.

The "constexpr auto" trick acts like an alias so we don't have to
use scoped naming everywhere.

Change-Id: I3054ecb230e8666ce98b4a9cb87b384df5f64fb4
Reviewed-on: https://gerrit.libreoffice.org/34546
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-04-04 06:38:03 +00:00
Stephan Bergmann
5222dd86dd loplugin:loopvartoosmall
Change-Id: Ifd83cb180072304511ad8eb031dcf2a867e97e62
2017-02-25 10:10:02 +01:00
Noel Grandin
fb4bf69399 remove unused KeywordsOnly from IdentifierTranslationMode
Change-Id: I7262e618a14fa9e025d269b560da752e3200309d
2017-02-17 07:52:09 +02:00
Stephan Bergmann
55717b14e0 Remove newly-unnecessary #includes from cppumaker-generated files
...after e57ca02849 "Remove dynamic exception
specifications" dropped uses of UNO exception types from those generated files.
This needed first adapting client code that implicitly depended on those
#includes in the generated files it included ("Add missing #includes":
6dce9c6757,
a34d9150b4,
fed3783e77).

Change-Id: Ia1defda2d586b69092f53feef3644875192cbea4
Reviewed-on: https://gerrit.libreoffice.org/34014
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2017-02-08 08:39:24 +00:00
Noel Grandin
2489000d3f loplugin:useuniqueptr extend to check local vars
just the simple and obvious case for now, of a local var being allocated
and deleted inside a single local block, and the delete happening at the
end of the block

Change-Id: I3a7a094da543debdcd2374737c2ecff91d644625
Reviewed-on: https://gerrit.libreoffice.org/33749
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-02-01 12:15:22 +00:00
Stephan Bergmann
e57ca02849 Remove dynamic exception specifications
...(for now, from LIBO_INTERNAL_CODE only).  See the mail thread starting at
<https://lists.freedesktop.org/archives/libreoffice/2017-January/076665.html>
"Dynamic Exception Specifications" for details.

Most changes have been done automatically by the rewriting loplugin:dynexcspec
(after enabling the rewriting mode, to be committed shortly).  The way it only
removes exception specs from declarations if it also sees a definition, it
identified some dead declarations-w/o-definitions (that have been removed
manually) and some cases where a definition appeared in multiple include files
(which have also been cleaned up manually).  There's also been cases of macro
paramters (that were used to abstract over exception specs) that have become
unused now (and been removed).

Furthermore, some code needed to be cleaned up manually
(avmedia/source/quicktime/ and connectivity/source/drivers/kab/), as I had no
configurations available that would actually build that code.  Missing @throws
documentation has not been applied in such manual clean-up.

Change-Id: I3408691256c9b0c12bc5332de976743626e13960
Reviewed-on: https://gerrit.libreoffice.org/33574
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2017-01-26 12:54:43 +00:00
Noel Grandin
5145f60cc9 loplugin: unnecessary destructor: basctl..codemaker
Change-Id: Iadcfa9bc4fe9efb8d24d6d6afaf2b9b3def0bc3c
Reviewed-on: https://gerrit.libreoffice.org/33452
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-01-24 04:59:44 +00:00
Stephan Bergmann
550e0e42d9 Remove dynamic exception specifications from cppumaker-generated code
See the mail thread starting at
<https://lists.freedesktop.org/archives/libreoffice/2017-January/076665.html>
"Dynamic Exception Specifications" for details.

This leaves some #include <...Exception.hpp> in the generated code that are no
longer needed by the generated files themselves.  But C++ implementation classes
still use dynamic exception specifications and usually don't repeat the relevant
#includes, so postpone removal until the implementation classes are cleaned up
in a later step.

Change-Id: Ifb7df3bb12f7f10c655b85cb0626afe5050479a4
2017-01-20 12:35:56 +01:00
Stephan Bergmann
584262fed1 loplugin:stringconstant: handle OStringBuffer::append
Change-Id: I283da52c0ee2b63c19e31e9a61ab24997c037a6a
2017-01-11 16:39:43 +01:00
Stephan Bergmann
bd614b9135 Delete the "Any-to-Any" template specializations for LIBO_INTERNAL_ONLY
i.e., css::uno::Any function template specializations

  Any::has<Any>() const
  Any::get(Any const &) const
  operator >>=(Any const &, Any &)
  operator <<=(Any &, Any const &)

that don't make much sense (the first is always true, the rest can be replaced
with operator =, which additionally supports move semantics).  For 3rd-party
compatibility, do this only for LIBO_INTERNAL_ONLY, however.

However, some generic template code did benefit from operator >>= working also
for Any, so make up for that with a new (LIBO_INTERNAL_ONLY, given that
operator >>= still covers if fine for !LIBO_INTERNAL_ONLY) fromAny,
complementing the existing toAny.

Change-Id: I8b1b5f803f0b909808159916366d53c948206a88
Reviewed-on: https://gerrit.libreoffice.org/30022
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
Tested-by: Stephan Bergmann <sbergman@redhat.com>
2016-11-21 19:44:56 +00:00
Stephan Bergmann
347f67dd67 clang-cl loplugin: codemaker
Change-Id: I1e11ea28d90a5ee47a0ad6d302724b226ef8440b
Reviewed-on: https://gerrit.libreoffice.org/29877
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2016-10-16 14:19:28 +00:00
Stephan Bergmann
802f2a4208 Don't allow O[U]StringBuffer in string concatenation
...as

  OStringBuffer b("foo"); b = "bar" + b;

doesn't work as one might expect (see the mail thread starting at
<https://lists.freedesktop.org/archives/libreoffice/2016-October/075464.html>
"concat of OUStringBuffer".  That feature was LIBO_INTERNAL_ONLY, anyway.  And
of the affected places, MethodDescriptor::getSignature
(codemaker/source/javamaker/javatype.cxx) was the only one that would actually
have benefitted.

Change-Id: Ib84266f43e40c42c2e428f0c0616db8cfa90adff
2016-10-12 16:05:32 +02:00
Stephan Bergmann
18cd08ae42 cid#1371162 etc.: Move semantics for cppumaker-generated UNO exception classes
For UNO ABI reasons, these classes need to be CPPU_GCC_DLLPUBLIC_EXPORT (so
their RTTI symbols get exported), so they are careful to explicitly declare any
special member functions that would otherwise be declared implicitly, to mark
them CPPU_GCC_DLLPRIVATE.  But for LIBO_INTERNAL_ONLY, we always use
-fvisibility-inlines-hidden (except for MSVC, where it doesn't matter, as
CPPU_GCC_DLLPRIVATE expands to nothing there, either), so can leave those
functions implicitly declared, so not to prevent move ctor and move assign op
from being implicitly declared.

This covers cid#s 1371143, 1371162, 1371185, 1371189, 1371290, and 1371308.

Change-Id: I468088750a02f85a4790d956c37f4c30de03f00c
2016-09-23 15:23:52 +02:00
Stephan Bergmann
91dd2db17b loplugin:override: No more need for the "MSVC dtor override" workaround
The issue of 362d4f0cd4 "Explicitly mark
overriding destructors as 'virtual'" appears to no longer be a problem with
MSVC 2013.

(The little change in the rewriting code of compilerplugins/clang/override.cxx
was necessary to prevent an endless loop when adding "override" to

  OOO_DLLPUBLIC_CHARTTOOLS    virtual ~CloseableLifeTimeManager();

in chart2/source/inc/LifeTime.hxx, getting stuck in the leading
OOO_DLLPUBLIC_CHARTTOOLS macro.  Can't remember what that
isAtEndOfImmediateMacroExpansion thing was originally necessary for, anyway.)

Change-Id: I534c634504d7216b9bb632c2775c04eaf27e927e
2016-09-13 13:19:22 +02:00