[Libreoffice-commits] core.git: compilerplugins/clang
Stephan Bergmann
sbergman at redhat.com
Fri Oct 20 06:31:56 UTC 2017
compilerplugins/clang/pluginhandler.cxx | 11 ++++++-----
compilerplugins/clang/pluginhandler.hxx | 1 +
2 files changed, 7 insertions(+), 5 deletions(-)
New commits:
commit 15dce20e8b97dbd0179f01910ca4d0027e80ff4e
Author: Stephan Bergmann <sbergman at redhat.com>
Date: Thu Oct 19 21:33:08 2017 +0200
Fully ignore inappropriately named loplugins in unit-test mode
...even if they implement PPCallbacks, so filtering them out in
HandleTranslationUnit was ineffective.
Change-Id: I9df8103a50739f3176e6d63accfd0334da7faa9a
Reviewed-on: https://gerrit.libreoffice.org/43575
Reviewed-by: Stephan Bergmann <sbergman at redhat.com>
Tested-by: Stephan Bergmann <sbergman at redhat.com>
diff --git a/compilerplugins/clang/pluginhandler.cxx b/compilerplugins/clang/pluginhandler.cxx
index 5712f02dcc3a..d82a369cb119 100644
--- a/compilerplugins/clang/pluginhandler.cxx
+++ b/compilerplugins/clang/pluginhandler.cxx
@@ -55,6 +55,7 @@ static bool unitTestMode = false;
PluginHandler::PluginHandler( CompilerInstance& compiler, const std::vector< std::string >& args )
: compiler( compiler )
+ , mainFileName(compiler.getASTContext().getSourceManager().getFileEntryForID(compiler.getASTContext().getSourceManager().getMainFileID())->getName())
, rewriter( compiler.getSourceManager(), compiler.getLangOpts())
, scope( "mainfile" )
, warningsAsErrors( false )
@@ -120,6 +121,10 @@ void PluginHandler::createPlugins( std::set< std::string > rewriters )
for( int i = 0; i < pluginCount; ++i )
{
const char* name = plugins[i].optionName;
+ // When in unit-test mode, ignore plugins whose names don't match the filename of the test,
+ // so that we only generate warnings for the plugin that we want to test.
+ if (unitTestMode && mainFileName.find(plugins[ i ].optionName) == StringRef::npos)
+ continue;
if( rewriters.erase( name ) != 0 )
plugins[ i ].object = plugins[ i ].create( Plugin::InstantiationData { name, *this, compiler, &rewriter } );
else if( plugins[ i ].byDefault )
@@ -179,7 +184,6 @@ void PluginHandler::HandleTranslationUnit( ASTContext& context )
{
if( context.getDiagnostics().hasErrorOccurred())
return;
- StringRef const mainFileName = context.getSourceManager().getFileEntryForID(context.getSourceManager().getMainFileID())->getName();
if (mainFileName.endswith(".ii"))
{
report(DiagnosticsEngine::Fatal,
@@ -191,10 +195,7 @@ void PluginHandler::HandleTranslationUnit( ASTContext& context )
{
if( plugins[ i ].object != NULL )
{
- // When in unit-test mode, ignore plugins whose names don't match the filename of the test,
- // so that we only generate warnings for the plugin that we want to test.
- if (!unitTestMode || mainFileName.find(plugins[ i ].optionName) != StringRef::npos)
- plugins[ i ].object->run();
+ plugins[ i ].object->run();
}
}
#if defined _WIN32
diff --git a/compilerplugins/clang/pluginhandler.hxx b/compilerplugins/clang/pluginhandler.hxx
index 9c3d0a49c839..63210fa11df4 100644
--- a/compilerplugins/clang/pluginhandler.hxx
+++ b/compilerplugins/clang/pluginhandler.hxx
@@ -43,6 +43,7 @@ private:
void createPlugins( std::set< std::string > rewriters );
DiagnosticBuilder report( DiagnosticsEngine::Level level, StringRef message, SourceLocation loc = SourceLocation());
CompilerInstance& compiler;
+ StringRef const mainFileName;
Rewriter rewriter;
std::set< SourceLocation > removals;
std::string scope;
More information about the Libreoffice-commits
mailing list