compilerplugins/clang/redundantcast.cxx | 1 compilerplugins/clang/test/redundantcast.cxx | 24 ++++++++ sc/qa/unit/bugfix-test.cxx | 48 +++++------------ sd/qa/unit/export-tests-ooxml1.cxx | 3 - sd/qa/unit/export-tests-ooxml3.cxx | 6 -- sd/qa/unit/import-tests.cxx | 54 ++++++------------- sd/qa/unit/import-tests2.cxx | 74 +++++++++------------------ sw/source/core/txtnode/ndtxt.cxx | 12 ++-- sw/source/core/unocore/unodraw.cxx | 5 - sw/source/filter/ww8/wrtw8sty.cxx | 2 sw/source/uibase/shells/textsh1.cxx | 2 sw/source/uibase/uno/unotxdoc.cxx | 12 ++-- 12 files changed, 103 insertions(+), 140 deletions(-)
New commits: commit 7255d21f812b7333c83b4548e2b5b102adb606a9 Author: Stephan Bergmann <sberg...@redhat.com> AuthorDate: Wed Nov 23 07:37:33 2022 +0100 Commit: Stephan Bergmann <sberg...@redhat.com> CommitDate: Wed Nov 23 08:48:46 2022 +0100 Fix loplugin:redundantcast check for same-type dynamic_cast ...when the target type is a reference type and the source and target type have different cv qualifiers. (And fix the fallout. And make the tests cover that somewhat more exhaustively; and while at it also test that the plugin can cope with dynamic_cast to void pointers, which is the only legitimate case where a dynamic_cast can involve types that are not (pointers or references to) non-class types.) Change-Id: Ia568ddb5dbc4a84c275db172791c345d95964857 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/143133 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sberg...@redhat.com> diff --git a/compilerplugins/clang/redundantcast.cxx b/compilerplugins/clang/redundantcast.cxx index 984b5f003108..80485e0e9bd6 100644 --- a/compilerplugins/clang/redundantcast.cxx +++ b/compilerplugins/clang/redundantcast.cxx @@ -901,6 +901,7 @@ bool RedundantCast::VisitCXXDynamicCastExpr(CXXDynamicCastExpr const * expr) { { // casting from 'T&' to 'const T&' is redundant, so compare without the qualifiers qt1 = qt1->getPointeeType().getUnqualifiedType(); + qt2 = qt2.getUnqualifiedType(); if (qt1 == qt2) { report( diff --git a/compilerplugins/clang/test/redundantcast.cxx b/compilerplugins/clang/test/redundantcast.cxx index 228ccfc25dc2..0c1087ab32af 100644 --- a/compilerplugins/clang/test/redundantcast.cxx +++ b/compilerplugins/clang/test/redundantcast.cxx @@ -356,13 +356,37 @@ void testDynamicCast() { S2 * s2 = nullptr; S3 * s3 = nullptr; + (void) dynamic_cast<void *>(s1); + (void) dynamic_cast<void const *>(s1); (void) dynamic_cast<S2 *>(s1); + (void) dynamic_cast<S2 &>(*s1); (void) dynamic_cast<S1 *>(s2); // expected-error {{redundant dynamic upcast from 'S2 *' to 'S1 *' [loplugin:redundantcast]}} + (void) dynamic_cast<S1 &>(*s2); // expected-error {{redundant dynamic upcast from 'S2' to 'S1 &' [loplugin:redundantcast]}} (void) dynamic_cast<S2 *>(s2); // expected-error {{redundant dynamic cast from 'S2 *' to 'S2 *' [loplugin:redundantcast]}} + (void) dynamic_cast<S2 &>(*s2); // expected-error {{redundant dynamic cast from 'S2' to 'S2 &' [loplugin:redundantcast]}} (void) dynamic_cast<S3 *>(s2); + (void) dynamic_cast<S3 &>(*s2); (void) dynamic_cast<const S2 *>(s2); // expected-error {{redundant dynamic cast from 'S2 *' to 'const S2 *' [loplugin:redundantcast]}} + (void) dynamic_cast<const S2 &>(*s2); // expected-error {{redundant dynamic cast from 'S2' to 'const S2 &' [loplugin:redundantcast]}} (void) dynamic_cast<S1 *>(s3); // expected-error {{redundant dynamic upcast from 'S3 *' to 'S1 *' [loplugin:redundantcast]}} (void) dynamic_cast<S1&>(*s3); // expected-error {{redundant dynamic upcast from 'S3' to 'S1 &' [loplugin:redundantcast]}} + + S1 const * c1 = nullptr; + S2 const * c2 = nullptr; + S3 const * c3 = nullptr; + + (void) dynamic_cast<void const *>(c1); + (void) dynamic_cast<S2 const *>(c1); + (void) dynamic_cast<S2 const &>(*c1); + (void) dynamic_cast<S1 const *>(c2); // expected-error {{redundant dynamic upcast from 'const S2 *' to 'const S1 *' [loplugin:redundantcast]}} + (void) dynamic_cast<S1 const &>(*c2); // expected-error {{redundant dynamic upcast from 'const S2' to 'const S1 &' [loplugin:redundantcast]}} + + (void) dynamic_cast<S2 const *>(c2); // expected-error {{redundant dynamic cast from 'const S2 *' to 'const S2 *' [loplugin:redundantcast]}} + (void) dynamic_cast<S2 const &>(*c2); // expected-error {{redundant dynamic cast from 'const S2' to 'const S2 &' [loplugin:redundantcast]}} + (void) dynamic_cast<S3 const *>(c2); + (void) dynamic_cast<S3 const &>(*c2); + (void) dynamic_cast<S1 const *>(c3); // expected-error {{redundant dynamic upcast from 'const S3 *' to 'const S1 *' [loplugin:redundantcast]}} + (void) dynamic_cast<S1 const&>(*c3); // expected-error {{redundant dynamic upcast from 'const S3' to 'const S1 &' [loplugin:redundantcast]}} } void overload(int); diff --git a/sc/qa/unit/bugfix-test.cxx b/sc/qa/unit/bugfix-test.cxx index 7a5e4e2b73b4..fb8137d4099b 100644 --- a/sc/qa/unit/bugfix-test.cxx +++ b/sc/qa/unit/bugfix-test.cxx @@ -547,15 +547,13 @@ void ScFiltersTest::testTdf129789() // Fill: None SdrCaptionObj* const pCaptionB2 = checkCaption(*pDoc, ScAddress(1, 1, 0), true); - const XFillStyleItem& rStyleItemB2 - = dynamic_cast<const XFillStyleItem&>(pCaptionB2->GetMergedItem(XATTR_FILLSTYLE)); + const XFillStyleItem& rStyleItemB2 = pCaptionB2->GetMergedItem(XATTR_FILLSTYLE); CPPUNIT_ASSERT_EQUAL(drawing::FillStyle_NONE, rStyleItemB2.GetValue()); SdrCaptionObj* const pCaptionB9 = checkCaption(*pDoc, ScAddress(1, 8, 0), false); - const XFillStyleItem& rStyleItemB9 - = dynamic_cast<const XFillStyleItem&>(pCaptionB9->GetMergedItem(XATTR_FILLSTYLE)); + const XFillStyleItem& rStyleItemB9 = pCaptionB9->GetMergedItem(XATTR_FILLSTYLE); CPPUNIT_ASSERT_EQUAL(drawing::FillStyle_NONE, rStyleItemB9.GetValue()); } @@ -564,24 +562,20 @@ void ScFiltersTest::testTdf129789() // Fill: Solid SdrCaptionObj* const pCaptionE2 = checkCaption(*pDoc, ScAddress(4, 1, 0), true); - const XFillStyleItem& rStyleItemE2 - = dynamic_cast<const XFillStyleItem&>(pCaptionE2->GetMergedItem(XATTR_FILLSTYLE)); + const XFillStyleItem& rStyleItemE2 = pCaptionE2->GetMergedItem(XATTR_FILLSTYLE); CPPUNIT_ASSERT_EQUAL(drawing::FillStyle_SOLID, rStyleItemE2.GetValue()); - const XFillColorItem& rColorItem - = dynamic_cast<const XFillColorItem&>(pCaptionE2->GetMergedItem(XATTR_FILLCOLOR)); + const XFillColorItem& rColorItem = pCaptionE2->GetMergedItem(XATTR_FILLCOLOR); CPPUNIT_ASSERT_EQUAL(Color(0xffffc0), rColorItem.GetColorValue()); SdrCaptionObj* const pCaptionE9 = checkCaption(*pDoc, ScAddress(4, 8, 0), false); - const XFillStyleItem& rStyleItemE9 - = dynamic_cast<const XFillStyleItem&>(pCaptionE9->GetMergedItem(XATTR_FILLSTYLE)); + const XFillStyleItem& rStyleItemE9 = pCaptionE9->GetMergedItem(XATTR_FILLSTYLE); CPPUNIT_ASSERT_EQUAL(drawing::FillStyle_SOLID, rStyleItemE9.GetValue()); - const XFillColorItem& rColorItem2 - = dynamic_cast<const XFillColorItem&>(pCaptionE9->GetMergedItem(XATTR_FILLCOLOR)); + const XFillColorItem& rColorItem2 = pCaptionE9->GetMergedItem(XATTR_FILLCOLOR); CPPUNIT_ASSERT_EQUAL(Color(0xffffc0), rColorItem2.GetColorValue()); } @@ -589,23 +583,19 @@ void ScFiltersTest::testTdf129789() // Fill: Gradient SdrCaptionObj* const pCaptionH2 = checkCaption(*pDoc, ScAddress(7, 1, 0), true); - const XFillStyleItem& rStyleItemH2 - = dynamic_cast<const XFillStyleItem&>(pCaptionH2->GetMergedItem(XATTR_FILLSTYLE)); + const XFillStyleItem& rStyleItemH2 = pCaptionH2->GetMergedItem(XATTR_FILLSTYLE); CPPUNIT_ASSERT_EQUAL(drawing::FillStyle_GRADIENT, rStyleItemH2.GetValue()); - const XFillGradientItem& rGradientItem - = dynamic_cast<const XFillGradientItem&>(pCaptionH2->GetMergedItem(XATTR_FILLGRADIENT)); + const XFillGradientItem& rGradientItem = pCaptionH2->GetMergedItem(XATTR_FILLGRADIENT); CPPUNIT_ASSERT_EQUAL(Color(0xdde8cb), rGradientItem.GetGradientValue().GetStartColor()); CPPUNIT_ASSERT_EQUAL(Color(0xffd7d7), rGradientItem.GetGradientValue().GetEndColor()); SdrCaptionObj* const pCaptionH9 = checkCaption(*pDoc, ScAddress(7, 8, 0), false); - const XFillStyleItem& rStyleItemH9 - = dynamic_cast<const XFillStyleItem&>(pCaptionH9->GetMergedItem(XATTR_FILLSTYLE)); + const XFillStyleItem& rStyleItemH9 = pCaptionH9->GetMergedItem(XATTR_FILLSTYLE); CPPUNIT_ASSERT_EQUAL(drawing::FillStyle_GRADIENT, rStyleItemH9.GetValue()); - const XFillGradientItem& rGradientItem2 - = dynamic_cast<const XFillGradientItem&>(pCaptionH2->GetMergedItem(XATTR_FILLGRADIENT)); + const XFillGradientItem& rGradientItem2 = pCaptionH2->GetMergedItem(XATTR_FILLGRADIENT); CPPUNIT_ASSERT_EQUAL(Color(0xdde8cb), rGradientItem2.GetGradientValue().GetStartColor()); CPPUNIT_ASSERT_EQUAL(Color(0xffd7d7), rGradientItem2.GetGradientValue().GetEndColor()); } @@ -614,22 +604,18 @@ void ScFiltersTest::testTdf129789() // Fill: Hatch SdrCaptionObj* const pCaptionK2 = checkCaption(*pDoc, ScAddress(10, 1, 0), true); - const XFillStyleItem& rStyleItemK2 - = dynamic_cast<const XFillStyleItem&>(pCaptionK2->GetMergedItem(XATTR_FILLSTYLE)); + const XFillStyleItem& rStyleItemK2 = pCaptionK2->GetMergedItem(XATTR_FILLSTYLE); CPPUNIT_ASSERT_EQUAL(drawing::FillStyle_HATCH, rStyleItemK2.GetValue()); - const XFillHatchItem& rHatchItem - = dynamic_cast<const XFillHatchItem&>(pCaptionK2->GetMergedItem(XATTR_FILLHATCH)); + const XFillHatchItem& rHatchItem = pCaptionK2->GetMergedItem(XATTR_FILLHATCH); CPPUNIT_ASSERT_EQUAL(Color(0x000080), rHatchItem.GetHatchValue().GetColor()); SdrCaptionObj* const pCaptionK9 = checkCaption(*pDoc, ScAddress(10, 8, 0), false); - const XFillStyleItem& rStyleItemK9 - = dynamic_cast<const XFillStyleItem&>(pCaptionK9->GetMergedItem(XATTR_FILLSTYLE)); + const XFillStyleItem& rStyleItemK9 = pCaptionK9->GetMergedItem(XATTR_FILLSTYLE); CPPUNIT_ASSERT_EQUAL(drawing::FillStyle_HATCH, rStyleItemK9.GetValue()); - const XFillHatchItem& rHatchItem2 - = dynamic_cast<const XFillHatchItem&>(pCaptionK9->GetMergedItem(XATTR_FILLHATCH)); + const XFillHatchItem& rHatchItem2 = pCaptionK9->GetMergedItem(XATTR_FILLHATCH); CPPUNIT_ASSERT_EQUAL(Color(0x000080), rHatchItem2.GetHatchValue().GetColor()); } @@ -637,15 +623,13 @@ void ScFiltersTest::testTdf129789() // Fill: Bitmap SdrCaptionObj* const pCaptionN2 = checkCaption(*pDoc, ScAddress(13, 1, 0), true); - const XFillStyleItem& rStyleItemN2 - = dynamic_cast<const XFillStyleItem&>(pCaptionN2->GetMergedItem(XATTR_FILLSTYLE)); + const XFillStyleItem& rStyleItemN2 = pCaptionN2->GetMergedItem(XATTR_FILLSTYLE); CPPUNIT_ASSERT_EQUAL(drawing::FillStyle_BITMAP, rStyleItemN2.GetValue()); SdrCaptionObj* const pCaptionN9 = checkCaption(*pDoc, ScAddress(13, 8, 0), false); - const XFillStyleItem& rStyleItemN9 - = dynamic_cast<const XFillStyleItem&>(pCaptionN9->GetMergedItem(XATTR_FILLSTYLE)); + const XFillStyleItem& rStyleItemN9 = pCaptionN9->GetMergedItem(XATTR_FILLSTYLE); CPPUNIT_ASSERT_EQUAL(drawing::FillStyle_BITMAP, rStyleItemN9.GetValue()); } diff --git a/sd/qa/unit/export-tests-ooxml1.cxx b/sd/qa/unit/export-tests-ooxml1.cxx index 866cd331dc68..4d764eede9ce 100644 --- a/sd/qa/unit/export-tests-ooxml1.cxx +++ b/sd/qa/unit/export-tests-ooxml1.cxx @@ -984,8 +984,7 @@ void SdOOXMLExportTest1::testLineStyle() SdrObject const* pShape = pPage->GetObj(0); CPPUNIT_ASSERT_MESSAGE("no shape", pShape != nullptr); - const XLineStyleItem& rStyleItem - = dynamic_cast<const XLineStyleItem&>(pShape->GetMergedItem(XATTR_LINESTYLE)); + const XLineStyleItem& rStyleItem = pShape->GetMergedItem(XATTR_LINESTYLE); CPPUNIT_ASSERT_EQUAL_MESSAGE("Wrong style", int(drawing::LineStyle_SOLID), static_cast<int>(rStyleItem.GetValue())); } diff --git a/sd/qa/unit/export-tests-ooxml3.cxx b/sd/qa/unit/export-tests-ooxml3.cxx index d8eedf381ddc..90cf168be5a3 100644 --- a/sd/qa/unit/export-tests-ooxml3.cxx +++ b/sd/qa/unit/export-tests-ooxml3.cxx @@ -1376,10 +1376,8 @@ void SdOOXMLExportTest3::testTdf126741() SdrObject* const pObj = pPage->GetObj(0); CPPUNIT_ASSERT(pObj); - const XLineStyleItem& rStyleItem - = dynamic_cast<const XLineStyleItem&>(pObj->GetMergedItem(XATTR_LINESTYLE)); - const XLineDashItem& rDashItem - = dynamic_cast<const XLineDashItem&>(pObj->GetMergedItem(XATTR_LINEDASH)); + const XLineStyleItem& rStyleItem = pObj->GetMergedItem(XATTR_LINESTYLE); + const XLineDashItem& rDashItem = pObj->GetMergedItem(XATTR_LINEDASH); CPPUNIT_ASSERT_EQUAL(drawing::LineStyle_DASH, rStyleItem.GetValue()); CPPUNIT_ASSERT_EQUAL(sal_uInt16(1), rDashItem.GetDashValue().GetDots()); diff --git a/sd/qa/unit/import-tests.cxx b/sd/qa/unit/import-tests.cxx index 34523fa136cd..43504ce94b8e 100644 --- a/sd/qa/unit/import-tests.cxx +++ b/sd/qa/unit/import-tests.cxx @@ -1093,11 +1093,9 @@ void SdImportTest::testFdo77027() CPPUNIT_ASSERT(pObj); // check that the fill style/color was actually imported - const XFillStyleItem& rStyleItem - = dynamic_cast<const XFillStyleItem&>(pObj->GetMergedItem(XATTR_FILLSTYLE)); + const XFillStyleItem& rStyleItem = pObj->GetMergedItem(XATTR_FILLSTYLE); CPPUNIT_ASSERT_EQUAL(drawing::FillStyle_SOLID, rStyleItem.GetValue()); - const XFillColorItem& rColorItem - = dynamic_cast<const XFillColorItem&>(pObj->GetMergedItem(XATTR_FILLCOLOR)); + const XFillColorItem& rColorItem = pObj->GetMergedItem(XATTR_FILLCOLOR); CPPUNIT_ASSERT_EQUAL(Color(0xff6600), rColorItem.GetColorValue()); } } @@ -1136,8 +1134,7 @@ void SdImportTest::testFillStyleNone() const SdrPage* pPage = GetPage(1); const SdrObject* pObj = pPage->GetObj(0); - auto& rFillStyleItem - = dynamic_cast<const XFillStyleItem&>(pObj->GetMergedItem(XATTR_FILLSTYLE)); + auto& rFillStyleItem = pObj->GetMergedItem(XATTR_FILLSTYLE); // Without the accompanying fix in place, this test would have failed with 'Expected: 0; Actual: // 1', i.e. the shape's fill was FillStyle_SOLID, making the text of the shape unreadable. CPPUNIT_ASSERT_EQUAL(drawing::FillStyle_NONE, rFillStyleItem.GetValue()); @@ -1444,11 +1441,9 @@ void SdImportTest::testBnc904423() SdrObject* const pObj = pPage->GetObj(0); CPPUNIT_ASSERT(pObj); - const XFillStyleItem& rStyleItem - = dynamic_cast<const XFillStyleItem&>(pObj->GetMergedItem(XATTR_FILLSTYLE)); + const XFillStyleItem& rStyleItem = pObj->GetMergedItem(XATTR_FILLSTYLE); CPPUNIT_ASSERT_EQUAL(drawing::FillStyle_SOLID, rStyleItem.GetValue()); - const XFillColorItem& rColorItem - = dynamic_cast<const XFillColorItem&>(pObj->GetMergedItem(XATTR_FILLCOLOR)); + const XFillColorItem& rColorItem = pObj->GetMergedItem(XATTR_FILLCOLOR); CPPUNIT_ASSERT_EQUAL(Color(0x00CC99), rColorItem.GetColorValue()); } @@ -1457,11 +1452,9 @@ void SdImportTest::testBnc904423() SdrObject* const pObj = pPage->GetObj(1); CPPUNIT_ASSERT(pObj); - const XFillStyleItem& rStyleItem - = dynamic_cast<const XFillStyleItem&>(pObj->GetMergedItem(XATTR_FILLSTYLE)); + const XFillStyleItem& rStyleItem = pObj->GetMergedItem(XATTR_FILLSTYLE); CPPUNIT_ASSERT_EQUAL(drawing::FillStyle_SOLID, rStyleItem.GetValue()); - const XFillColorItem& rColorItem - = dynamic_cast<const XFillColorItem&>(pObj->GetMergedItem(XATTR_FILLCOLOR)); + const XFillColorItem& rColorItem = pObj->GetMergedItem(XATTR_FILLCOLOR); CPPUNIT_ASSERT_EQUAL(Color(0x3333CC), rColorItem.GetColorValue()); } @@ -1470,11 +1463,9 @@ void SdImportTest::testBnc904423() SdrObject* const pObj = pPage->GetObj(2); CPPUNIT_ASSERT(pObj); - const XFillStyleItem& rStyleItem - = dynamic_cast<const XFillStyleItem&>(pObj->GetMergedItem(XATTR_FILLSTYLE)); + const XFillStyleItem& rStyleItem = pObj->GetMergedItem(XATTR_FILLSTYLE); CPPUNIT_ASSERT_EQUAL(drawing::FillStyle_SOLID, rStyleItem.GetValue()); - const XFillColorItem& rColorItem - = dynamic_cast<const XFillColorItem&>(pObj->GetMergedItem(XATTR_FILLCOLOR)); + const XFillColorItem& rColorItem = pObj->GetMergedItem(XATTR_FILLCOLOR); CPPUNIT_ASSERT_EQUAL(Color(0xFF0000), rColorItem.GetColorValue()); } } @@ -1491,16 +1482,13 @@ void SdImportTest::testShapeLineStyle() SdrObject* const pObj = pPage->GetObj(0); CPPUNIT_ASSERT(pObj); - const XLineStyleItem& rStyleItem - = dynamic_cast<const XLineStyleItem&>(pObj->GetMergedItem(XATTR_LINESTYLE)); + const XLineStyleItem& rStyleItem = pObj->GetMergedItem(XATTR_LINESTYLE); CPPUNIT_ASSERT_EQUAL(drawing::LineStyle_DASH, rStyleItem.GetValue()); - const XLineColorItem& rColorItem - = dynamic_cast<const XLineColorItem&>(pObj->GetMergedItem(XATTR_LINECOLOR)); + const XLineColorItem& rColorItem = pObj->GetMergedItem(XATTR_LINECOLOR); CPPUNIT_ASSERT_EQUAL(Color(0xFF0000), rColorItem.GetColorValue()); - const XLineWidthItem& rWidthItem - = dynamic_cast<const XLineWidthItem&>(pObj->GetMergedItem(XATTR_LINEWIDTH)); + const XLineWidthItem& rWidthItem = pObj->GetMergedItem(XATTR_LINEWIDTH); CPPUNIT_ASSERT_EQUAL(sal_Int32(132), rWidthItem.GetValue()); } @@ -1509,16 +1497,13 @@ void SdImportTest::testShapeLineStyle() SdrObject* const pObj = pPage->GetObj(1); CPPUNIT_ASSERT(pObj); - const XLineStyleItem& rStyleItem - = dynamic_cast<const XLineStyleItem&>(pObj->GetMergedItem(XATTR_LINESTYLE)); + const XLineStyleItem& rStyleItem = pObj->GetMergedItem(XATTR_LINESTYLE); CPPUNIT_ASSERT_EQUAL(drawing::LineStyle_SOLID, rStyleItem.GetValue()); - const XLineColorItem& rColorItem - = dynamic_cast<const XLineColorItem&>(pObj->GetMergedItem(XATTR_LINECOLOR)); + const XLineColorItem& rColorItem = pObj->GetMergedItem(XATTR_LINECOLOR); CPPUNIT_ASSERT_EQUAL(Color(0x3333CC), rColorItem.GetColorValue()); - const XLineWidthItem& rWidthItem - = dynamic_cast<const XLineWidthItem&>(pObj->GetMergedItem(XATTR_LINEWIDTH)); + const XLineWidthItem& rWidthItem = pObj->GetMergedItem(XATTR_LINEWIDTH); CPPUNIT_ASSERT_EQUAL(sal_Int32(35), rWidthItem.GetValue()); } @@ -1527,16 +1512,13 @@ void SdImportTest::testShapeLineStyle() SdrObject* const pObj = pPage->GetObj(2); CPPUNIT_ASSERT(pObj); - const XLineStyleItem& rStyleItem - = dynamic_cast<const XLineStyleItem&>(pObj->GetMergedItem(XATTR_LINESTYLE)); + const XLineStyleItem& rStyleItem = pObj->GetMergedItem(XATTR_LINESTYLE); CPPUNIT_ASSERT_EQUAL(drawing::LineStyle_SOLID, rStyleItem.GetValue()); - const XLineColorItem& rColorItem - = dynamic_cast<const XLineColorItem&>(pObj->GetMergedItem(XATTR_LINECOLOR)); + const XLineColorItem& rColorItem = pObj->GetMergedItem(XATTR_LINECOLOR); CPPUNIT_ASSERT_EQUAL(Color(0x7030A0), rColorItem.GetColorValue()); - const XLineWidthItem& rWidthItem - = dynamic_cast<const XLineWidthItem&>(pObj->GetMergedItem(XATTR_LINEWIDTH)); + const XLineWidthItem& rWidthItem = pObj->GetMergedItem(XATTR_LINEWIDTH); CPPUNIT_ASSERT_EQUAL(sal_Int32(176), rWidthItem.GetValue()); } } diff --git a/sd/qa/unit/import-tests2.cxx b/sd/qa/unit/import-tests2.cxx index eea2179e15c3..315ff8bba4a2 100644 --- a/sd/qa/unit/import-tests2.cxx +++ b/sd/qa/unit/import-tests2.cxx @@ -233,18 +233,13 @@ void SdImportTest2::testTdf93868() const SdrPage* pPage = &(GetPage(1)->TRG_GetMasterPage()); CPPUNIT_ASSERT_EQUAL(size_t(5), pPage->GetObjCount()); - CPPUNIT_ASSERT_EQUAL( - drawing::FillStyle_SOLID, - dynamic_cast<const XFillStyleItem&>(pPage->GetObj(0)->GetMergedItem(XATTR_FILLSTYLE)) - .GetValue()); + CPPUNIT_ASSERT_EQUAL(drawing::FillStyle_SOLID, + pPage->GetObj(0)->GetMergedItem(XATTR_FILLSTYLE).GetValue()); - CPPUNIT_ASSERT_EQUAL( - drawing::FillStyle_NONE, - dynamic_cast<const XFillStyleItem&>(pPage->GetObj(1)->GetMergedItem(XATTR_FILLSTYLE)) - .GetValue()); - CPPUNIT_ASSERT_EQUAL(true, dynamic_cast<const XFillUseSlideBackgroundItem&>( - pPage->GetObj(1)->GetMergedItem(XATTR_FILLUSESLIDEBACKGROUND)) - .GetValue()); + CPPUNIT_ASSERT_EQUAL(drawing::FillStyle_NONE, + pPage->GetObj(1)->GetMergedItem(XATTR_FILLSTYLE).GetValue()); + CPPUNIT_ASSERT_EQUAL(true, + pPage->GetObj(1)->GetMergedItem(XATTR_FILLUSESLIDEBACKGROUND).GetValue()); } void SdImportTest2::testTdf95932() @@ -255,11 +250,9 @@ void SdImportTest2::testTdf95932() SdrObject* const pObj = pPage->GetObj(1); CPPUNIT_ASSERT(pObj); - const XFillStyleItem& rStyleItem - = dynamic_cast<const XFillStyleItem&>(pObj->GetMergedItem(XATTR_FILLSTYLE)); + const XFillStyleItem& rStyleItem = pObj->GetMergedItem(XATTR_FILLSTYLE); CPPUNIT_ASSERT_EQUAL(drawing::FillStyle_SOLID, rStyleItem.GetValue()); - const XFillColorItem& rColorItem - = dynamic_cast<const XFillColorItem&>(pObj->GetMergedItem(XATTR_FILLCOLOR)); + const XFillColorItem& rColorItem = pObj->GetMergedItem(XATTR_FILLCOLOR); CPPUNIT_ASSERT_EQUAL(Color(0x76bf3d), rColorItem.GetColorValue()); } @@ -630,27 +623,22 @@ void SdImportTest2::testTdf104015() CPPUNIT_ASSERT_MESSAGE("Wrong object", pObj != nullptr); // Should have a red fill color { - const XFillStyleItem& rStyleItem - = dynamic_cast<const XFillStyleItem&>(pObj->GetMergedItem(XATTR_FILLSTYLE)); + const XFillStyleItem& rStyleItem = pObj->GetMergedItem(XATTR_FILLSTYLE); CPPUNIT_ASSERT_EQUAL(drawing::FillStyle_SOLID, rStyleItem.GetValue()); - const XFillColorItem& rColorItem - = dynamic_cast<const XFillColorItem&>(pObj->GetMergedItem(XATTR_FILLCOLOR)); + const XFillColorItem& rColorItem = pObj->GetMergedItem(XATTR_FILLCOLOR); CPPUNIT_ASSERT_EQUAL(Color(0xFF0000), rColorItem.GetColorValue()); } // Should have a blue line { - const XLineStyleItem& rStyleItem - = dynamic_cast<const XLineStyleItem&>(pObj->GetMergedItem(XATTR_LINESTYLE)); + const XLineStyleItem& rStyleItem = pObj->GetMergedItem(XATTR_LINESTYLE); CPPUNIT_ASSERT_EQUAL(drawing::LineStyle_SOLID, rStyleItem.GetValue()); - const XLineColorItem& rColorItem - = dynamic_cast<const XLineColorItem&>(pObj->GetMergedItem(XATTR_LINECOLOR)); + const XLineColorItem& rColorItem = pObj->GetMergedItem(XATTR_LINECOLOR); CPPUNIT_ASSERT_EQUAL(Color(0x0000FF), rColorItem.GetColorValue()); } // Should have some shadow { - const SdrOnOffItem& rShadowItem - = dynamic_cast<const SdrOnOffItem&>(pObj->GetMergedItem(SDRATTR_SHADOW)); + const SdrOnOffItem& rShadowItem = pObj->GetMergedItem(SDRATTR_SHADOW); CPPUNIT_ASSERT(rShadowItem.GetValue()); } } @@ -668,22 +656,18 @@ void SdImportTest2::testTdf104201() { SdrObject* const pObj = pPage->GetObj(0); CPPUNIT_ASSERT_MESSAGE("Wrong object", pObj != nullptr); - const XFillStyleItem& rStyleItem - = dynamic_cast<const XFillStyleItem&>(pObj->GetMergedItem(XATTR_FILLSTYLE)); + const XFillStyleItem& rStyleItem = pObj->GetMergedItem(XATTR_FILLSTYLE); CPPUNIT_ASSERT_EQUAL(drawing::FillStyle_SOLID, rStyleItem.GetValue()); - const XFillColorItem& rColorItem - = dynamic_cast<const XFillColorItem&>(pObj->GetMergedItem(XATTR_FILLCOLOR)); + const XFillColorItem& rColorItem = pObj->GetMergedItem(XATTR_FILLCOLOR); CPPUNIT_ASSERT_EQUAL(Color(0x00FF00), rColorItem.GetColorValue()); } // Second shape has blue fill, but this should be overwritten by green group fill { SdrObject* const pObj = pPage->GetObj(0); CPPUNIT_ASSERT_MESSAGE("Wrong object", pObj != nullptr); - const XFillStyleItem& rStyleItem - = dynamic_cast<const XFillStyleItem&>(pObj->GetMergedItem(XATTR_FILLSTYLE)); + const XFillStyleItem& rStyleItem = pObj->GetMergedItem(XATTR_FILLSTYLE); CPPUNIT_ASSERT_EQUAL(drawing::FillStyle_SOLID, rStyleItem.GetValue()); - const XFillColorItem& rColorItem - = dynamic_cast<const XFillColorItem&>(pObj->GetMergedItem(XATTR_FILLCOLOR)); + const XFillColorItem& rColorItem = pObj->GetMergedItem(XATTR_FILLCOLOR); CPPUNIT_ASSERT_EQUAL(Color(0x00FF00), rColorItem.GetColorValue()); } } @@ -709,13 +693,11 @@ void SdImportTest2::testTdf105150() loadFromURL(u"pptx/tdf105150.pptx"); const SdrPage* pPage = GetPage(1); const SdrObject* pObj = pPage->GetObj(1); - auto& rFillStyleItem - = dynamic_cast<const XFillStyleItem&>(pObj->GetMergedItem(XATTR_FILLSTYLE)); + auto& rFillStyleItem = pObj->GetMergedItem(XATTR_FILLSTYLE); // This was drawing::FillStyle_NONE, <p:sp useBgFill="1"> was ignored when // the slide didn't have an explicit background fill. CPPUNIT_ASSERT_EQUAL(drawing::FillStyle_NONE, rFillStyleItem.GetValue()); - auto& rFillBackgroundItem = dynamic_cast<const XFillUseSlideBackgroundItem&>( - pObj->GetMergedItem(XATTR_FILLUSESLIDEBACKGROUND)); + auto& rFillBackgroundItem = pObj->GetMergedItem(XATTR_FILLUSESLIDEBACKGROUND); CPPUNIT_ASSERT_EQUAL(true, rFillBackgroundItem.GetValue()); } @@ -724,8 +706,7 @@ void SdImportTest2::testTdf123684() loadFromURL(u"pptx/tdf123684.pptx"); const SdrPage* pPage = GetPage(1); const SdrObject* pObj = pPage->GetObj(0); - auto& rFillStyleItem - = dynamic_cast<const XFillStyleItem&>(pObj->GetMergedItem(XATTR_FILLSTYLE)); + auto& rFillStyleItem = pObj->GetMergedItem(XATTR_FILLSTYLE); // Without the accompanying fix in place, this test would have failed with 'Expected: 0; Actual: // 1', i.e. the shape's fill was FillStyle_SOLID, making the text of the shape unreadable. CPPUNIT_ASSERT_EQUAL(drawing::FillStyle_NONE, rFillStyleItem.GetValue()); @@ -738,8 +719,7 @@ void SdImportTest2::testTdf105150PPT() const SdrObject* pObj = pPage->GetObj(1); // This was drawing::FillStyle_NONE, the shape's mso_fillBackground was // ignored when the slide didn't have an explicit background fill. - auto& rFillStyleItem - = dynamic_cast<const XFillStyleItem&>(pObj->GetMergedItem(XATTR_FILLSTYLE)); + auto& rFillStyleItem = pObj->GetMergedItem(XATTR_FILLSTYLE); CPPUNIT_ASSERT_EQUAL(drawing::FillStyle_SOLID, rFillStyleItem.GetValue()); } @@ -1630,11 +1610,9 @@ void SdImportTest2::testTdf127964() { const SdrPage* pPage = GetPage(1); const SdrObject* pObj = pPage->GetObj(0); - auto& rFillStyleItem - = dynamic_cast<const XFillStyleItem&>(pObj->GetMergedItem(XATTR_FILLSTYLE)); + auto& rFillStyleItem = pObj->GetMergedItem(XATTR_FILLSTYLE); CPPUNIT_ASSERT_EQUAL(drawing::FillStyle_NONE, rFillStyleItem.GetValue()); - auto& rFillBackgroundItem = dynamic_cast<const XFillUseSlideBackgroundItem&>( - pObj->GetMergedItem(XATTR_FILLUSESLIDEBACKGROUND)); + auto& rFillBackgroundItem = pObj->GetMergedItem(XATTR_FILLUSESLIDEBACKGROUND); CPPUNIT_ASSERT_EQUAL(true, rFillBackgroundItem.GetValue()); } @@ -1643,11 +1621,9 @@ void SdImportTest2::testTdf127964() { const SdrPage* pPage = GetPage(1); const SdrObject* pObj = pPage->GetObj(0); - auto& rFillStyleItem - = dynamic_cast<const XFillStyleItem&>(pObj->GetMergedItem(XATTR_FILLSTYLE)); + auto& rFillStyleItem = pObj->GetMergedItem(XATTR_FILLSTYLE); CPPUNIT_ASSERT_EQUAL(drawing::FillStyle_NONE, rFillStyleItem.GetValue()); - auto& rFillBackgroundItem = dynamic_cast<const XFillUseSlideBackgroundItem&>( - pObj->GetMergedItem(XATTR_FILLUSESLIDEBACKGROUND)); + auto& rFillBackgroundItem = pObj->GetMergedItem(XATTR_FILLUSESLIDEBACKGROUND); CPPUNIT_ASSERT_EQUAL(true, rFillBackgroundItem.GetValue()); } } diff --git a/sw/source/core/txtnode/ndtxt.cxx b/sw/source/core/txtnode/ndtxt.cxx index e1d7e92036e4..89a149744e74 100644 --- a/sw/source/core/txtnode/ndtxt.cxx +++ b/sw/source/core/txtnode/ndtxt.cxx @@ -4022,7 +4022,7 @@ namespace { { lcl_ResetParAttrs(rTextNode); // #i70748# - if ( dynamic_cast<const SfxUInt16Item &>(rTextNode.GetAttr( RES_PARATR_OUTLINELEVEL, false )).GetValue() > 0 ) + if ( rTextNode.GetAttr( RES_PARATR_OUTLINELEVEL, false ).GetValue() > 0 ) { rTextNode.SetEmptyListStyleDueToSetOutlineLevelAttr(); } @@ -4162,7 +4162,7 @@ void SwTextNode::SetAttrOutlineLevel(int nLevel) void SwTextNode::GetAttrOutlineContentVisible(bool& bOutlineContentVisibleAttr) { - const SfxGrabBagItem & rGrabBagItem = dynamic_cast<const SfxGrabBagItem&>(GetAttr(RES_PARATR_GRABBAG)); + const SfxGrabBagItem & rGrabBagItem = GetAttr(RES_PARATR_GRABBAG); auto it = rGrabBagItem.GetGrabBag().find("OutlineContentVisibleAttr"); if (it != rGrabBagItem.GetGrabBag().end()) it->second >>= bOutlineContentVisibleAttr; @@ -4219,7 +4219,7 @@ int SwTextNode::GetAttrListLevel() const int nAttrListLevel = 0; const SfxInt16Item& aListLevelItem = - dynamic_cast<const SfxInt16Item&>(GetAttr( RES_PARATR_LIST_LEVEL )); + GetAttr( RES_PARATR_LIST_LEVEL ); nAttrListLevel = static_cast<int>(aListLevelItem.GetValue()); return nAttrListLevel; @@ -4315,7 +4315,7 @@ SwNumberTree::tSwNumTreeNumber SwTextNode::GetAttrListRestartValue() const "<SwTextNode::GetAttrListRestartValue()> - only ask for list restart value, if attribute is set at text node." ); const SfxInt16Item& aListRestartValueItem = - dynamic_cast<const SfxInt16Item&>(GetAttr( RES_PARATR_LIST_RESTARTVALUE )); + GetAttr( RES_PARATR_LIST_RESTARTVALUE ); return static_cast<SwNumberTree::tSwNumTreeNumber>(aListRestartValueItem.GetValue()); } @@ -4542,7 +4542,7 @@ bool SwTextNode::IsFirstOfNumRule(SwRootFrame const& rLayout) const void SwTextNode::SetListId(OUString const& rListId) { const SfxStringItem& rListIdItem = - dynamic_cast<const SfxStringItem&>(GetAttr( RES_PARATR_LIST_ID )); + GetAttr( RES_PARATR_LIST_ID ); if (rListIdItem.GetValue() != rListId) { if (rListId.isEmpty()) @@ -4560,7 +4560,7 @@ void SwTextNode::SetListId(OUString const& rListId) OUString SwTextNode::GetListId() const { const SfxStringItem& rListIdItem = - dynamic_cast<const SfxStringItem&>(GetAttr( RES_PARATR_LIST_ID )); + GetAttr( RES_PARATR_LIST_ID ); const OUString& sListId {rListIdItem.GetValue()}; // As long as no explicit list id attribute is set, use the list id of diff --git a/sw/source/core/unocore/unodraw.cxx b/sw/source/core/unocore/unodraw.cxx index bb93566a271a..e816380ad253 100644 --- a/sw/source/core/unocore/unodraw.cxx +++ b/sw/source/core/unocore/unodraw.cxx @@ -1239,7 +1239,7 @@ void SwXShape::setPropertyValue(const OUString& rPropertyName, const uno::Any& a else if( text::TextContentAnchorType_AT_PAGE != eNewAnchor && (RndStdIds::FLY_AT_PAGE == eOldAnchorId)) { - SwFormatAnchor aNewAnchor( dynamic_cast< const SwFormatAnchor& >( aSet.Get( RES_ANCHOR ) ) ); + SwFormatAnchor aNewAnchor( aSet.Get( RES_ANCHOR ) ); //if the fly has been anchored at page then it needs to be connected //to the content position SwPaM aPam(pDoc->GetNodes().GetEndOfContent()); @@ -1283,8 +1283,7 @@ void SwXShape::setPropertyValue(const OUString& rPropertyName, const uno::Any& a aPam.GetPoint()->GetContentIndex(), 0 ); aPam.GetPoint()->AdjustContent(-1); // InsertItem moved it SwFormatAnchor aNewAnchor( - dynamic_cast<const SwFormatAnchor&>( - aSet.Get(RES_ANCHOR))); + aSet.Get(RES_ANCHOR)); aNewAnchor.SetAnchor( aPam.GetPoint() ); aSet.Put( aNewAnchor ); } diff --git a/sw/source/filter/ww8/wrtw8sty.cxx b/sw/source/filter/ww8/wrtw8sty.cxx index 842bf958def4..c73378d4b702 100644 --- a/sw/source/filter/ww8/wrtw8sty.cxx +++ b/sw/source/filter/ww8/wrtw8sty.cxx @@ -1678,7 +1678,7 @@ void MSWordExportBase::SectionProperties( const WW8_SepInfo& rSepInfo, WW8_PdAtt //i120133: The Section width should consider section indent value. if (rSectionLR.GetLeft()+rSectionLR.GetRight()!=0) { - const SwFormatCol& rCol = dynamic_cast<const SwFormatCol&>(rSepInfo.pSectionFormat->GetFormatAttr(RES_COL)); + const SwFormatCol& rCol = rSepInfo.pSectionFormat->GetFormatAttr(RES_COL); SwFormatCol aCol(rCol); aCol.SetAdjustValue(rSectionLR.GetLeft()+rSectionLR.GetRight()); aSet.Put(aCol); diff --git a/sw/source/uibase/shells/textsh1.cxx b/sw/source/uibase/shells/textsh1.cxx index da69a34ef75d..41a159c2a91b 100644 --- a/sw/source/uibase/shells/textsh1.cxx +++ b/sw/source/uibase/shells/textsh1.cxx @@ -1369,7 +1369,7 @@ void SwTextShell::Execute(SfxRequest &rReq) rWrtSh.GetCurAttr(aSet); if(SfxItemState::SET <= aSet.GetItemState( RES_TXTATR_INETFMT )) { - const SwFormatINetFormat& rINetFormat = dynamic_cast<const SwFormatINetFormat&>( aSet.Get(RES_TXTATR_INETFMT) ); + const SwFormatINetFormat& rINetFormat = aSet.Get(RES_TXTATR_INETFMT); if( nSlot == SID_COPY_HYPERLINK_LOCATION ) { OUString hyperlinkLocation = rINetFormat.GetValue(); diff --git a/sw/source/uibase/uno/unotxdoc.cxx b/sw/source/uibase/uno/unotxdoc.cxx index 0f0fb093cb3e..bb6b32723129 100644 --- a/sw/source/uibase/uno/unotxdoc.cxx +++ b/sw/source/uibase/uno/unotxdoc.cxx @@ -3865,21 +3865,21 @@ uno::Sequence< lang::Locale > SAL_CALL SwXTextDocument::getDocumentLanguages( if (bLatin) { assert(pSet); - nLang = dynamic_cast< const SvxLanguageItem & >(pSet->Get( RES_CHRATR_LANGUAGE, false )).GetLanguage(); + nLang = pSet->Get( RES_CHRATR_LANGUAGE, false ).GetLanguage(); if (nLang != LANGUAGE_DONTKNOW && nLang != LANGUAGE_SYSTEM) aAllLangs.insert( nLang ); } if (bAsian) { assert(pSet); - nLang = dynamic_cast< const SvxLanguageItem & >(pSet->Get( RES_CHRATR_CJK_LANGUAGE, false )).GetLanguage(); + nLang = pSet->Get( RES_CHRATR_CJK_LANGUAGE, false ).GetLanguage(); if (nLang != LANGUAGE_DONTKNOW && nLang != LANGUAGE_SYSTEM) aAllLangs.insert( nLang ); } if (bComplex) { assert(pSet); - nLang = dynamic_cast< const SvxLanguageItem & >(pSet->Get( RES_CHRATR_CTL_LANGUAGE, false )).GetLanguage(); + nLang = pSet->Get( RES_CHRATR_CTL_LANGUAGE, false ).GetLanguage(); if (nLang != LANGUAGE_DONTKNOW && nLang != LANGUAGE_SYSTEM) aAllLangs.insert( nLang ); } @@ -3915,19 +3915,19 @@ uno::Sequence< lang::Locale > SAL_CALL SwXTextDocument::getDocumentLanguages( LanguageType nLang = LANGUAGE_DONTKNOW; if (bLatin) { - nLang = dynamic_cast< const SvxLanguageItem & >(aAttr.Get( EE_CHAR_LANGUAGE, false )).GetLanguage(); + nLang = aAttr.Get( EE_CHAR_LANGUAGE, false ).GetLanguage(); if (nLang != LANGUAGE_DONTKNOW && nLang != LANGUAGE_SYSTEM) aAllLangs.insert( nLang ); } if (bAsian) { - nLang = dynamic_cast< const SvxLanguageItem & >(aAttr.Get( EE_CHAR_LANGUAGE_CJK, false )).GetLanguage(); + nLang = aAttr.Get( EE_CHAR_LANGUAGE_CJK, false ).GetLanguage(); if (nLang != LANGUAGE_DONTKNOW && nLang != LANGUAGE_SYSTEM) aAllLangs.insert( nLang ); } if (bComplex) { - nLang = dynamic_cast< const SvxLanguageItem & >(aAttr.Get( EE_CHAR_LANGUAGE_CTL, false )).GetLanguage(); + nLang = aAttr.Get( EE_CHAR_LANGUAGE_CTL, false ).GetLanguage(); if (nLang != LANGUAGE_DONTKNOW && nLang != LANGUAGE_SYSTEM) aAllLangs.insert( nLang ); }