compilerplugins/clang/cppunitassertequals.cxx      |    7 +++--
 compilerplugins/clang/test/cppunitassertequals.cxx |   26 ++++++++++-----------
 2 files changed, 17 insertions(+), 16 deletions(-)

New commits:
commit 7529dbcb2492c3866cff1137524261adb44008af
Author:     Stephan Bergmann <sberg...@redhat.com>
AuthorDate: Fri Feb 5 08:36:04 2021 +0100
Commit:     Stephan Bergmann <sberg...@redhat.com>
CommitDate: Fri Feb 5 21:58:41 2021 +0100

    Make loplugin:cppunitassetequals diagnostic more informative
    
    ...which will come in handy for a later improvement of that plugin
    
    Change-Id: I548b9388bee60b381c0a2c820f20f596aa0072f4
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/110453
    Tested-by: Jenkins
    Reviewed-by: Stephan Bergmann <sberg...@redhat.com>

diff --git a/compilerplugins/clang/cppunitassertequals.cxx 
b/compilerplugins/clang/cppunitassertequals.cxx
index 3647540baf8a..4f5e364540c8 100644
--- a/compilerplugins/clang/cppunitassertequals.cxx
+++ b/compilerplugins/clang/cppunitassertequals.cxx
@@ -225,11 +225,12 @@ void CppunitAssertEquals::reportEquals(
     report(
         DiagnosticsEngine::Warning,
         ("rather call"
-         " %select{CPPUNIT_ASSERT_EQUAL|CPPUNIT_ASSERT_EQUAL_MESSAGE}0 (or"
-         " rewrite as an explicit operator %select{==|!=}1 call when the"
+         " %select{CPPUNIT_ASSERT_EQUAL|CPPUNIT_ASSERT_EQUAL_MESSAGE}0 when 
comparing %1 and %2 (or"
+         " rewrite as an explicit operator %select{==|!=}3 call when the"
          " operator itself is the topic)"),
         range.getBegin())
-        << (name == "CPPUNIT_ASSERT_MESSAGE") << negative << range;
+        << (name == "CPPUNIT_ASSERT_MESSAGE") << 
lhs->IgnoreImpCasts()->getType()
+        << rhs->IgnoreImpCasts()->getType() << negative << range;
 }
 
 loplugin::Plugin::Registration< CppunitAssertEquals > 
cppunitassertequals("cppunitassertequals");
diff --git a/compilerplugins/clang/test/cppunitassertequals.cxx 
b/compilerplugins/clang/test/cppunitassertequals.cxx
index d42007c99d66..0eb1b4e3cfd9 100644
--- a/compilerplugins/clang/test/cppunitassertequals.cxx
+++ b/compilerplugins/clang/test/cppunitassertequals.cxx
@@ -31,22 +31,22 @@ void test(
     CPPUNIT_ASSERT(!!(b1 && b2)); // expected-error {{rather split into two 
CPPUNIT_ASSERT [loplugin:cppunitassertequals]}}
     CPPUNIT_ASSERT_MESSAGE("", b1 && b2); // expected-error {{rather split 
into two CPPUNIT_ASSERT_MESSAGE [loplugin:cppunitassertequals]}}
 #endif
-    CPPUNIT_ASSERT(b1 == b2); // expected-error {{rather call 
CPPUNIT_ASSERT_EQUAL (or rewrite as an explicit operator == call when the 
operator itself is the topic) [loplugin:cppunitassertequals]}}
+    CPPUNIT_ASSERT(b1 == b2); // expected-error {{rather call 
CPPUNIT_ASSERT_EQUAL when comparing 'bool' and 'bool' (or rewrite as an 
explicit operator == call when the operator itself is the topic) 
[loplugin:cppunitassertequals]}}
     CPPUNIT_ASSERT(b1 != b2);
-    CPPUNIT_ASSERT((b1 == b2)); // expected-error {{rather call 
CPPUNIT_ASSERT_EQUAL (or rewrite as an explicit operator == call when the 
operator itself is the topic) [loplugin:cppunitassertequals]}}
-    CPPUNIT_ASSERT(!(b1 != b2)); // expected-error {{rather call 
CPPUNIT_ASSERT_EQUAL (or rewrite as an explicit operator != call when the 
operator itself is the topic) [loplugin:cppunitassertequals]}}
+    CPPUNIT_ASSERT((b1 == b2)); // expected-error {{rather call 
CPPUNIT_ASSERT_EQUAL when comparing 'bool' and 'bool' (or rewrite as an 
explicit operator == call when the operator itself is the topic) 
[loplugin:cppunitassertequals]}}
+    CPPUNIT_ASSERT(!(b1 != b2)); // expected-error {{rather call 
CPPUNIT_ASSERT_EQUAL when comparing 'bool' and 'bool' (or rewrite as an 
explicit operator != call when the operator itself is the topic) 
[loplugin:cppunitassertequals]}}
     CPPUNIT_ASSERT(!(b1 == b2));
-    CPPUNIT_ASSERT(!!(b1 == b2)); // expected-error {{rather call 
CPPUNIT_ASSERT_EQUAL (or rewrite as an explicit operator == call when the 
operator itself is the topic) [loplugin:cppunitassertequals]}}
-    CPPUNIT_ASSERT_MESSAGE("", b1 == b2); // expected-error {{rather call 
CPPUNIT_ASSERT_EQUAL_MESSAGE (or rewrite as an explicit operator == call when 
the operator itself is the topic) [loplugin:cppunitassertequals]}}
-    CPPUNIT_ASSERT(s1 == s2); // expected-error {{rather call 
CPPUNIT_ASSERT_EQUAL (or rewrite as an explicit operator == call when the 
operator itself is the topic) [loplugin:cppunitassertequals]}}
+    CPPUNIT_ASSERT(!!(b1 == b2)); // expected-error {{rather call 
CPPUNIT_ASSERT_EQUAL when comparing 'bool' and 'bool' (or rewrite as an 
explicit operator == call when the operator itself is the topic) 
[loplugin:cppunitassertequals]}}
+    CPPUNIT_ASSERT_MESSAGE("", b1 == b2); // expected-error {{rather call 
CPPUNIT_ASSERT_EQUAL_MESSAGE when comparing 'bool' and 'bool' (or rewrite as an 
explicit operator == call when the operator itself is the topic) 
[loplugin:cppunitassertequals]}}
+    CPPUNIT_ASSERT(s1 == s2); // expected-error {{rather call 
CPPUNIT_ASSERT_EQUAL when comparing 'const rtl::OUString' and 'const 
rtl::OUString' (or rewrite as an explicit operator == call when the operator 
itself is the topic) [loplugin:cppunitassertequals]}}
     CPPUNIT_ASSERT(s1 != s2);
-    CPPUNIT_ASSERT((s1 == s2)); // expected-error {{rather call 
CPPUNIT_ASSERT_EQUAL (or rewrite as an explicit operator == call when the 
operator itself is the topic) [loplugin:cppunitassertequals]}}
-    CPPUNIT_ASSERT(!(s1 != s2)); // expected-error {{rather call 
CPPUNIT_ASSERT_EQUAL (or rewrite as an explicit operator != call when the 
operator itself is the topic) [loplugin:cppunitassertequals]}}
+    CPPUNIT_ASSERT((s1 == s2)); // expected-error {{rather call 
CPPUNIT_ASSERT_EQUAL when comparing 'const rtl::OUString' and 'const 
rtl::OUString' (or rewrite as an explicit operator == call when the operator 
itself is the topic) [loplugin:cppunitassertequals]}}
+    CPPUNIT_ASSERT(!(s1 != s2)); // expected-error {{rather call 
CPPUNIT_ASSERT_EQUAL when comparing 'const rtl::OUString' and 'const 
rtl::OUString' (or rewrite as an explicit operator != call when the operator 
itself is the topic) [loplugin:cppunitassertequals]}}
     CPPUNIT_ASSERT(!(s1 == s2));
-    CPPUNIT_ASSERT(!!(s1 == s2)); // expected-error {{rather call 
CPPUNIT_ASSERT_EQUAL (or rewrite as an explicit operator == call when the 
operator itself is the topic) [loplugin:cppunitassertequals]}}
-    TEST1; // expected-error {{rather call CPPUNIT_ASSERT_EQUAL (or rewrite as 
an explicit operator == call when the operator itself is the topic) 
[loplugin:cppunitassertequals]}}
-    TEST2(CPPUNIT_ASSERT(b1 == b2)); // expected-error {{rather call 
CPPUNIT_ASSERT_EQUAL (or rewrite as an explicit operator == call when the 
operator itself is the topic) [loplugin:cppunitassertequals]}}
-    TEST2(TEST1); // expected-error {{rather call CPPUNIT_ASSERT_EQUAL (or 
rewrite as an explicit operator == call when the operator itself is the topic) 
[loplugin:cppunitassertequals]}}
+    CPPUNIT_ASSERT(!!(s1 == s2)); // expected-error {{rather call 
CPPUNIT_ASSERT_EQUAL when comparing 'const rtl::OUString' and 'const 
rtl::OUString' (or rewrite as an explicit operator == call when the operator 
itself is the topic) [loplugin:cppunitassertequals]}}
+    TEST1; // expected-error {{rather call CPPUNIT_ASSERT_EQUAL when comparing 
'bool' and 'bool' (or rewrite as an explicit operator == call when the operator 
itself is the topic) [loplugin:cppunitassertequals]}}
+    TEST2(CPPUNIT_ASSERT(b1 == b2)); // expected-error {{rather call 
CPPUNIT_ASSERT_EQUAL when comparing 'bool' and 'bool' (or rewrite as an 
explicit operator == call when the operator itself is the topic) 
[loplugin:cppunitassertequals]}}
+    TEST2(TEST1); // expected-error {{rather call CPPUNIT_ASSERT_EQUAL when 
comparing 'bool' and 'bool' (or rewrite as an explicit operator == call when 
the operator itself is the topic) [loplugin:cppunitassertequals]}}
 
     // Useful when testing an equality iterator itself:
     CPPUNIT_ASSERT(operator ==(s1, s1));
@@ -57,7 +57,7 @@ void test(
     // very meaningful, so let it use CPPUNIT_ASSERT (but stick to 
CPPUNIT_ASSERT_EQUAL for
     // consistency in the unlikely case that P is of type std::nullptr_t):
     CPPUNIT_ASSERT(p == nullptr);
-    CPPUNIT_ASSERT(n == nullptr); // expected-error {{rather call 
CPPUNIT_ASSERT_EQUAL (or rewrite as an explicit operator == call when the 
operator itself is the topic) [loplugin:cppunitassertequals]}}
+    CPPUNIT_ASSERT(n == nullptr); // expected-error {{rather call 
CPPUNIT_ASSERT_EQUAL when comparing 'std::nullptr_t' (aka 'nullptr_t') and 
'nullptr_t' (or rewrite as an explicit operator == call when the operator 
itself is the topic) [loplugin:cppunitassertequals]}}
 
     // There might even be good reasons(?) not to warn inside explicit casts:
     CPPUNIT_ASSERT(bool(b1 && b2));
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to