diff options
-rw-r--r-- | src/compiler/scala/tools/nsc/Global.scala | 4 | ||||
-rw-r--r-- | src/compiler/scala/tools/nsc/Settings.scala | 1 | ||||
-rw-r--r-- | src/compiler/scala/tools/nsc/reporters/AbstractReporter.scala | 8 |
3 files changed, 9 insertions, 4 deletions
diff --git a/src/compiler/scala/tools/nsc/Global.scala b/src/compiler/scala/tools/nsc/Global.scala index 4e14ec6fb1..92c72b1549 100644 --- a/src/compiler/scala/tools/nsc/Global.scala +++ b/src/compiler/scala/tools/nsc/Global.scala @@ -136,7 +136,9 @@ class Global(var settings: Settings, var reporter: Reporter) extends SymbolTable // ------------------ Reporting ------------------------------------- def error(msg: String) = reporter.error(NoPosition, msg) - def warning(msg: String) = reporter.warning(NoPosition, msg) + def warning(msg: String) = + if (settings.Ywarnfatal.value) reporter.error(NoPosition, msg) + else reporter.warning(NoPosition, msg) def inform(msg: String) = reporter.info(NoPosition, msg, true) def inform[T](msg: String, value: T): T = { inform(msg+value); value } diff --git a/src/compiler/scala/tools/nsc/Settings.scala b/src/compiler/scala/tools/nsc/Settings.scala index 7cb411ffca..2d88b38777 100644 --- a/src/compiler/scala/tools/nsc/Settings.scala +++ b/src/compiler/scala/tools/nsc/Settings.scala @@ -943,6 +943,7 @@ trait ScalacSettings { val Yjenkins = BooleanSetting ("-Yjenkins-hashCodes", "Use jenkins hash algorithm for case class generated hashCodes.") // Warnings + val Ywarnfatal = BooleanSetting ("-Yfatal-warnings", "Fail the compilation if there are any warnings.") val Xwarninit = BooleanSetting ("-Xwarninit", "Warn about possible changes in initialization semantics") val Xchecknull = BooleanSetting ("-Xcheck-null", "Emit warning on selection of nullable reference") val Xwarndeadcode = BooleanSetting ("-Ywarn-dead-code", "Emit warnings for dead code") diff --git a/src/compiler/scala/tools/nsc/reporters/AbstractReporter.scala b/src/compiler/scala/tools/nsc/reporters/AbstractReporter.scala index a2f6b1f247..76daa0d2fe 100644 --- a/src/compiler/scala/tools/nsc/reporters/AbstractReporter.scala +++ b/src/compiler/scala/tools/nsc/reporters/AbstractReporter.scala @@ -27,15 +27,17 @@ abstract class AbstractReporter extends Reporter { def display(pos: Position, msg: String, severity: Severity): Unit def displayPrompt: Unit - protected def info0(pos: Position, msg: String, severity: Severity, force: Boolean) { + protected def info0(pos: Position, msg: String, _severity: Severity, force: Boolean) { + val severity = if (settings.Ywarnfatal.value) ERROR else WARNING + severity match { case INFO => if (force || settings.verbose.value) display(pos, msg, severity) case WARNING => val hidden = testAndLog(pos, severity) if (!settings.nowarnings.value) { - if (!hidden || settings.prompt.value) display(pos, msg, severity) - if (settings.prompt.value) displayPrompt + if (!hidden || settings.prompt.value) display(pos, msg, severity) + if (settings.prompt.value) displayPrompt } case ERROR => val hidden = testAndLog(pos, severity) |