summaryrefslogtreecommitdiff
path: root/compilerplugins
diff options
context:
space:
mode:
authorNoel Grandin <noel.grandin@collabora.co.uk>2019-07-18 11:02:49 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2019-07-19 09:06:25 +0200
commitcc3d75e14c840ed7c026fcdba5ca027ba516940a (patch)
treeaad38ca5892599a0d755ca186bdbf3d40db0f81e /compilerplugins
parent8a08eaedfb2c9a6c002220a61c5b1f8ce1130f54 (diff)
make cppunitassertequals a shared plugin
Change-Id: Ied9c26248cb72f2146fbe1a985f825f7525fa17c Reviewed-on: https://gerrit.libreoffice.org/75836 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'compilerplugins')
-rw-r--r--compilerplugins/clang/cppunitassertequals.cxx18
-rw-r--r--compilerplugins/clang/sharedvisitor/sharedvisitor.cxx15
2 files changed, 28 insertions, 5 deletions
diff --git a/compilerplugins/clang/cppunitassertequals.cxx b/compilerplugins/clang/cppunitassertequals.cxx
index 135a7e5c829a..930ecdd74e13 100644
--- a/compilerplugins/clang/cppunitassertequals.cxx
+++ b/compilerplugins/clang/cppunitassertequals.cxx
@@ -6,6 +6,7 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
+#ifndef LO_CLANG_SHARED_PLUGINS
#include "plugin.hxx"
#include "check.hxx"
@@ -27,9 +28,14 @@ public:
explicit CppunitAssertEquals(loplugin::InstantiationData const & data):
FilteringPlugin(data) {}
+ virtual bool preRun() override
+ {
+ return compiler.getLangOpts().CPlusPlus;
+ }
+
virtual void run() override
{
- if (compiler.getLangOpts().CPlusPlus) {
+ if (preRun()) {
TraverseDecl(compiler.getASTContext().getTranslationUnitDecl());
}
}
@@ -129,7 +135,7 @@ bool CppunitAssertEquals::VisitCallExpr(const CallExpr* callExpr)
}
// copied from stringconcat.cxx
-Expr const * stripCtor(Expr const * expr) {
+Expr const * stripConstructor(Expr const * expr) {
auto e0 = expr;
auto const e1 = dyn_cast<CXXFunctionalCastExpr>(e0);
if (e1 != nullptr) {
@@ -164,7 +170,7 @@ bool CppunitAssertEquals::isCompileTimeConstant(Expr const * expr)
return true;
// is string literal ?
expr = expr->IgnoreParenImpCasts();
- expr = stripCtor(expr);
+ expr = stripConstructor(expr);
return isa<clang::StringLiteral>(expr);
}
@@ -220,8 +226,10 @@ void CppunitAssertEquals::reportEquals(
<< (name == "CPPUNIT_ASSERT_MESSAGE") << negative << range;
}
-loplugin::Plugin::Registration< CppunitAssertEquals > X("cppunitassertequals");
+loplugin::Plugin::Registration< CppunitAssertEquals > cppunitassertequals("cppunitassertequals");
-}
+} // namespace
+
+#endif // LO_CLANG_SHARED_PLUGINS
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/compilerplugins/clang/sharedvisitor/sharedvisitor.cxx b/compilerplugins/clang/sharedvisitor/sharedvisitor.cxx
index 1552f2661f32..0b95aeb711f0 100644
--- a/compilerplugins/clang/sharedvisitor/sharedvisitor.cxx
+++ b/compilerplugins/clang/sharedvisitor/sharedvisitor.cxx
@@ -14,6 +14,7 @@
#include "../badstatics.cxx"
#include "../blockblock.cxx"
#include "../charrightshift.cxx"
+#include "../cppunitassertequals.cxx"
#include "../data.cxx"
#include "../datamembershadow.cxx"
#include "../dbgunhandledexception.cxx"
@@ -84,6 +85,7 @@ public:
, badStatics( nullptr )
, blockBlock( nullptr )
, charRightShift( nullptr )
+ , cppunitAssertEquals( nullptr )
, data( nullptr )
, dataMemberShadow( nullptr )
, dbgUnhandledException( nullptr )
@@ -143,6 +145,8 @@ public:
blockBlock = nullptr;
if( charRightShift && !charRightShift->preRun())
charRightShift = nullptr;
+ if( cppunitAssertEquals && !cppunitAssertEquals->preRun())
+ cppunitAssertEquals = nullptr;
if( data && !data->preRun())
data = nullptr;
if( dataMemberShadow && !dataMemberShadow->preRun())
@@ -253,6 +257,8 @@ public:
blockBlock->postRun();
if( charRightShift )
charRightShift->postRun();
+ if( cppunitAssertEquals )
+ cppunitAssertEquals->postRun();
if( data )
data->postRun();
if( dataMemberShadow )
@@ -369,6 +375,8 @@ public:
blockBlock = static_cast< BlockBlock* >( plugin );
else if( strcmp( name, "charrightshift" ) == 0 )
charRightShift = static_cast< CharRightShift* >( plugin );
+ else if( strcmp( name, "cppunitassertequals" ) == 0 )
+ cppunitAssertEquals = static_cast< CppunitAssertEquals* >( plugin );
else if( strcmp( name, "data" ) == 0 )
data = static_cast< Data* >( plugin );
else if( strcmp( name, "datamembershadow" ) == 0 )
@@ -773,6 +781,11 @@ public:
{
if( ignoreLocation( arg ))
return true;
+ if( cppunitAssertEquals != nullptr )
+ {
+ if( !cppunitAssertEquals->VisitCallExpr( arg ))
+ cppunitAssertEquals = nullptr;
+ }
if( dbgUnhandledException != nullptr )
{
if( !dbgUnhandledException->VisitCallExpr( arg ))
@@ -1425,6 +1438,7 @@ private:
return badStatics != nullptr
|| blockBlock != nullptr
|| charRightShift != nullptr
+ || cppunitAssertEquals != nullptr
|| data != nullptr
|| dataMemberShadow != nullptr
|| dbgUnhandledException != nullptr
@@ -1479,6 +1493,7 @@ private:
BadStatics* badStatics;
BlockBlock* blockBlock;
CharRightShift* charRightShift;
+ CppunitAssertEquals* cppunitAssertEquals;
Data* data;
DataMemberShadow* dataMemberShadow;
DbgUnhandledException* dbgUnhandledException;