Skip to content

Commit 5853283

Browse files
Albert Meltzerkitbellew
Albert Meltzer
authored andcommitted
ScalafmtSbtReporter: consolidate all error calls
1 parent f41b9c4 commit 5853283

File tree

1 file changed

+29
-20
lines changed

1 file changed

+29
-20
lines changed

plugin/src/main/scala/org/scalafmt/sbt/ScalafmtSbtReporter.scala

+29-20
Original file line numberDiff line numberDiff line change
@@ -2,37 +2,46 @@ package org.scalafmt.sbt
22

33
import java.io.OutputStreamWriter
44
import java.io.PrintWriter
5+
import java.io.StringWriter
56
import java.nio.file.Path
67

7-
import sbt.internal.util.MessageOnlyException
88
import sbt.util.Logger
99

10-
import scala.util.control.NoStackTrace
11-
1210
import org.scalafmt.interfaces.ScalafmtReporter
1311

1412
class ScalafmtSbtReporter(
1513
log: Logger,
1614
out: OutputStreamWriter,
1715
detailedErrorEnabled: Boolean
1816
) extends ScalafmtReporter {
17+
import ScalafmtSbtReporter._
18+
1919
override def error(file: Path, message: String): Unit =
20-
throw new MessageOnlyException(s"$message: $file")
20+
error(file, message, null)
2121

2222
override def error(file: Path, e: Throwable): Unit =
23-
Option(e.getMessage) match {
24-
case Some(_) if detailedErrorEnabled =>
25-
throw new ScalafmtSbtError(file, e)
26-
case Some(_) => error(file, e.getMessage)
27-
case None => throw new FailedToFormat(file.toString, e)
23+
error(file, null, e)
24+
25+
override def error(file: Path, message: String, e: Throwable): Unit = {
26+
def getMessage() = {
27+
val res = new StringWriter()
28+
res.write(Option(message).getOrElse("failed"))
29+
res.write(" [")
30+
res.write(file.toString)
31+
res.write(']')
32+
if (null != e) {
33+
if (!detailedErrorEnabled)
34+
Option(e.getMessage).foreach { x =>
35+
res.write(" ")
36+
res.write(x)
37+
}
38+
}
39+
res.toString
2840
}
2941

30-
override def error(file: Path, message: String, e: Throwable): Unit =
31-
if (e.getMessage != null) {
32-
error(file, s"$message: ${e.getMessage()}")
33-
} else {
34-
throw new FailedToFormat(file.toString, e)
35-
}
42+
val cause = if (detailedErrorEnabled) e else null
43+
throw new ScalafmtSbtError(getMessage(), cause)
44+
}
3645

3746
override def excluded(file: Path): Unit =
3847
log.debug(s"file excluded: $file")
@@ -42,11 +51,11 @@ class ScalafmtSbtReporter(
4251

4352
override def downloadWriter(): PrintWriter = new PrintWriter(out)
4453
override def downloadOutputStreamWriter(): OutputStreamWriter = out
54+
}
55+
56+
object ScalafmtSbtReporter {
4557

46-
private class FailedToFormat(filename: String, cause: Throwable)
47-
extends Exception(filename, cause)
48-
with NoStackTrace
58+
private class ScalafmtSbtError(message: String, cause: Throwable)
59+
extends RuntimeException(message, cause)
4960

50-
private class ScalafmtSbtError(file: Path, cause: Throwable)
51-
extends Exception(s"sbt-scalafmt failed on $file", cause)
5261
}

0 commit comments

Comments
 (0)