summaryrefslogtreecommitdiff
path: root/compilerplugins
AgeCommit message (Collapse)Author
2017-06-16Make SfxItemSet ranges correct by constructionStephan Bergmann
This is a follow-up to 45a7f5b62d0b1b21763c1c94255ef2309ea4280b "Keep WID ranges sorted, and join adjacent ones". While SfxItemSet::MergeRange relies on the m_pWhichRanges being sorted (and, under DBG_UTIL, asserts if they are not), the various SfxItemSet constructors curiously only check (via assert or DBG_ASSERT) that each individual range has an upper bound not smaller than its lower bound. Arguably, all SfxItemSet instances should fulfill the stronger guarantees required and checked by MergeRange. And in many cases the ranges are statically known, so that the checking can happen at compile time. Therefore, replace the two SfxItemSet ctors taking explicit ranges with two other ctors that actually do proper checking. The (templated) overload taking an svl::Items struct should be used in all cases where the range values are statically known at compile time, while the overload taking a std::initializer_list<Pair> is for the remaining cases (that can only do runtime checking via assert). Most of those latter cases are simple cases with a single range covering a single item, but a few are more complex. (At least some of the uses of the existing SfxItemSet overload taking a const sal_uInt16* pWhichPairTable can probably also be strengthened, but that is left for another day.) This commit is the first in a series of two. Apart from the manual changes to compilerplugins/clang/store/sfxitemsetrewrite.cxx, include/svl/itemset.hxx, and svl/source/items/itemset.cxx, it only consists of automatic rewriting of the relevant SfxItemSet ctor calls (plus a few required manual fixes, see next). But it does not yet check that the individual ranges are properly sorted (see the TODO in svl::detail::validGap). That check will be enabled, and the ensuing manual fixes will be made in a follow-up commit, to reduce the likelyhood of accidents. There were three cases of necessary manual intervention: * sw/source/core/unocore/unostyle.cxx uses eAtr of enum type RES_FRMATR in braced-init-list syntax now, so needs explicit narrowing conversion to sal_uInt16. * In sw/source/uibase/uiview/formatclipboard.cxx, the trailiing comma in the definition of macro FORMAT_PAINTBRUSH_FRAME_IDS needed to be removed manually. * In svx/source/svdraw/svdoashp.cxx, svx/source/svdraw/svdotext.cxx, sw/source/uibase/app/docstyle.cxx, sw/source/uibase/shells/frmsh.cxx, sw/source/uibase/shells/grfsh.cxx, and sw/source/uibase/shells/textsh1.cxx, some comments had to be put back (see "TODO: the replaced range can contain relevant comments" in compilerplugins/clang/store/sfxitemsetrewrite.cxx). A few uses of the variadic form erroneously used nullptr instead of 0 for termination. But this should have been harmless even if promoted std::nullptr_t is larger than promoted sal_uInt16, assuming that the part of the nullptr value that was interpreted as sal_uInt16/promoted int was all-zero bits. Similarly, some uses made the harmless error of using 0L instead of 0. Change-Id: I2afea97282803cb311b9321a99bb627520ef5e35 Reviewed-on: https://gerrit.libreoffice.org/38861 Reviewed-by: Stephan Bergmann <sbergman@redhat.com> Tested-by: Stephan Bergmann <sbergman@redhat.com>
2017-06-15improve unusedfields lopluginNoel Grandin
to ignore assignments when doing writeonly analysis Change-Id: I9eb6f2594003a610582dbc20acb7ccf14ef72c6c
2017-06-13Generalize loplugin:stringcopy to loplugin:redundantcopyStephan Bergmann
(such redundant std::unique_ptr copies could happen when changing parts of the code base to make use of std::unique_ptr individually) Change-Id: Ib48a45a212f9426a775c7f379bc5d3c92230218a
2017-06-08DbgCheckItemSet is goneStephan Bergmann
...since 87c9465262680dec09efb869800859aa65ab1d19 "Bin unused function DbgCheckItemSet" Change-Id: I109598dc5e087697d77b96a0ba2fb178d47b3aa6
2017-06-06getBody() can be null for a defaulted dtorStephan Bergmann
Not sure why that started to pop up only now, maybe something changed with recent Clang trunk. Change-Id: Ib6587b66afbf3e43d92c78432c0bfd61c74ba6c5
2017-06-06Avoid loplugin:unreffunStephan Bergmann
Change-Id: I75ea46f257046bb42b2bfad3a5bd4450868e0d69
2017-06-05Improved loplugin:cstylecast to reference typesStephan Bergmann
Change-Id: Ie95ab6d588cfe40cc9748ce526b80d06fe825da5
2017-06-05Improved loplugin:redundantcast, const/static_cast combinationsStephan Bergmann
Change-Id: I3b24327835cd4e1842ee6e9b87ab06efa25a4bbf
2017-06-05Reduce loplugin:redundantcast warnings about functional casts even futherStephan Bergmann
Change-Id: I8884e17c453831e048c43012ee176093c5b2f99e
2017-06-05Fix typosAndrea Gelmini
Change-Id: I9eb05432732a04e816946fbb13001df100a31f73 Reviewed-on: https://gerrit.libreoffice.org/38395 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2017-06-02Reduce loplugin:redundantcast warnings about functional casts even futherStephan Bergmann
Change-Id: Ieae9b5c9c7c6d9b8459e5d163f55d8f5024adfae
2017-06-02Improved loplugin:redundantcast const_cast handlingStephan Bergmann
Change-Id: I4c24ff5d9d5e74bef2a4040c6308c504282af55d
2017-06-02Reorganize testsStephan Bergmann
Change-Id: Ic3d9e55b2730a3ea01cc6c7c9fbdd80a1e653c7e
2017-06-02Make loplugin:redundantcast functional cast warnings more verboseStephan Bergmann
(useful when types involve typedefs) Change-Id: I93e8962fd4b9c4ef79990e057dfa07538380008c
2017-06-02Improved loplugin:redundantcast static_cast handlingStephan Bergmann
Change-Id: I74e4ebda40f95661c5ae344132fcabbbf08ab0a4
2017-06-01Improve suppression of loplugin:redundantcast in CPPUNIT_ASSERTStephan Bergmann
Change-Id: I65f95e7245f08592ea11cc75e1cf34dcbdf16b40
2017-06-01remove overly large loplugin result fileNoel Grandin
should not have been committed in the first place, was an accident Change-Id: Ie38cc77624bae5b3f9cc110085d0fe19b26c75c6
2017-06-01Fix typosAndrea Gelmini
Change-Id: Ic7fbd750321e4cfde1cfb0e04ffb545bb1f66d9c Reviewed-on: https://gerrit.libreoffice.org/37921 Reviewed-by: Julien Nabet <serval2412@yahoo.fr> Tested-by: Julien Nabet <serval2412@yahoo.fr>
2017-06-01Avoid "default initialization ... without ... default constructor" errorStephan Bergmann
Change-Id: Ic336b33bd747cd55955231cbe0b5a9d474adf3ab
2017-05-31Add some loplugin:redundantcast testsStephan Bergmann
Change-Id: I5c39a745b70655f92953ec785d01a3a52d9ec42b
2017-05-31The updated values of t1, t2 are unusedStephan Bergmann
...since f1bbda1c26dc16642038ea70288eec60b43520b6 "loplugin:cstylecast: deal with remaining pointer casts" Change-Id: Idecc702344c674e6f39051e4f8c2114017e317cb
2017-05-31DataRecursionQueue was only introduced in Clang 3.8Stephan Bergmann
(r253948 "Use data recursion in RecursiveASTVisitor when traversing Stmt and Expr nodes") Change-Id: I393474048ecbe0f6b7f19f00c2f830f495b2b6f0
2017-05-30Restrict loplugin:redundantcast to "real" castsStephan Bergmann
Change-Id: Ifc9de898e5c9a084cbfd739625c679185c3a1534
2017-05-30Traverse InitListExpr only onceStephan Bergmann
Arbitrarily chosing to traverse the semantic instead of the syntactic form. Change-Id: Id1b4e49421a5550bb2fa9f0d7e6f83bf7abb6ebb
2017-05-30Make loplugin:redundantcast accept bool(FD_ISSET(...)) againStephan Bergmann
Change-Id: I4e96c55c246cf806f17df31844a00d0e8a5e4f56
2017-05-30teach redundantcast plugin about functional castsNoel Grandin
Change-Id: Iac8ccd17d9e46ebb2cb55db7adb06c469bbd4ea0 Reviewed-on: https://gerrit.libreoffice.org/37910 Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk> Tested-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-05-25loplugin:constantparamNoel Grandin
add the results files so I can just see the diff in future Change-Id: Ia20a1aa6418be95ed620719cde340c00b7b053e1 Reviewed-on: https://gerrit.libreoffice.org/37988 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-05-24loplugin:unusedfieldsNoel Grandin
Change-Id: Ib91c6d23a1af3735d9c030eaf9efae817f513c58 Reviewed-on: https://gerrit.libreoffice.org/37982 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-05-23enhance useuniqueptr lopluginNoel Grandin
teach it to look for the following sequence in a destructor: delete m_pfoo; m_pfoo = nullptr; Change-Id: Icd6271a63a024e32b53cc9e599f8f59952160380 Reviewed-on: https://gerrit.libreoffice.org/37900 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-05-21Fix typosAndrea Gelmini
Change-Id: I438b6719817e0bbb47370ec54561eed2bc402cba Reviewed-on: https://gerrit.libreoffice.org/37783 Reviewed-by: Chris Sherlock <chris.sherlock79@gmail.com> Tested-by: Chris Sherlock <chris.sherlock79@gmail.com>
2017-05-19...and re-eanble loplugin:stringcopy againStephan Bergmann
<http://reviews.llvm.org/D22128> "Make CastExpr::getSubExprAsWritten look through implicit temporary under CK_ConstructorConversion" was biting me again. (I had originally developed loplugin:stringcopy against a Clang build that includes my local fix for that issue. I really need to see to get that resolved upstream...) (And while 957874168491f4b030fda85c65dd969aae82a670 "loplugin:stringcopy" was actually a false positive, it doesn't hurt either, so just keep it.) Change-Id: I726956adfbe67681005173cfdfed2e4b4cd6253d
2017-05-19Disable loplugin:stringcopy for nowStephan Bergmann
Some versions of Clang apparently have an issue with CastExpr::getSubExprAsWritten, causing false postivies as in 957874168491f4b030fda85c65dd969aae82a670 "loplugin:stringcopy", where getSubExprAsWritten in > CXXFunctionalCastExpr 0x114a333a8 'class rtl::OUString' functional cast to class rtl::OUString <ConstructorConversion> > `-CXXBindTemporaryExpr 0x114a33388 'class rtl::OUString' (CXXTemporary 0x114a33380) > `-CXXConstructExpr 0x114a33348 'class rtl::OUString' 'void (class rtl::OUString &&)' elidable > `-MaterializeTemporaryExpr 0x114a33330 'class rtl::OUString' xvalue > `-CXXBindTemporaryExpr 0x114a33310 'class rtl::OUString' (CXXTemporary 0x114a33308) > `-ImplicitCastExpr 0x114a332f0 'class rtl::OUString' <UserDefinedConversion> > `-CXXMemberCallExpr 0x114a332c8 'class rtl::OUString' > `-MemberExpr 0x114a33290 '<bound member function type>' .operator OUString 0x1149b3b60 > `-DeclRefExpr 0x114a324b8 'class jfw::CXmlCharPtr' lvalue Var 0x114a31ce0 'sUser' 'class jfw::CXmlCharPtr' erroneously returns the MaterializeTemporaryExpr instead of looking through all the way down to the DeclRefExpr. Will need further investigation. Change-Id: I579cd6047b8bbf8833123ce5ad47ae7e3a33eb12
2017-05-19loplugin:stringcopyStephan Bergmann
Change-Id: Ib04ef019996888166c25ad140b7c718a173a782a
2017-05-19loplugin:unusedfieldsNoel Grandin
make it a little smarter in dealing with fields that are smart pointers Change-Id: I44072105170882dc29fb19558f1065cffc7e5f11 Reviewed-on: https://gerrit.libreoffice.org/37751 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-05-18Remove unnecessary restrictionsStephan Bergmann
Change-Id: Idc0db273f7ad2d6b11113752ca01a1f2a327e991
2017-05-18Rewrite in macro argumentsStephan Bergmann
Change-Id: I6ae619edac26fe06d1f86f139b7cf71ce31146d4
2017-05-18Avoid nested automatic rewritesStephan Bergmann
...which would come out garbled. One place is > bool bRet = SfxItemState::SET == pSet->GetItemState( i, rAttr.Which() != RES_TXTATR_AUTOFMT, &pItem ); in SwAttrHandler::PushAndChg (sw/source/core/text/atrstck.cxx) Change-Id: I1486313b25850dc59e10edb38b8bd28a30e6aa63
2017-05-18Refuse to rewrite in workdirStephan Bergmann
...instead of merely getting a warning from PluginHandler::HandleTranslationUnit after the fact. Such automatic rewriting should probably never be what one wants. Change-Id: I3829007224a197ebb4d55d24323b375cbbdf815c
2017-05-18Adapt pathname checks to mixed usage of \ and / on WindowsStephan Bergmann
Change-Id: I91bc89a9076c6642e06b238f65f2d31a1d20c6b5
2017-05-18loplugin:unusedmethodsNoel Grandin
Change-Id: I1c50d176e793397a1f9625f797a3750cf191a61c Reviewed-on: https://gerrit.libreoffice.org/37679 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-05-17Remove unused varStephan Bergmann
Change-Id: I187df1a6f5bf5d870820f60c6dca1ac3beb8cf22
2017-05-16Remove unused varStephan Bergmann
Change-Id: Id0266ad01eaabf2d9555e99f4a4c1c2300bb8be7
2017-05-16Extend loplugin:comparisonwithconstant beyond integral typesStephan Bergmann
Change-Id: Id3a8fd5d8b9975d3ae49af0648b39454310495fa
2017-05-16Try to fix loplugin:comparisonwithconstant's rewrite-with-macros issueStephan Bergmann
...that had plagued 2e293a731c1559c9869dfcb32491bc600fc18e4e "new loplugin/rewriter comparisonwithconstant" (in sal/osl/unx/pipe.cxx), and auto-rewrite the remaining occurrences in sal (that the mentioned commit had failed to address, for whatever reason) Change-Id: I3dc3bae8dd92ba8bf576f6e06e7c9ee21f883661
2017-05-16loplugin:comparisonwithconstant in accessibilityNoel Grandin
Change-Id: I934c78ec8daec656ca656d5c784f80895abfd2e4 Reviewed-on: https://gerrit.libreoffice.org/37666 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-05-16Also filter out flags like -fsanitize-address-globals-dead-strippingStephan Bergmann
...to avoid -Werror,-Wunused-command-line-argument in case some ASan build setting passes in such flags Change-Id: Ia613a10e3564a23715019ee0c7c755cdcbf7a47c
2017-05-16tighten up the check a little moreNoel Grandin
Change-Id: Ic19364d2daa064a20da0ed9d9641f1646d8f6ce3
2017-05-16loplugin:unusedfields improve write-only analysisNoel Grandin
by whitelisting a couple of methods we know only write to their parameters Change-Id: Id7aef9c03c23d10c27707b21eb9a0db4a6c2757c Reviewed-on: https://gerrit.libreoffice.org/37647 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-05-15loplugin:useuniqueptrNoel Grandin
ignore SAL_LOG type stuff in the destructor Change-Id: If014382ca0c96edd3f2b325a28451d83b3d1f278 Reviewed-on: https://gerrit.libreoffice.org/37539 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-05-12loplugin:constantparamNoel Grandin
Change-Id: I67d74072c776c32a1f91df94c621efe180baf5dc Reviewed-on: https://gerrit.libreoffice.org/37481 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>