diff options
author | Stephan Bergmann <stephan.bergmann@allotropia.de> | 2024-05-30 09:27:29 +0200 |
---|---|---|
committer | Stephan Bergmann <stephan.bergmann@allotropia.de> | 2024-05-31 12:27:51 +0200 |
commit | de4708fcafbdd99ee0c585f980edcc3bb230c105 (patch) | |
tree | 47502a83cdf054fe60b7e29900aeb3eb6022d868 /compilerplugins | |
parent | be2638603b85974cc452e3d453f4adb9d9f5d97f (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.cxx | 14 |
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)); |