compilerplugins/clang/plugin.cxx |   14 ++++++++++++++
 1 file changed, 14 insertions(+)

New commits:
commit de4708fcafbdd99ee0c585f980edcc3bb230c105
Author:     Stephan Bergmann <stephan.bergm...@allotropia.de>
AuthorDate: Thu May 30 09:27:29 2024 +0200
Commit:     Stephan Bergmann <stephan.bergm...@allotropia.de>
CommitDate: Fri May 31 12:27:51 2024 +0200

    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.bergm...@allotropia.de>
    Tested-by: Jenkins

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));

Reply via email to