summaryrefslogtreecommitdiff
path: root/compilerplugins/clang
diff options
context:
space:
mode:
Diffstat (limited to 'compilerplugins/clang')
-rw-r--r--compilerplugins/clang/pluginhandler.cxx5
-rw-r--r--compilerplugins/clang/pluginhandler.hxx1
2 files changed, 5 insertions, 1 deletions
diff --git a/compilerplugins/clang/pluginhandler.cxx b/compilerplugins/clang/pluginhandler.cxx
index 32651e18a5d0..bdee467fa82f 100644
--- a/compilerplugins/clang/pluginhandler.cxx
+++ b/compilerplugins/clang/pluginhandler.cxx
@@ -55,6 +55,7 @@ PluginHandler::PluginHandler( CompilerInstance& compiler, const vector< string >
: compiler( compiler )
, rewriter( compiler.getSourceManager(), compiler.getLangOpts())
, scope( "mainfile" )
+ , warningsAsErrors( false )
{
set< string > rewriters;
for( vector< string >::const_iterator it = args.begin();
@@ -101,6 +102,8 @@ void PluginHandler::handleOption( const string& option )
{
warningsOnly = option.substr(14);
}
+ else if( option == "warnings-as-errors" )
+ warningsAsErrors = true;
else
report( DiagnosticsEngine::Fatal, "unknown option %0" ) << option;
}
@@ -137,7 +140,7 @@ DiagnosticBuilder PluginHandler::report( DiagnosticsEngine::Level level, const c
{
DiagnosticsEngine& diag = compiler.getDiagnostics();
// Do some mappings (e.g. for -Werror) that clang does not do for custom messages for some reason.
- if( level == DiagnosticsEngine::Warning && diag.getWarningsAsErrors() && (plugin == nullptr || plugin != warningsOnly))
+ if( level == DiagnosticsEngine::Warning && ((diag.getWarningsAsErrors() && (plugin == nullptr || plugin != warningsOnly)) || warningsAsErrors))
level = DiagnosticsEngine::Error;
if( level == DiagnosticsEngine::Error && diag.getErrorsAsFatal())
level = DiagnosticsEngine::Fatal;
diff --git a/compilerplugins/clang/pluginhandler.hxx b/compilerplugins/clang/pluginhandler.hxx
index 3992a70a2402..f0cece4deb8c 100644
--- a/compilerplugins/clang/pluginhandler.hxx
+++ b/compilerplugins/clang/pluginhandler.hxx
@@ -45,6 +45,7 @@ class PluginHandler
set< SourceLocation > removals;
string scope;
string warningsOnly;
+ bool warningsAsErrors;
};
/**