summaryrefslogtreecommitdiff
path: root/compilerplugins
diff options
context:
space:
mode:
authorStephan Bergmann <stephan.bergmann@allotropia.de>2024-05-30 09:27:29 +0200
committerStephan Bergmann <stephan.bergmann@allotropia.de>2024-05-31 12:27:51 +0200
commitde4708fcafbdd99ee0c585f980edcc3bb230c105 (patch)
tree47502a83cdf054fe60b7e29900aeb3eb6022d868 /compilerplugins
parentbe2638603b85974cc452e3d453f4adb9d9f5d97f (diff)
Avoid --enable-compiler-plugins=debug loplugin:overrideparam TODO warning
> cui/source/factory/dlgfact.hxx:531:116: fatal error: TODO: Unexpected 'IdenticalDefaultArgumentsResult::Maybe' [loplugin:overrideparam] > 531 | const OUString& rName, const OUString& rDesc, const OUString& rTitle = u""_ustr) override; > | ^~~~~~~~ > include/svx/svxdlg.hxx:380:116: note: TODO: second argument is here [loplugin:overrideparam] > 380 | const OUString& rName, const OUString& rDesc, const OUString& rTitle = u""_ustr ) = 0; > | ^~~~~~~~ > MaterializeTemporaryExpr 0x1732504d0 'const OUString':'const class rtl::OUString' lvalue > `-ImplicitCastExpr 0x1732504b8 'const OUString':'const class rtl::OUString' <NoOp> > `-CXXBindTemporaryExpr 0x173250498 'OUString':'class rtl::OUString' (CXXTemporary 0x173250498) > `-UserDefinedLiteral 0x173250468 'OUString':'class rtl::OUString' > `-ImplicitCastExpr 0x173250450 'OUString (*)(void)' <FunctionToPointerDecay> > `-DeclRefExpr 0x173250430 'OUString (void)' lvalue Function 0x14a24f188 'operator""_ustr' 'OUString (void)' > MaterializeTemporaryExpr 0x14a250658 'const OUString':'const class rtl::OUString' lvalue > `-ImplicitCastExpr 0x14a250640 'const OUString':'const class rtl::OUString' <NoOp> > `-CXXBindTemporaryExpr 0x14a250620 'OUString':'class rtl::OUString' (CXXTemporary 0x14a250620) > `-UserDefinedLiteral 0x14a2505f0 'OUString':'class rtl::OUString' > `-ImplicitCastExpr 0x14a2505d8 'OUString (*)(void)' <FunctionToPointerDecay> > `-DeclRefExpr 0x14a24f298 'OUString (void)' lvalue Function 0x14a24f188 'operator""_ustr' 'OUString (void)' (Unfortunately, there appears to be no way to get at the actual string literal content here to check it for equality, so keep returning Maybe for now.) Change-Id: I4beac3c7f17a689488a41efe5da0554af7beff65 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/168246 Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de> Tested-by: Jenkins
Diffstat (limited to 'compilerplugins')
-rw-r--r--compilerplugins/clang/plugin.cxx14
1 files changed, 14 insertions, 0 deletions
diff --git a/compilerplugins/clang/plugin.cxx b/compilerplugins/clang/plugin.cxx
index 8d8207d30437..f47fc01bd074 100644
--- a/compilerplugins/clang/plugin.cxx
+++ b/compilerplugins/clang/plugin.cxx
@@ -611,6 +611,20 @@ Plugin::IdenticalDefaultArgumentsResult Plugin::checkIdenticalDefaultArguments(
: IdenticalDefaultArgumentsResult::No;
}
}
+ if (auto const lit1 = dyn_cast<clang::UserDefinedLiteral>(
+ argument1->IgnoreImplicit()->IgnoreParens()))
+ {
+ if (auto const lit2 = dyn_cast<clang::UserDefinedLiteral>(
+ argument2->IgnoreImplicit()->IgnoreParens()))
+ {
+ return lit1->getLiteralOperatorKind() == clang::UserDefinedLiteral::LOK_Template
+ && lit2->getLiteralOperatorKind() == clang::UserDefinedLiteral::LOK_Template
+ && lit1->getCalleeDecl()->getCanonicalDecl()
+ == lit2->getCalleeDecl()->getCanonicalDecl()
+ ? IdenticalDefaultArgumentsResult::Maybe //TODO: obtain content to compare
+ : IdenticalDefaultArgumentsResult::No;
+ }
+ }
// catch params with defaults like "= OUString()"
for (Expr const * e1 = desugared1, * e2 = desugared2;;) {
auto const ce1 = dyn_cast<CXXConstructExpr>(skipImplicit(e1));