Skip to content

Commit b2d3b89

Browse files
authored
Merge pull request #1884 from MasseGuillaume/restore-delegating-reporter
restore position offset in DelegatingReporter
2 parents e28d8ee + 437cdf3 commit b2d3b89

File tree

2 files changed

+14
-8
lines changed

2 files changed

+14
-8
lines changed

sbt-bridge/sbt-test/compilerReporter/simple/project/Reporter.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,9 @@ object Reporter {
3737
val problems = reporter.get.problems
3838
println(problems.toList)
3939
assert(problems.size == 2)
40+
assert(problems.forall(_.position.offset.isDefined))
4041
assert(problems.count(_.severity == Severity.Error) == 1) // not found: er1,
4142
assert(problems.count(_.severity == Severity.Warn) == 1) // `with' as a type operator has been deprecated; use `&' instead,
4243
})
4344
)
44-
}
45+
}

sbt-bridge/src/xsbt/DelegatingReporter.scala

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,13 @@ final class DelegatingReporter(delegate: xsbti.Reporter) extends Reporter
2828
}
2929

3030
val position = new Position {
31-
def line: Maybe[Integer] = Maybe.nothing()
32-
def lineContent: String = ""
33-
def offset: Maybe[Integer] = Maybe.nothing()
34-
def pointer: Maybe[Integer] = Maybe.nothing()
35-
def pointerSpace: Maybe[String] = Maybe.nothing()
36-
def sourceFile: Maybe[java.io.File] = Maybe.nothing()
37-
def sourcePath: Maybe[String] = Maybe.nothing()
31+
def line: Maybe[Integer] = Maybe.just(cont.pos.line)
32+
def lineContent: String = cont.pos.lineContent
33+
def offset: Maybe[Integer] = Maybe.just(cont.pos.point)
34+
def pointer: Maybe[Integer] = Maybe.just(cont.pos.point)
35+
def pointerSpace: Maybe[String] = Maybe.just(" " * cont.pos.point)
36+
def sourceFile: Maybe[java.io.File] = maybe(Option(cont.pos.source.file.file))
37+
def sourcePath: Maybe[String] = maybe(Option(cont.pos.source.file.file).map(_.getPath))
3838
}
3939

4040
val sb = new StringBuilder()
@@ -45,4 +45,9 @@ final class DelegatingReporter(delegate: xsbti.Reporter) extends Reporter
4545

4646
delegate.log(position, sb.toString(), severity)
4747
}
48+
49+
private[this] def maybe[T](opt: Option[T]): Maybe[T] = opt match {
50+
case None => Maybe.nothing[T]
51+
case Some(s) => Maybe.just[T](s)
52+
}
4853
}

0 commit comments

Comments
 (0)