diff --git a/main/Defaults.scala b/main/Defaults.scala index 94703ee7a..75e6c4b40 100755 --- a/main/Defaults.scala +++ b/main/Defaults.scala @@ -586,9 +586,7 @@ object Defaults extends BuildCommon def printWarningsTask: Initialize[Task[Unit]] = (streams, compile, maxErrors, sourcePositionMappers) map { (s, analysis, max, spms) => val problems = analysis.infos.allInfos.values.flatMap(i => i.reportedProblems++ i.unreportedProblems) - val reporter = new LoggerReporter(max, s.log, - spms.foldRight({p: xsbti.Position => p}) { (mapper, mappers) => {p: xsbti.Position => mapper(p).getOrElse(mappers(p))}} - ) + val reporter = new LoggerReporter(max, s.log, Compiler.foldMappers(spms)) problems foreach { p => reporter.display(p.position, p.message, p.severity) } } diff --git a/main/actions/Compiler.scala b/main/actions/Compiler.scala index 9e966bfb4..3a2a431a4 100644 --- a/main/actions/Compiler.scala +++ b/main/actions/Compiler.scala @@ -33,9 +33,7 @@ object Compiler def inputs(classpath: Seq[File], sources: Seq[File], classesDirectory: File, options: Seq[String], javacOptions: Seq[String], maxErrors: Int, sourcePositionMappers: Seq[Position => Option[Position]], order: CompileOrder)(implicit compilers: Compilers, incSetup: IncSetup, log: Logger): Inputs = new Inputs( compilers, - new Options(classpath, sources, classesDirectory, options, javacOptions, maxErrors, - sourcePositionMappers.foldRight({p: Position => p}) { (mapper, mappers) => {p: Position => mapper(p).getOrElse(mappers(p))}}, - order), + new Options(classpath, sources, classesDirectory, options, javacOptions, maxErrors, foldMappers(sourcePositionMappers), order), incSetup ) @@ -80,4 +78,7 @@ object Compiler val agg = new AggressiveCompile(cacheFile) agg(scalac, javac, sources, classpath, CompileOutput(classesDirectory), cache, None, options, javacOptions, analysisMap, definesClass, new LoggerReporter(maxErrors, log, sourcePositionMapper), order, skip)(log) } + + private[sbt] def foldMappers[A](mappers: Seq[A => Option[A]]) = + mappers.foldRight({p: A => p}) { (mapper, mappers) => {p: A => mapper(p).getOrElse(mappers(p))}} }