Skip to content

Commit 3ab1dc4

Browse files
committed
Make all error messages display the full response
1 parent cf033c9 commit 3ab1dc4

File tree

10 files changed

+50
-49
lines changed

10 files changed

+50
-49
lines changed

language-server/test/dotty/tools/languageserver/util/CodeRange.scala

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,22 +3,43 @@ package dotty.tools.languageserver.util
33
import dotty.tools.languageserver.util.embedded.{CodeInRange, CodeMarker}
44
import dotty.tools.languageserver.util.server.TestFile
55

6+
import org.eclipse.lsp4j._
7+
68
import PositionContext._
79

810
case class CodeRange(start: CodeMarker, end: CodeMarker) {
11+
private var checked = false
912
def check(): PosCtx[Unit] = {
10-
assert(start.file == end.file, s"$start and $end where not in the same file")
11-
assert(start.line <= end.line, s"Expected $end to be after $start")
12-
assert(start.line != end.line || start.character < end.character, s"Expected $end to be after $start")
13+
if (!checked) {
14+
assert(start.file == end.file, s"$start and $end where not in the same file")
15+
assert(start.line <= end.line, s"Expected $end to be after $start")
16+
assert(start.line != end.line || start.character < end.character, s"Expected $end to be after $start")
17+
checked = true
18+
}
1319
}
1420

15-
def file: PosCtx[TestFile] = start.file
21+
def file: PosCtx[TestFile] = {
22+
check()
23+
start.file
24+
}
1625

17-
def toTuple: PosCtx[(Int, Int, Int, Int)] =
26+
def toTuple: PosCtx[(Int, Int, Int, Int)] = {
27+
check()
1828
(start.line, start.character, end.line, end.character)
29+
}
1930

2031
def withCode(text: String): CodeInRange = CodeInRange(text, this)
2132

22-
def show: PositionContext.PosCtx[String] =
33+
def toLSPRange: PosCtx[Range] = {
34+
check()
35+
new Range(start.toLSP, end.toLSP)
36+
}
37+
38+
def toLSPLocation: PosCtx[Location] = {
39+
check()
40+
new Location(file.uri, toLSPRange)
41+
}
42+
43+
def show: PosCtx[String] =
2344
s"[start=${start.show}, end=${end.show}]"
2445
}

language-server/test/dotty/tools/languageserver/util/Responses.scala

Lines changed: 0 additions & 28 deletions
This file was deleted.
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
package dotty.tools.languageserver.util.actions
22

33
import dotty.tools.languageserver.util.embedded.CodeMarker
4-
import dotty.tools.languageserver.util.server.{TestFile, TestServer}
4+
import dotty.tools.languageserver.util.server.TestFile
55

66
trait ActionOnMarker extends Action {
77

88
def marker: CodeMarker
9-
def onPosition(file: TestFile, line: Int, char: Int): Exec
9+
def onMarker(file: TestFile, line: Int, char: Int): Exec
1010

1111
def execute(): Exec =
12-
onPosition(marker.file, marker.line, marker.character)
12+
onMarker(marker.file, marker.line, marker.character)
1313

1414
}

language-server/test/dotty/tools/languageserver/util/actions/CodeCompletion.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import scala.collection.JavaConverters._
88

99
class CodeCompletion(val marker: CodeMarker, completions: List[(String, String, String)]) extends ActionOnMarker {
1010

11-
override def onPosition(file: TestFile, line: Int, char: Int): Exec = {
11+
override def onMarker(file: TestFile, line: Int, char: Int): Exec = {
1212
val res = implicitly[TestServer].completion(file, line, char)
1313
assert(res.isRight, res)
1414
val cList = res.getRight

language-server/test/dotty/tools/languageserver/util/actions/CodeDefinition.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ class CodeDefinition(val range: CodeRange, refOpt: Option[CodeRange]) extends Ac
88
override def onPosition(file: TestFile, line: Int, char: Int): Exec = {
99
val res = implicitly[TestServer].definition(file, line, char)
1010
assert(res.size() == refOpt.size, res)
11-
refOpt.foreach(Responses.checkLocation(res.get(0), _))
11+
refOpt.foreach(ref => assert(res.get(0) == ref.toLSPLocation, res))
1212
}
1313

1414
override def show: PositionContext.PosCtx[String] =

language-server/test/dotty/tools/languageserver/util/actions/CodeDocumentHighlight.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package dotty.tools.languageserver.util.actions
22

33
import dotty.tools.languageserver.util.server.{TestFile, TestServer}
4-
import dotty.tools.languageserver.util.{CodeRange, Responses, PositionContext}
4+
import dotty.tools.languageserver.util.{CodeRange, PositionContext}
55
import org.eclipse.lsp4j._
66

77
import scala.collection.JavaConverters._
@@ -15,7 +15,7 @@ class CodeDocumentHighlight(val range: CodeRange, highs: Seq[(CodeRange, String)
1515
assert(refs.size == kinds.length, res)
1616
res.asScala.zip(refs).zip(kinds).foreach { case ((dhl, ref), kind) =>
1717
assert(dhl.getKind == DocumentHighlightKind.valueOf(kind), res)
18-
Responses.checkRange(dhl.getRange, ref)
18+
assert(dhl.getRange == ref.toLSPRange, res)
1919
}
2020
}
2121

language-server/test/dotty/tools/languageserver/util/actions/CodeDocumentSymbol.scala

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,19 @@ package dotty.tools.languageserver.util.actions
22

33
import dotty.tools.languageserver.util.embedded.CodeMarker
44
import dotty.tools.languageserver.util.server.{TestFile, TestServer}
5-
import dotty.tools.languageserver.util.{CodeRange, PositionContext, Responses}
5+
import dotty.tools.languageserver.util.{CodeRange, PositionContext}
66

77
import scala.collection.JavaConverters._
88

99
class CodeDocumentSymbol(val marker: CodeMarker, symbols: Seq[(String, String, CodeRange)]) extends ActionOnMarker {
1010

11-
override def onPosition(file: TestFile, line: Int, char: Int): Exec = {
11+
override def onMarker(file: TestFile, line: Int, char: Int): Exec = {
1212
val res = implicitly[TestServer].documentSymbol(file)
1313
assert(res.size() == symbols.size, res)
1414
for ((symInfo, (name, kind, range)) <- res.asScala.zip(symbols)) {
1515
assert(symInfo.getName == name, res)
1616
assert(symInfo.getKind.toString == kind, res)
17-
Responses.checkLocation(symInfo.getLocation, range)
17+
assert(symInfo.getLocation == range.toLSPLocation, res)
1818
}
1919
}
2020

language-server/test/dotty/tools/languageserver/util/actions/CodeReferences.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
package dotty.tools.languageserver.util.actions
22

33
import dotty.tools.languageserver.util.server.{TestFile, TestServer}
4-
import dotty.tools.languageserver.util.{CodeRange, PositionContext, Responses}
4+
import dotty.tools.languageserver.util.{CodeRange, PositionContext}
55

66
import scala.collection.JavaConverters._
77

88
class CodeReferences(val range: CodeRange, refs: List[CodeRange], withDecl: Boolean) extends ActionOnRange {
99
override def onPosition(file: TestFile, line: Int, char: Int): Exec = {
1010
val res = implicitly[TestServer].references(file, line, char, withDecl)
1111
assert(res.size() == refs.size)
12-
res.asScala.zip(refs).foreach { case (loc, ref) => Responses.checkLocation(loc, ref) }
12+
res.asScala.zip(refs).foreach { case (loc, ref) => assert(loc == ref.toLSPLocation, res) }
1313
}
1414

1515
override def show: PositionContext.PosCtx[String] =

language-server/test/dotty/tools/languageserver/util/actions/CodeRename.scala

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,21 @@
11
package dotty.tools.languageserver.util.actions
22

33
import dotty.tools.languageserver.util.embedded.CodeMarker
4-
import dotty.tools.languageserver.util.{CodeRange, PositionContext, Responses}
4+
import dotty.tools.languageserver.util.{CodeRange, PositionContext}
55
import dotty.tools.languageserver.util.server.{TestFile, TestServer}
66

77
import scala.collection.JavaConverters._
88

99
class CodeRename(val marker: CodeMarker, newName: String, expected: List[CodeRange]) extends ActionOnMarker {
1010

11-
override def onPosition(file: TestFile, line: Int, char: Int): Exec = {
11+
override def onMarker(file: TestFile, line: Int, char: Int): Exec = {
1212
val res = implicitly[TestServer].rename(file, line, char, newName)
1313
assert(res.getDocumentChanges == null, res)
1414
val editItems = res.getChanges.values().asScala.flatMap(_.asScala) // TDO use a Map
1515
assert(expected.forall { exp =>
1616
editItems.exists { editItem =>
1717
editItem.getNewText == newName &&
18-
Responses.rangeEqual(editItem.getRange, exp)
18+
editItem.getRange == exp.toLSPRange
1919
}
2020
}, res)
2121
}

language-server/test/dotty/tools/languageserver/util/embedded/CodeMarker.scala

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,22 @@ package dotty.tools.languageserver.util.embedded
22

33
import dotty.tools.languageserver.util.server.TestFile
44
import dotty.tools.languageserver.util.{CodeRange, PositionContext}
5+
6+
import org.eclipse.lsp4j._
7+
58
import PositionContext._
69

710
/** Used to mark positions in the code */
811
class CodeMarker(name: String) extends Embedded {
12+
913
def to(other: CodeMarker): CodeRange = CodeRange(this, other)
14+
1015
def file: PosCtx[TestFile] = implicitly[PositionContext].positionOf(this)._1
1116
def line: PosCtx[Int] = implicitly[PositionContext].positionOf(this)._2
1217
def character: PosCtx[Int] = implicitly[PositionContext].positionOf(this)._3
18+
19+
def toLSP: PosCtx[Position] = new Position(line, character)
20+
1321
def show: PosCtx[String] = s"($name,line=$line,char=$character)"
1422
override def toString: String = s"CodePosition($name)"
1523
}

0 commit comments

Comments
 (0)