loplugin:fieldcast improvements
reduce false positives, and also check reinterpret_cast
Change-Id: Ia6f214393f28451d18c16b764a3c2b149d29ba8a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159302
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
diff --git a/compilerplugins/clang/fieldcast.cxx b/compilerplugins/clang/fieldcast.cxx
index 7f2b728..0807aef 100644
--- a/compilerplugins/clang/fieldcast.cxx
+++ b/compilerplugins/clang/fieldcast.cxx
@@ -61,6 +61,7 @@ public:
bool VisitCXXStaticCastExpr(const CXXStaticCastExpr*);
bool VisitCXXDynamicCastExpr(const CXXDynamicCastExpr*);
bool VisitCXXReinterpretCastExpr(const CXXReinterpretCastExpr*);
private:
MyFieldInfo niceName(const FieldDecl*);
@@ -151,25 +152,26 @@ bool FieldCast::VisitCXXStaticCastExpr(const CXXStaticCastExpr* expr)
return true;
}
bool FieldCast::VisitCXXReinterpretCastExpr(const CXXReinterpretCastExpr* expr)
{
checkCast(expr);
return true;
}
void FieldCast::checkCast(const CXXNamedCastExpr* expr)
{
if (ignoreLocation(expr))
return;
if (isInUnoIncludeFile(compiler.getSourceManager().getSpellingLoc(expr->getBeginLoc())))
return;
const QualType exprType = expr->getTypeAsWritten();
if (!exprType->getPointeeCXXRecordDecl())
auto castToType = expr->getTypeAsWritten()->getPointeeCXXRecordDecl();
if (!castToType)
return;
const Expr* subExpr = compat::getSubExprAsWritten(expr);
const FieldDecl* fieldDecl = nullptr;
if (const MemberExpr* memberExpr = dyn_cast_or_null<MemberExpr>(subExpr->IgnoreImplicit()))
{
const FieldDecl* fieldDecl = dyn_cast_or_null<FieldDecl>(memberExpr->getMemberDecl());
if (!fieldDecl)
return;
if (isInUnoIncludeFile(
compiler.getSourceManager().getSpellingLoc(fieldDecl->getBeginLoc())))
return;
castMap.emplace(fieldDecl, exprType->getPointeeCXXRecordDecl());
fieldDecl = dyn_cast_or_null<FieldDecl>(memberExpr->getMemberDecl());
}
else if (const CXXMemberCallExpr* memberCallExpr
= dyn_cast_or_null<CXXMemberCallExpr>(subExpr->IgnoreImplicit()))
@@ -181,14 +183,19 @@ void FieldCast::checkCast(const CXXNamedCastExpr* expr)
memberCallExpr->getImplicitObjectArgument()->IgnoreImplicit());
if (!memberExpr)
return;
const FieldDecl* fieldDecl = dyn_cast_or_null<FieldDecl>(memberExpr->getMemberDecl());
if (!fieldDecl)
return;
if (isInUnoIncludeFile(
compiler.getSourceManager().getSpellingLoc(fieldDecl->getBeginLoc())))
return;
castMap.emplace(fieldDecl, exprType->getPointeeCXXRecordDecl());
fieldDecl = dyn_cast_or_null<FieldDecl>(memberExpr->getMemberDecl());
}
if (!fieldDecl)
return;
if (isInUnoIncludeFile(compiler.getSourceManager().getSpellingLoc(fieldDecl->getBeginLoc())))
return;
// ignore casting to a less specific type
auto castFromType = subExpr->getType()->getPointeeCXXRecordDecl();
if (castFromType && castFromType->isDerivedFrom(castToType))
return;
castMap.emplace(fieldDecl, castToType);
}
loplugin::Plugin::Registration<FieldCast> X("fieldcast", false);
diff --git a/compilerplugins/clang/fieldcast.results b/compilerplugins/clang/fieldcast.results
index a1ef6ac..e65cc51 100644
--- a/compilerplugins/clang/fieldcast.results
+++ b/compilerplugins/clang/fieldcast.results
@@ -13,114 +13,57 @@ basctl/source/inc/basidesh.hxx:97
basic/source/inc/errobject.hxx:27
SbxErrObject m_xErr css::uno::Reference<ooo::vba::XErrObject>
ErrObject
basic/source/inc/runtime.hxx:68
SbiForStack refEnd SbxVariableRef
BasicCollection
basic/source/inc/runtime.hxx:220
SbiRuntime pMod SbModule *
SbClassModuleObject
bridges/source/cpp_uno/gcc3_linux_x86-64/rtti.cxx:70
(anonymous namespace)::GeneratedPad pad_ std::unique_ptr<char[]>
std::type_info
bridges/source/jni_uno/jni_info.h:96
jni_uno::JNI_compound_type_info m_base const JNI_type_info *
jni_uno::JNI_compound_type_info
bxml/parser.h:258
_xmlParserCtxt _private void *
DOM::CDocumentBuilder
bxml/tree.h:390
_xmlNs next struct _xmlNs *
_xmlNode
bxml/xpath.h:338
_xmlXPathContext funcLookupData void *
CLibxml2XFormsExtension
chart2/inc/ChartModel.hxx:133
chart::ChartModel mxChartView rtl::Reference<ChartView>
cppu::OWeakObject
chart2/inc/ChartModel.hxx:176
chart::ChartModel m_xXMLNamespaceMap rtl::Reference< ::chart::NameContainer>
cppu::OWeakObject
chart2/inc/ChartView.hxx:213
chart::ChartView m_xDrawPage rtl::Reference<SvxDrawPage>
cppu::OWeakObject
chart2/source/controller/dialogs/tp_ChartType.hxx:77
chart::ChartTypeTabPage m_xChartModel rtl::Reference< ::chart::ChartModel>
cppu::OWeakObject
chart2/source/controller/inc/ChartDocumentWrapper.hxx:165
chart::wrapper::ChartDocumentWrapper m_xChartView rtl::Reference<ChartView>
cppu::OWeakObject
chart2/source/controller/inc/dlg_CreationWizard_UNO.hxx:108
chart::CreationWizardUnoDlg m_xParentWindow css::uno::Reference<css::awt::XWindow>
weld::TransportAsXWindow
chart2/source/controller/inc/SelectionHelper.hxx:110
chart::SelectionHelper m_pMarkObj SdrObject *
SdrPathObj
chart2/source/controller/sidebar/ChartTypePanel.hxx:105
chart::sidebar::ChartTypePanel m_xChartModel rtl::Reference< ::chart::ChartModel>
cppu::OWeakObject
chart2/source/inc/Diagram.hxx:312
chart::Diagram::tTemplateWithServiceName xChartTypeTemplate rtl::Reference< ::chart::ChartTypeTemplate>
cppu::OWeakObject
chart2/source/view/inc/PlotterBase.hxx:75
chart::PlotterBase m_pPosHelper PlottingPositionHelper *
chart::PolarPlottingPositionHelper
comphelper/source/eventattachermgr/eventattachermgr.cxx:143
comphelper::(anonymous namespace)::AttacherAllListener_Impl mxManager rtl::Reference<ImplEventAttacherManager>
cppu::OWeakObject
configmgr/source/valueparser.hxx:76
configmgr::ValueParser node_ rtl::Reference<Node>
configmgr::PropertyNode
configmgr/source/xcsparser.hxx:80
configmgr::XcsParser::Element node rtl::Reference<Node>
configmgr::SetNode
cppu/source/uno/lbenv.cxx:72
(anonymous namespace)::InterfaceEntry pTypeDescr typelib_InterfaceTypeDescription *
_typelib_TypeDescription
cui/source/inc/cfg.hxx:407
SvxConfigPage m_xContentsListBox std::unique_ptr<SvxMenuEntriesListBox>
SvxNotebookbarEntriesListBox
cui/source/inc/cuitabarea.hxx:95
SvxAreaTabDialog mpNewColorList XColorListRef
XPropertyList
cui/source/inc/cuitabarea.hxx:97
SvxAreaTabDialog mpNewGradientList XGradientListRef
XPropertyList
cui/source/inc/cuitabarea.hxx:99
SvxAreaTabDialog mpNewHatchingList XHatchListRef
XPropertyList
cui/source/inc/cuitabarea.hxx:101
SvxAreaTabDialog mpNewBitmapList XBitmapListRef
XPropertyList
cui/source/inc/cuitabarea.hxx:103
SvxAreaTabDialog mpNewPatternList XPatternListRef
XPropertyList
cui/source/inc/cuitabline.hxx:42
SvxLineTabDialog mpNewColorList XColorListRef
XPropertyList
cui/source/inc/cuitabline.hxx:44
SvxLineTabDialog pNewDashList XDashListRef
XPropertyList
cui/source/inc/cuitabline.hxx:46
SvxLineTabDialog pNewLineEndList XLineEndListRef
XPropertyList
cui/source/inc/cuitabline.hxx:321
SvxLineEndDefTabPage pPolyObj const SdrObject *
SdrPathObj
cui/source/inc/newtabledlg.hxx:40
SvxNewTableDialogWrapper m_xDlg std::shared_ptr<weld::DialogController>
SvxNewTableDialog
cui/source/options/optcolor.cxx:270
(anonymous namespace)::ColorConfigWindow_Impl::Entry m_xText std::unique_ptr<weld::Widget>
weld::Toggleable
cui/source/options/treeopt.cxx:424
OptionsPageInfo m_xPage std::unique_ptr<SfxTabPage>
SvxDefaultColorOptPage
dbaccess/source/core/api/resultset.hxx:73
dbaccess::OResultSet m_pColumns std::unique_ptr<OColumns>
com::sun::star::container::XNameAccess
dbaccess/source/core/dataaccess/documentdefinition.cxx:158
dbaccess::(anonymous namespace)::OEmbedObjectHolder m_pDefinition ODocumentDefinition *
cppu::OWeakObject
dbaccess/source/filter/xml/xmlStyleImport.hxx:35
dbaxml::OTableStyleContext pStyles SvXMLStylesContext *
dbaxml::OTableStylesContext
dbaccess/source/ui/app/AppDetailView.hxx:105
dbaui::OApplicationDetailView m_xControlHelper std::shared_ptr<OChildWindow>
dbaui::OAppDetailPageHelper
dbaccess/source/ui/inc/brwctrlr.hxx:102
dbaui::SbaXDataBrowserController m_xFormControllerImpl rtl::Reference<FormControllerImpl>
cppu::OWeakObject
dbaccess/source/ui/inc/RelationDlg.hxx:34
dbaui::ORelationDialog m_pConnData TTableConnectionData::value_type
dbaui::ORelationTableConnectionData
@@ -142,72 +85,27 @@ editeng/source/editeng/impedit.hxx:270
editeng/source/editeng/impedit.hxx:506
ImpEditEngine pEditEngine EditEngine *
OutlinerEditEng
extensions/source/scanner/scanunx.cxx:127
(anonymous namespace)::ScannerThread m_pManager ScannerManager *
cppu::OWeakObject
extensions/source/update/check/updatecheck.hxx:164
UpdateCheck m_pThread WorkerThread *
(anonymous namespace)::UpdateCheckThread
forms/source/component/EventThread.hxx:60
frm::OComponentEventThread m_xComp rtl::Reference< ::cppu::OComponentHelper>
com::sun::star::uno::XWeak
forms/source/xforms/binding.hxx:97
xforms::Binding mxModel css::uno::Reference<css::xforms::XModel>
xforms::Model
fpicker/source/office/iodlgimp.hxx:115
SvtExpFileDlg_Impl m_xFtFileName std::unique_ptr<weld::Label>
weld::Widget
fpicker/source/office/iodlgimp.hxx:118
SvtExpFileDlg_Impl m_xSharedLabel std::unique_ptr<weld::Label>
weld::Widget
fpicker/source/office/iodlgimp.hxx:119
SvtExpFileDlg_Impl m_xSharedListBox std::unique_ptr<weld::ComboBox>
weld::Widget
framework/inc/services/layoutmanager.hxx:253
framework::LayoutManager m_xMenuBar css::uno::Reference<css::ui::XUIElement>
framework::MenuBarWrapper
framework/inc/services/layoutmanager.hxx:256
framework::LayoutManager m_xProgressBarBackup css::uno::Reference<css::ui::XUIElement>
framework::ProgressBarWrapper
framework/inc/uielement/addonstoolbarwrapper.hxx:50
framework::AddonsToolBarWrapper m_xToolBarManager css::uno::Reference<css::lang::XComponent>
framework::ToolBarManager
framework/inc/uielement/menubarmanager.hxx:146
framework::MenuBarManager::MenuItemHandler xSubMenuManager css::uno::Reference<css::frame::XStatusListener>
framework::MenuBarManager
framework/inc/uielement/menubarwrapper.hxx:67
framework::MenuBarWrapper m_xMenuBarManager css::uno::Reference<css::lang::XComponent>
framework::MenuBarManager
framework/inc/uielement/statusbarwrapper.hxx:50
framework::StatusBarWrapper m_xStatusBarManager css::uno::Reference<css::lang::XComponent>
framework::StatusBarManager
framework/inc/uielement/toolbarwrapper.hxx:78
framework::ToolBarWrapper m_xToolBarManager css::uno::Reference<css::lang::XComponent>
framework::ToolBarManager
framework/inc/uielement/uielement.hxx:89
framework::UIElement m_xUIElement css::uno::Reference<css::ui::XUIElement>
framework::AddonsToolBarWrapper
framework/source/uiconfiguration/moduleuiconfigurationmanager.cxx:222
(anonymous namespace)::ModuleUIConfigurationManager m_xModuleImageManager rtl::Reference<ImageManager>
cppu::OWeakObject
framework/source/uiconfiguration/uiconfigurationmanager.cxx:199
(anonymous namespace)::UIConfigurationManager m_xImageManager rtl::Reference<ImageManager>
cppu::OWeakObject
i18npool/inc/calendarImpl.hxx:103
i18npool::CalendarImpl xCalendar css::uno::Reference<css::i18n::XCalendar4>
i18npool::Calendar_gregorian
include/basegfx/DrawCommands.hxx:121
gfx::DrawRectangle mpFillGradient std::shared_ptr<GradientInfo>
gfx::LinearGradientInfo
include/basic/modsizeexceeded.hxx:59
ModuleSizeExceeded m_xAbort css::uno::Reference<css::task::XInteractionContinuation>
comphelper::OInteraction
include/basic/modsizeexceeded.hxx:60
ModuleSizeExceeded m_xApprove css::uno::Reference<css::task::XInteractionContinuation>
comphelper::OInteraction
include/basic/sbmod.hxx:72
SbModule pDocObject SbxObjectRef
SbUnoObject
include/basic/sbstar.hxx:47
StarBASIC pRtl SbxObjectRef
SbiStdObject
@@ -223,15 +121,6 @@ include/connectivity/sdbcx/VTable.hxx:77
include/connectivity/sdbcx/VTable.hxx:79
connectivity::sdbcx::OTable m_pTables OCollection *
connectivity::mysql::OTables
include/cppuhelper/interfacecontainer.h:601
cppu::OMultiTypeInterfaceContainerHelper m_pMap void *
std::vector
include/cppuhelper/propshlp.hxx:298
cppu::OMultiTypeInterfaceContainerHelperInt32 m_pMap void *
std::vector
include/editeng/AccessibleContextBase.hxx:266
accessibility::AccessibleContextBase mxRelationSet css::uno::Reference<css::accessibility::XAccessibleRelationSet>
utl::AccessibleRelationSetHelper
include/editeng/editdata.hxx:231
HtmlImportInfo pParser SvParser<HtmlTokenId> *
HTMLParser
@@ -256,24 +145,12 @@ include/jvmaccess/unovirtualmachine.hxx:94
include/oox/drawingml/graphicshapecontext.hxx:55
oox::drawingml::GraphicalObjectFrameContext mpParent ::oox::core::ContextHandler2Helper *
oox::ppt::PPTShapeGroupContext
include/oox/drawingml/shape.hxx:418
oox::drawingml::Shape mpDiagramHelper svx::diagram::IDiagramHelper *
oox::drawingml::AdvancedDiagramHelper
include/oox/drawingml/shapecontext.hxx:46
oox::drawingml::ShapeContext mpShapePtr ShapePtr
oox::ppt::PPTShape
include/oox/export/vmlexport.hxx:87
oox::vml::VMLExport m_pSdrObject const SdrObject *
SdrGrafObj
include/oox/shape/ShapeContextHandler.hxx:137
oox::shape::ShapeContextHandler mxDrawingFragmentHandler rtl::Reference<vml::DrawingFragment>
oox::core::ContextHandler
include/oox/shape/ShapeContextHandler.hxx:140
oox::shape::ShapeContextHandler mxLockedCanvasContext rtl::Reference<LockedCanvasContext>
oox::core::ContextHandler
include/oox/shape/ShapeContextHandler.hxx:143
oox::shape::ShapeContextHandler mxWpgContext rtl::Reference<WpgContext>
oox::core::ContextHandler
include/oox/vml/vmlshapecontext.hxx:147
oox::vml::ShapeContext mrShape ShapeBase &
oox::vml::SimpleShape
@@ -289,9 +166,6 @@ include/sfx2/sfxstatuslistener.hxx:69
include/sfx2/sidebar/Panel.hxx:102
sfx2::sidebar::Panel mxElement css::uno::Reference<css::ui::XUIElement>
sfx2::sidebar::SidebarPanelBase
include/sot/stg.hxx:209
UCBStorageStream pImp UCBStorageStream_Impl *
SvStream
include/sot/storage.hxx:52
SotStorageStream pOwnStm BaseStorageStream *
UCBStorageStream
@@ -307,15 +181,9 @@ include/svl/style.hxx:236
include/svl/undo.hxx:92
MarkedUndoAction pAction std::unique_ptr<SfxUndoAction>
ScSimpleUndo
include/svtools/brwbox.hxx:270
BrowseBox pDataWin VclPtr<BrowserDataWin>
Control
include/svx/AccessibleShape.hxx:391
accessibility::AccessibleShape m_pShape SdrObject *
SdrOle2Obj
include/svx/clipboardctl.hxx:34
SvxClipBoardControl pClipboardFmtItem std::unique_ptr<SfxPoolItem>
SvxClipboardFormatItem
include/svx/fmsrcimp.hxx:161
FmSearchEngine m_xSearchCursor CursorWrapper
com::sun::star::uno::Reference
@@ -328,12 +196,6 @@ include/svx/svdhdl.hxx:136
include/svx/svdmodel.hxx:198
SdrModel mxStyleSheetPool rtl::Reference<SfxStyleSheetBasePool>
SdStyleSheetPool
include/svx/svdundo.hxx:156
SdrUndoAttrObj mxUndoStyleSheet rtl::Reference<SfxStyleSheetBase>
SfxStyleSheet
include/svx/svdundo.hxx:157
SdrUndoAttrObj mxRedoStyleSheet rtl::Reference<SfxStyleSheetBase>
SfxStyleSheet
include/svx/svdview.hxx:100
SdrViewEvent mpObj SdrObject *
sdr::table::SdrTableObj
@@ -352,9 +214,6 @@ include/toolkit/awt/vclxmenu.hxx:59
include/tools/zcodec.hxx:59
ZCodec mpsC_Stream void *
z_stream_s
include/uno/dispatcher.hxx:54
com::sun::star::uno::UnoInterfaceReference m_pUnoI uno_Interface *
binaryurp::Proxy
include/vbahelper/vbaeventshelperbase.hxx:214
VbaEventsHelperBase mpShell SfxObjectShell *
ScDocShell
@@ -367,9 +226,6 @@ include/vcl/builder.hxx:158
include/vcl/dockwin.hxx:117
DockingWindow mpOldBorderWin VclPtr<vcl::Window>
ImplBorderWindow
include/vcl/event.hxx:353
DataChangedEvent mpData void *
AllSettings
include/vcl/menu.hxx:127
Menu pStartedFrom VclPtr<Menu>
PopupMenu
@@ -379,6 +235,12 @@ include/vcl/sysdata.hxx:68
include/vcl/sysdata.hxx:71
SystemEnvData pVisual void *
Visual
include/vcl/sysdata.hxx:155
SystemGraphicsData pDisplay void *
_XDisplay
include/vcl/sysdata.hxx:157
SystemGraphicsData pVisual void *
Visual
include/vcl/sysdata.hxx:161
SystemGraphicsData pSurface void *
_cairo_surface
@@ -391,9 +253,6 @@ include/vcl/toolkit/fmtfield.hxx:60
include/vcl/toolkit/menubtn.hxx:41
MenuButton mpFloatingWindow VclPtr<Window>
FloatingWindow
include/vcl/toolkit/treelistbox.hxx:232
SvTreeListBox pEdItem SvLBoxItem *
SvLBoxString
include/vcl/uitest/uiobject.hxx:156
ButtonUIObject mxButton VclPtr<Button>
PushButton
@@ -409,12 +268,6 @@ include/xmloff/prstylei.hxx:45
include/xmloff/shapeimport.hxx:150
XMLShapeImportHelper mrImporter SvXMLImport &
ScXMLImport
include/xmloff/xmlimp.hxx:225
SvXMLImport mpStyleMap rtl::Reference<StyleMap>
com::sun::star::lang::XTypeProvider
include/xmloff/XMLPageExport.hxx:61
XMLPageExport m_xPageMasterExportPropMapper rtl::Reference<SvXMLExportPropertyMapper>
XMLPageMasterExportPropMapper
lingucomponent/source/languageguessing/simpleguesser.hxx:97
SimpleGuesser h void *
(anonymous namespace)::textcat_t
@@ -424,21 +277,12 @@ lotuswordpro/source/filter/lwpframelayout.hxx:103
package/source/xstor/owriteablestream.hxx:241
OWriteStream m_xOutStream css::uno::Reference<css::io::XOutputStream>
comphelper::ByteWriter
package/source/xstor/xstorage.hxx:114
OStorage_Impl m_pAntiImpl OStorage *
com::sun::star::util::XModifiable
package/source/xstor/xstorage.hxx:158
OStorage_Impl m_pSwitchStream rtl::Reference<SwitchablePersistenceStream>
com::sun::star::io::XStream
package/source/xstor/xstorage.hxx:286
OStorage m_pSubElDispListener ::rtl::Reference<OChildDispListener_Impl>
com::sun::star::lang::XEventListener
pyuno/inc/pyuno.hxx:165
pyuno::Runtime impl RuntimeImpl *
_object
reportdesign/source/filter/xml/xmlImportDocumentHandler.hxx:83
rptxml::ImportDocumentHandler m_xDocumentHandler css::uno::Reference<css::xml::sax::XFastDocumentHandler>
SvXMLImport
reportdesign/source/filter/xml/xmlStyleImport.hxx:34
rptxml::OControlStyleContext pStyles SvXMLStylesContext *
rptxml::OReportStylesContext
reportdesign/source/ui/inc/DesignView.hxx:57
rptui::ODesignView m_pTaskPane VclPtr<vcl::Window>
rptui::(anonymous namespace)::OTaskWindow
@@ -448,15 +292,15 @@ sal/rtl/bootstrap.cxx:396
sc/inc/chgtrack.hxx:192
ScChangeAction pNext ScChangeAction *
ScChangeActionContent
sc/inc/compiler.hxx:310
ScCompiler::TableRefEntry mxToken ScTokenRef
ScTableRefToken
sc/inc/dpfilteredcache.hxx:97
ScDPFilteredCache::Criterion mpFilter std::shared_ptr<FilterBase>
ScDPFilteredCache::GroupFilter
sc/inc/dpobject.hxx:95
ScDPObject mpTableData std::shared_ptr<ScDPTableData>
ScDPGroupTableData
sc/qa/unit/screenshots/screenshots.cxx:36
ScScreenshotTest mpFoundShell SfxObjectShell *
ScDocShell
sc/source/core/opencl/formulagroupcl.cxx:1873
sc::opencl::(anonymous namespace)::DynamicKernelSoPArguments mpCodeGen std::shared_ptr<SlidingFunctionBase>
sc::opencl::OpSumIfs
@@ -472,66 +316,30 @@ sc/source/filter/inc/eeimport.hxx:43
sc/source/filter/inc/pivottablebuffer.hxx:382
oox::xls::PivotTable mxDPDescriptor css::uno::Reference<css::sheet::XDataPilotDescriptor>
ScDataPilotDescriptorBase
sc/source/filter/inc/xcl97rec.hxx:240
XclObjOle rOleObj const SdrObject &
SdrOle2Obj
sc/source/filter/xml/xmlcvali.cxx:52
(anonymous namespace)::ScXMLContentValidationContext xEventContext SvXMLImportContextRef
XMLEventsImportContext
sc/source/filter/xml/xmlimprt.hxx:156
ScXMLImport xSheetCellRanges css::uno::Reference<css::sheet::XSheetCellRangeContainer>
ScCellRangesObj
sc/source/filter/xml/xmlstyli.hxx:70
XMLTableStyleContext pStyles SvXMLStylesContext *
XMLTableStylesContext
sc/source/ui/inc/AccessibleContextBase.hxx:232
ScAccessibleContextBase mxParent css::uno::Reference<css::accessibility::XAccessible>
ScAccessibleSpreadsheet
sc/source/ui/vba/vbaaxes.cxx:95
(anonymous namespace)::AxisIndexWrapper mxChart uno::Reference<excel::XChart>
ScVbaChart
sc/source/ui/vba/vbaaxis.hxx:29
ScVbaAxis moChartParent css::uno::Reference<ov::excel::XChart>
ScVbaChart
sc/source/ui/vba/vbaformat.hxx:42
ScVbaFormat mxPropertySet css::uno::Reference<css::beans::XPropertySet>
ScCellRangesBase
sc/source/ui/vba/vbaformatconditions.hxx:37
ScVbaFormatConditions mxStyles css::uno::Reference<ov::excel::XStyles>
ScVbaStyles
sc/source/ui/vba/vbaname.hxx:34
ScVbaName mxNamedRange css::uno::Reference<css::sheet::XNamedRange>
ScNamedRangeObj
sc/source/ui/vba/vbarange.hxx:79
ScVbaRange mxRanges css::uno::Reference<css::sheet::XSheetCellRangeContainer>
ScCellRangesBase
sc/source/ui/vba/vbawindow.cxx:103
(anonymous namespace)::SelectedSheetsEnumAccess m_xModel uno::Reference<frame::XModel>
ScModelObj
sd/inc/Outliner.hxx:283
SdOutliner mpObj SdrObject *
SdrGrafObj
sd/inc/sdfilter.hxx:53
SdFilter mrDocShell ::sd::DrawDocShell &
SfxObjectShell
sd/inc/stlpool.hxx:135
SdStyleSheetPool mxGraphicFamily SdStyleFamilyRef
com::sun::star::container::XNameAccess
sd/inc/stlpool.hxx:136
SdStyleSheetPool mxCellFamily SdStyleFamilyRef
com::sun::star::container::XNameAccess
sd/source/console/PresenterController.hxx:181
sdext::presenter::PresenterController mxController rtl::Reference< ::sd::DrawController>
cppu::OWeakObject
sd/source/console/PresenterCurrentSlideObserver.hxx:73
sdext::presenter::PresenterCurrentSlideObserver mpPresenterController ::rtl::Reference<PresenterController>
com::sun::star::uno::XWeak
sd/source/ui/annotations/annotationtag.cxx:171
sd::(anonymous namespace)::AnnotationHdl mxAnnotation Reference<XAnnotation>
sd::Annotation
sd/source/ui/annotations/annotationtag.hxx:77
sd::AnnotationTag mxAnnotation css::uno::Reference<css::office::XAnnotation>
sd::Annotation
sd/qa/unit/dialogs-test.cxx:43
SdDialogsTest mxComponent uno::Reference<lang::XComponent>
SdXImpressDocument
sd/source/ui/dlg/sddlgfact.hxx:165
AbstractBulletDialog_Impl m_xDlg std::shared_ptr<SfxTabDialogController>
sd::OutlineBulletDlg
@@ -547,30 +355,18 @@ sd/source/ui/inc/fupoor.hxx:147
sd/source/ui/inc/fusel.hxx:76
sd::FuSelection pHdl SdrHdl *
svx::diagram::DiagramFrameHdl
sd/source/ui/inc/OutlineView.hxx:169
sd::OutlineView mrOutliner SdrOutliner &
SdOutliner
sd/source/ui/inc/TextObjectBar.hxx:53
sd::TextObjectBar mpView ::sd::View *
sd::OutlineView
sd/source/ui/inc/unchss.hxx:34
StyleSheetUndoAction mpStyleSheet SfxStyleSheet *
SdStyleSheet
sd/source/ui/inc/ViewShell.hxx:434
sd::ViewShell mpContentWindow VclPtr<sd::Window>
vcl::Window
sd/source/ui/inc/ViewShell.hxx:452
sd::ViewShell mpView ::sd::View *
SdrView
sd/source/ui/slideshow/slideshowimpl.hxx:296
sd::SlideshowImpl mpViewShell ViewShell *
sd::PresentationViewShell
sd/source/ui/table/tableobjectbar.hxx:51
sd::ui::table::TableObjectBar mpViewSh ::sd::ViewShell *
sd::DrawViewShell
sd/source/ui/unoidl/unolayer.hxx:85
SdLayer mxLayerManager rtl::Reference<SdLayerManager>
cppu::OWeakObject
sd/source/ui/view/DocumentRenderer.cxx:1319
sd::DocumentRenderer::Implementation mrBase ViewShellBase &
SfxBroadcaster
@@ -589,18 +385,9 @@ sdext/source/pdfimport/pdfparse/pdfentries.cxx:49
sdext/source/pdfimport/sax/emitcontext.hxx:36
pdfi::SaxEmitter m_xDocHdl css::uno::Reference<css::xml::sax::XDocumentHandler>
SvXMLImport
sfx2/inc/unoctitm.hxx:111
SfxDispatchController_Impl pDispatch SfxOfficeDispatch *
com::sun::star::frame::XDispatch
sfx2/source/doc/exoticfileloadexception.hxx:37
ExoticFileLoadException m_xApprove css::uno::Reference<css::task::XInteractionContinuation>
comphelper::OInteraction
sfx2/source/inc/objshimp.hxx:66
SfxObjectShell_Impl nTime DateTime
tools::Time
sfx2/source/inc/objshimp.hxx:106
SfxObjectShell_Impl xHeaderAttributes tools::SvRef<SvRefBase>
SvKeyValueIterator
sfx2/source/inc/statcach.hxx:66
SfxStateCache pInternalController SfxControllerItem *
SfxDispatchController_Impl
@@ -631,6 +418,9 @@ starmath/inc/caret.hxx:26
starmath/source/unofilter.cxx:28
(anonymous namespace)::MathTypeFilter m_xDstDoc uno::Reference<lang::XComponent>
SmModel
stoc/source/proxy_factory/proxyfac.cxx:153
(anonymous namespace)::binuno_Proxy m_typeDescr TypeDescription
_typelib_InterfaceTypeDescription
store/source/storbase.hxx:546
store::OStorePageObject m_xPage std::shared_ptr<PageData>
store::OStoreDirectoryPageData
@@ -646,9 +436,6 @@ svx/source/customshapes/EnhancedCustomShapeFunctionParser.cxx:459
svx/source/customshapes/EnhancedCustomShapeFunctionParser.cxx:460
(anonymous namespace)::BinaryFunctionExpression mpSecondArg std::shared_ptr<ExpressionNode>
(anonymous namespace)::BinaryFunctionExpression
svx/source/inc/fmundo.hxx:187
FmXUndoEnvironment m_pPropertySetCache void *
std::map
svx/source/unodraw/UnoGraphicExporter.cxx:172
(anonymous namespace)::GraphicExporter mpDoc SdrModel *
FmFormModel
@@ -673,24 +460,12 @@ sw/inc/contentindex.hxx:51
sw/inc/crsrsh.hxx:115
SwContentAtPos pFndTextAttr const SwTextAttr *
SwTextFootnote
sw/inc/doc.hxx:219
SwDoc mpMarkManager const std::unique_ptr< ::sw::mark::MarkManager>
IDocumentMarkAccess
sw/inc/docsh.hxx:72
SwDocShell m_xBasePool rtl::Reference<SfxStyleSheetBasePool>
SwDocStyleSheetPool
sw/inc/docstyle.hxx:52
SwDocStyleSheet m_pColl SwTextFormatColl *
SwConditionTextFormatColl
sw/inc/EnhancedPDFExportHelper.hxx:99
Num_Info mrFrame const SwFrame &
SwTextFrame
sw/inc/hints.hxx:61
SwPtrMsgPoolItem pObject void *
SwFormat
sw/inc/ndgrf.hxx:40
SwGrfNode mxLink tools::SvRef<sfx2::SvBaseLink>
SwBaseLink
sw/inc/OnlineAccessibilityCheck.hxx:30
sw::WeakNodeContainer m_pNode SwNode *
sw::BroadcastingModify
@@ -712,33 +487,24 @@ sw/inc/swserv.hxx:37
sw/inc/undobj.hxx:300
SwUndoFlyBase m_pFrameFormat SwFrameFormat *
sw::SpzFrameFormat
sw/inc/unotextcursor.hxx:78
SwXTextCursor m_pUnoCursor sw::UnoCursorPointer
SwCursor
sw/inc/view.hxx:197
SwView m_pWrtShell std::unique_ptr<SwWrtShell>
SwCursorShell
sw/inc/viscrs.hxx:44
SwVisibleCursor m_pCursorShell const SwCursorShell *
SwViewShell
sw/inc/viscrs.hxx:90
SwSelPaintRects m_pCursorOverlay std::unique_ptr<sdr::overlay::OverlayObject>
sdr::overlay::OverlaySelection
sw/qa/extras/mailmerge/mailmerge2.cxx:291
MMTest2 mxMMComponent uno::Reference<lang::XComponent>
SwXTextDocument
sw/qa/extras/mailmerge/mailmerge.cxx:300
MMTest mxMMComponent uno::Reference<lang::XComponent>
SwXTextDocument
sw/source/core/access/accfrmobj.hxx:82
sw::access::SwAccessibleChild mpDrawObj const SdrObject *
SwVirtFlyDrawObj
sw/source/core/access/accnotexthyperlink.hxx:35
SwAccessibleNoTextHyperlink mpFrame const SwFrame *
SwLayoutFrame
sw/source/core/doc/doccomp.cxx:1909
(anonymous namespace)::SaveMergeRedline pSrcRedl const SwRangeRedline *
SwPaM
sw/source/core/doc/DocumentRedlineManager.cxx:1110
(anonymous namespace)::TemporaryRedlineUpdater m_rRedline SwRangeRedline &
SwPaM
sw/source/core/inc/DocumentContentOperationsManager.hxx:120
sw::DocumentContentOperationsManager::ParaRstFormat pFormatColl SwFormatColl *
SwTextFormatColl
sw/source/core/doc/tblrwcl.cxx:81
(anonymous namespace)::CpyTabFrame pNewFrameFormat SwTableBoxFormat *
SwTableLineFormat
sw/source/core/inc/flowfrm.hxx:118
SwFlowFrame m_pFollow SwFlowFrame *
SwTextFrame
@@ -766,69 +532,30 @@ sw/source/core/text/inftxt.hxx:692
sw/source/core/text/itrtxt.hxx:35
SwTextIter m_pInf SwTextInfo *
SwTextSizeInfo
sw/source/core/text/itrtxt.hxx:36
SwTextIter m_pCurr SwLineLayout *
SwLinePortion
sw/source/core/text/porfld.hxx:242
SwFieldFormDropDownPortion m_pFieldMark sw::mark::IFieldmark *
sw::mark::DropDownFieldmark
sw/source/core/text/porfld.hxx:260
SwFieldFormDatePortion m_pFieldMark sw::mark::IFieldmark *
sw::mark::DateFieldmark
sw/source/core/undo/undraw.cxx:48
SwUndoGroupObjImpl pFormat SwDrawFrameFormat *
sw::SpzFrameFormat
sw/source/core/unocore/unoobj2.cxx:682
SwXTextRange::Impl m_pTableOrSectionFormat const SwFrameFormat *
SwSectionFormat
sw/source/core/unocore/unorefmk.cxx:592
SwXMeta::Impl m_pMeta sw::Meta *
sw::MetaField
sw/source/core/unocore/unotbl.cxx:122
(anonymous namespace)::FindUnoInstanceHint m_pResult rtl::Reference<SwXTextTableRow>
com::sun::star::beans::XPropertySet
sw/source/filter/html/swhtml.hxx:400
SwHTMLParser m_pActionViewShell SwViewShell *
SwEditShell
sw/source/filter/html/swhtml.hxx:406
SwHTMLParser m_pMarquee rtl::Reference<SdrObject>
SdrTextObj
sw/source/filter/ww8/ww8par.hxx:1269
SwWW8ImplReader m_pCurrentColl SwFormat *
SwTextFormatColl
sw/source/filter/ww8/ww8par.hxx:1294
SwWW8ImplReader m_pNumFieldType SwFieldType *
SwSetExpFieldType
sw/source/filter/ww8/ww8scan.hxx:95
SprmResult pSprm const sal_uInt8 *
WW8_ANLD
sw/source/filter/xml/xmlexp.hxx:54
SwXMLExport m_pTableItemMapper std::unique_ptr<SvXMLExportItemMapper>
(anonymous namespace)::SwXMLTableItemMapper_Impl
sw/source/filter/xml/xmlitem.hxx:37
SwXMLItemSetContext m_xBackground SvXMLImportContextRef
SwXMLBrushItemImportContext
sw/source/filter/xml/XMLRedlineImportHelper.hxx:45
XMLRedlineImportHelper m_rImport SvXMLImport &
SwXMLImport
sw/source/filter/xml/xmltbli.cxx:95
SwXMLTableCell_Impl m_xSubTable SvXMLImportContextRef
SwXMLTableContext
sw/source/filter/xml/xmltbli.cxx:305
(anonymous namespace)::SwXMLTableCellContext_Impl m_xMyTable SvXMLImportContextRef
SwXMLTableContext
sw/source/filter/xml/xmltbli.cxx:639
(anonymous namespace)::SwXMLTableColContext_Impl m_xMyTable SvXMLImportContextRef
SwXMLTableContext
sw/source/filter/xml/xmltbli.cxx:723
(anonymous namespace)::SwXMLTableColsContext_Impl m_xMyTable SvXMLImportContextRef
SwXMLTableContext
sw/source/filter/xml/xmltbli.cxx:767
(anonymous namespace)::SwXMLTableRowContext_Impl m_xMyTable SvXMLImportContextRef
SwXMLTableContext
sw/source/filter/xml/xmltbli.cxx:878
(anonymous namespace)::SwXMLTableRowsContext_Impl m_xMyTable SvXMLImportContextRef
SwXMLTableContext
sw/source/filter/xml/xmltbli.hxx:84
SwXMLTableContext m_xParentTable SvXMLImportContextRef
SwXMLTableContext
sw/source/ui/dialog/swdlgfact.hxx:231
AbstractSwBreakDlg_Impl m_xDlg std::shared_ptr<weld::DialogController>
SwBreakDlg
@@ -847,27 +574,9 @@ sw/source/uibase/inc/swuiccoll.hxx:35
sw/source/uibase/inc/unotools.hxx:48
SwOneExampleFrame m_xCursor css::uno::Reference<css::text::XTextCursor>
OTextCursorHelper
sw/source/uibase/inc/unotxvw.hxx:73
SwXTextView mxViewSettings css::uno::Reference<css::beans::XPropertySet>
comphelper::ChainablePropertySet
toolkit/source/awt/vclxwindow.cxx:133
VCLXWindowImpl mxWindowStyleSettings css::uno::Reference<css::awt::XStyleSettings>
toolkit::WindowStyleSettings
toolkit/source/controls/tree/treedatamodel.cxx:81
(anonymous namespace)::MutableTreeDataModel mxRootNode Reference<XTreeNode>
(anonymous namespace)::MutableTreeNode
unoidl/source/unoidl-read.cxx:151
(anonymous namespace)::Entity entity const rtl::Reference<unoidl::Entity>
unoidl::PublishableEntity
vbahelper/source/vbahelper/vbashaperange.cxx:36
(anonymous namespace)::VbShapeRangeEnumHelper m_xParent uno::Reference<XCollection>
ScVbaShapeRange
vbahelper/source/vbahelper/vbashapes.cxx:55
(anonymous namespace)::VbShapeEnumHelper m_xParent uno::Reference<msforms::XShapes>
ScVbaShapes
vcl/inc/animate/AnimationRenderer.hxx:36
AnimationData mpRendererData void *
AnimationRenderer
vcl/inc/animate/AnimationRenderer.hxx:48
AnimationRenderer mpRenderContext VclPtr<OutputDevice>
vcl::WindowOutputDevice
@@ -904,9 +613,6 @@ vcl/inc/svdata.hxx:397
vcl/inc/svimpbox.hxx:185
SvImpLBox m_pView VclPtr<SvTreeListBox>
IconView
vcl/inc/unx/cupsmgr.hxx:42
psp::CUPSManager m_pDests void *
cups_dest_s
vcl/inc/unx/gendisp.hxx:31
SalGenericDisplay m_pCapture SalFrame *
GtkSalFrame
@@ -916,12 +622,6 @@ vcl/inc/unx/gtk/gtksalmenu.hxx:55
vcl/inc/unx/i18n_cb.hxx:77
preedit_data_t pFrame SalFrame *
X11SalFrame
vcl/inc/unx/salgdi.h:128
X11SalGraphics m_pFrame SalFrame *
SalGeometryProvider
vcl/inc/unx/salgdi.h:129
X11SalGraphics m_pVDev SalVirtualDevice *
SalGeometryProvider
vcl/inc/unx/salgdi.h:136
X11SalGraphics mxImpl std::unique_ptr<SalGraphicsImpl>
X11GraphicsImpl
@@ -934,9 +634,12 @@ vcl/inc/window.h:233
vcl/inc/window.h:234
WindowImpl mpClientWindow VclPtr<vcl::Window>
WorkWindow
vcl/inc/window.h:245
WindowImpl mpDlgCtrlDownWindow VclPtr<vcl::Window>
PushButton
vcl/qa/cppunit/lifecycle.cxx:212
(anonymous namespace)::LeakTestObject mxRef VclPtr<vcl::Window>
vcl::Window
vcl/qa/cppunit/lifecycle.cxx:213
(anonymous namespace)::LeakTestObject mpRef void *
vcl::Window
vcl/source/control/imivctl.hxx:130
SvxIconChoiceCtrl_Impl pView VclPtr<SvtIconChoiceCtrl>
vcl::Window
@@ -946,27 +649,9 @@ vcl/source/window/impldockingwrapper.hxx:42
vcl/source/window/impldockingwrapper.hxx:46
ImplDockingWindowWrapper mpOldBorderWin VclPtr<vcl::Window>
ImplBorderWindow
vcl/source/window/menubarwindow.hxx:71
MenuBarWindow m_pMenu VclPtr<Menu>
MenuBar
vcl/source/window/menufloatingwindow.hxx:38
MenuFloatingWindow pMenu VclPtr<Menu>
PopupMenu
vcl/source/window/menuitemlist.hxx:38
MenuItemData pSubMenu VclPtr<Menu>
PopupMenu
vcl/unx/generic/dtrans/X11_selection.hxx:221
x11::SelectionManager::DropTargetEntry m_pTarget DropTarget *
com::sun::star::datatransfer::dnd::XDropTarget
vcl/unx/generic/gdi/cairo_xlib_cairo.hxx:40
cairo::X11SysData pDisplay void *
_XDisplay
vcl/unx/generic/gdi/cairo_xlib_cairo.hxx:42
cairo::X11SysData pVisual void *
Visual
vcl/unx/generic/gdi/cairo_xlib_cairo.hxx:49
cairo::X11Pixmap mpDisplay void *
_XDisplay
writerfilter/source/dmapper/DomainMapper_Impl.hxx:529
writerfilter::dmapper::DomainMapper_Impl m_pLastSectionContext PropertyMapPtr
writerfilter::dmapper::SectionPropertyMap
@@ -988,15 +673,9 @@ writerfilter/source/ooxml/OOXMLFastContextHandler.hxx:536
writerperfect/inc/DocumentHandler.hxx:47
writerperfect::DocumentHandler mxHandler css::uno::Reference<css::xml::sax::XDocumentHandler>
SvXMLImport
xmloff/inc/XMLShapePropertySetContext.hxx:26
XMLShapePropertySetContext mxBulletStyle SvXMLImportContextRef
SvxXMLListStyleContext
xmloff/source/draw/ximpshap.hxx:555
SdXMLFrameShapeContext mxImplContext SvXMLImportContextRef
SdXMLShapeContext
xmloff/source/text/txtparaimphint.hxx:223
XMLDrawHint_Impl xContext SvXMLImportContextRef
SvXMLShapeContext
xmloff/source/text/XMLTextFrameContext.hxx:38
XMLTextFrameContext m_xImplContext SvXMLImportContextRef
(anonymous namespace)::XMLTextFrameContext_Impl
@@ -1021,18 +700,12 @@ xmloff/source/transform/StyleOASISTContext.cxx:63
xmloff/source/transform/StyleOOoTContext.cxx:144
(anonymous namespace)::XMLTypedPropertiesOOoTContext_Impl m_xAttrList css::uno::Reference<css::xml::sax::XAttributeList>
XMLMutableAttributeList
xmlscript/source/xmldlg_imexp/imp_share.hxx:589
xmlscript::ComboBoxElement _popup css::uno::Reference<css::xml::input::XElement>
xmlscript::MenuPopupElement
xmlscript/source/xmldlg_imexp/imp_share.hxx:608
xmlscript::MenuListElement _popup css::uno::Reference<css::xml::input::XElement>
xmlscript::MenuPopupElement
xmlscript/source/xmldlg_imexp/imp_share.hxx:199
xmlscript::ElementBase m_pParent ElementBase *
xmlscript::ControlElement
xmlscript/source/xmllib_imexp/imp_share.hxx:149
xmlscript::LibElementBase mxParent rtl::Reference<LibElementBase>
xmlscript::LibrariesElement
xmlsecurity/inc/xsecctl.hxx:73
InternalSignatureInformation xReferenceResolvedListener css::uno::Reference<css::xml::crypto::sax::XReferenceResolvedListener>
SignatureVerifierImpl
xmlsecurity/source/xmlsec/nss/securityenvironment_nssimpl.hxx:55
SecurityEnvironment_NssImpl m_xSigningCertificate css::uno::Reference<css::security::XCertificate>
X509Certificate_NssImpl
diff --git a/compilerplugins/clang/test/fieldcast.cxx b/compilerplugins/clang/test/fieldcast.cxx
index 32792a0..98e43d0 100644
--- a/compilerplugins/clang/test/fieldcast.cxx
+++ b/compilerplugins/clang/test/fieldcast.cxx
@@ -9,6 +9,7 @@
#include <rtl/ustring.hxx>
#include <rtl/ref.hxx>
#include <memory>
struct Foo
{
@@ -31,4 +32,25 @@ class Test2
rtl::Reference<Foo> m_p;
void test1() { (void)dynamic_cast<Bar*>(m_p.get()); }
};
class Test3
{
// no warning expected, casting to a less specific type
rtl::Reference<Bar> m_p;
void test1() { (void)static_cast<Foo*>(m_p.get()); }
};
class Test4
{
// expected-error@+1 {{cast Bar [loplugin:fieldcast]}}
std::unique_ptr<Foo> m_p;
void test1() { (void)dynamic_cast<Bar*>(m_p.get()); }
};
class Test5
{
// expected-error@+1 {{cast Bar [loplugin:fieldcast]}}
std::shared_ptr<Foo> m_p;
void test1() { (void)dynamic_cast<Bar*>(m_p.get()); }
};
/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */