aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelix Mulder <felix.mulder@gmail.com>2017-04-16 10:53:09 +0200
committerFelix Mulder <felix.mulder@gmail.com>2017-04-16 10:53:09 +0200
commitda3d8b2bcb42c14251ba13658038c7708f63d6b0 (patch)
tree304aa7841c4102c083ba2b8b941cf8c7769d8035
parentf20ca3d358c650f6a58528018aa7d848b1f6a28f (diff)
downloaddotty-da3d8b2bcb42c14251ba13658038c7708f63d6b0.zip
dotty-da3d8b2bcb42c14251ba13658038c7708f63d6b0.tar.gz
dotty-da3d8b2bcb42c14251ba13658038c7708f63d6b0.tar.bz2
Render line and col in error message for clickability
-rw-r--r--compiler/src/dotty/tools/dotc/reporting/MessageRendering.scala2
-rw-r--r--tests/repl/errmsgs.check22
-rw-r--r--tests/repl/imports.check6
-rw-r--r--tests/repl/overrides.check4
4 files changed, 17 insertions, 17 deletions
diff --git a/compiler/src/dotty/tools/dotc/reporting/MessageRendering.scala b/compiler/src/dotty/tools/dotc/reporting/MessageRendering.scala
index 91e65ab..98af775 100644
--- a/compiler/src/dotty/tools/dotc/reporting/MessageRendering.scala
+++ b/compiler/src/dotty/tools/dotc/reporting/MessageRendering.scala
@@ -113,7 +113,7 @@ trait MessageRendering {
*/
def posStr(pos: SourcePosition, diagnosticLevel: String, message: Message)(implicit ctx: Context): String =
if (pos.exists) Blue({
- val file = pos.source.file.toString
+ val file = s"${pos.source.file.toString}:${pos.line + 1}:${pos.column}"
val errId =
if (message.errorId ne ErrorMessageID.NoExplanationID) {
val errorNumber = message.errorId.errorNumber()
diff --git a/tests/repl/errmsgs.check b/tests/repl/errmsgs.check
index 4e89a16..a1b3bd6 100644
--- a/tests/repl/errmsgs.check
+++ b/tests/repl/errmsgs.check
@@ -1,34 +1,34 @@
scala> class Inv[T](x: T)
defined class Inv
scala> val x: List[String] = List(1)
--- [E007] Type Mismatch Error: <console> ---------------------------------------
+-- [E007] Type Mismatch Error: <console>:4:27 ----------------------------------
4 |val x: List[String] = List(1)
| ^
| found: Int(1)
| required: String
|
scala> val y: List[List[String]] = List(List(1))
--- [E007] Type Mismatch Error: <console> ---------------------------------------
+-- [E007] Type Mismatch Error: <console>:4:38 ----------------------------------
4 |val y: List[List[String]] = List(List(1))
| ^
| found: Int(1)
| required: String
|
scala> val z: (List[String], List[Int]) = (List(1), List("a"))
--- [E007] Type Mismatch Error: <console> ---------------------------------------
+-- [E007] Type Mismatch Error: <console>:4:41 ----------------------------------
4 |val z: (List[String], List[Int]) = (List(1), List("a"))
| ^
| found: Int(1)
| required: String
|
--- [E007] Type Mismatch Error: <console> ---------------------------------------
+-- [E007] Type Mismatch Error: <console>:4:50 ----------------------------------
4 |val z: (List[String], List[Int]) = (List(1), List("a"))
| ^^^
| found: String("a")
| required: Int
|
scala> val a: Inv[String] = new Inv(new Inv(1))
--- [E007] Type Mismatch Error: <console> ---------------------------------------
+-- [E007] Type Mismatch Error: <console>:5:33 ----------------------------------
5 |val a: Inv[String] = new Inv(new Inv(1))
| ^^^^^
| found: Inv[T]
@@ -36,7 +36,7 @@ scala> val a: Inv[String] = new Inv(new Inv(1))
|
| where: T is a type variable with constraint >: Int(1)
scala> val b: Inv[String] = new Inv(1)
--- [E007] Type Mismatch Error: <console> ---------------------------------------
+-- [E007] Type Mismatch Error: <console>:5:29 ----------------------------------
5 |val b: Inv[String] = new Inv(1)
| ^
| found: Int(1)
@@ -57,7 +57,7 @@ scala> abstract class C {
}
}
}
--- [E007] Type Mismatch Error: <console> ---------------------------------------
+-- [E007] Type Mismatch Error: <console>:9:17 ----------------------------------
9 | var y: T = x
| ^
|found: C.this.T(C.this.x)
@@ -65,7 +65,7 @@ scala> abstract class C {
|
|where: T is a type in class C
| T' is a type in the initalizer of value s which is an alias of String
--- [E007] Type Mismatch Error: <console> ---------------------------------------
+-- [E007] Type Mismatch Error: <console>:13:21 ---------------------------------
13 | val z: T = y
| ^
|found: T(y)
@@ -74,19 +74,19 @@ scala> abstract class C {
|where: T is a type in the initalizer of value s which is an alias of String
| T' is a type in method f which is an alias of Int
scala> class Foo() { def bar: Int = 1 }; val foo = new Foo(); foo.barr
--- [E008] Member Not Found Error: <console> ------------------------------------
+-- [E008] Member Not Found Error: <console>:4:59 -------------------------------
4 |class Foo() { def bar: Int = 1 }; val foo = new Foo(); foo.barr
| ^^^^^^^^
| value `barr` is not a member of Foo(foo) - did you mean `foo.bar`?
scala> val x: List[Int] = "foo" :: List(1)
--- [E007] Type Mismatch Error: <console> ---------------------------------------
+-- [E007] Type Mismatch Error: <console>:4:19 ----------------------------------
4 |val x: List[Int] = "foo" :: List(1)
| ^^^^^
| found: String($1$)
| required: Int
|
scala> { def f: Int = g; val x: Int = 1; def g: Int = 5; }
--- [E038] Reference Error: <console> -------------------------------------------
+-- [E038] Reference Error: <console>:5:15 --------------------------------------
5 |{ def f: Int = g; val x: Int = 1; def g: Int = 5; }
| ^
| `g` is a forward reference extending over the definition of `x`
diff --git a/tests/repl/imports.check b/tests/repl/imports.check
index 345fac1..1205628 100644
--- a/tests/repl/imports.check
+++ b/tests/repl/imports.check
@@ -7,7 +7,7 @@ defined module o
scala> import o._
import o._
scala> buf += xs
--- [E007] Type Mismatch Error: <console> ---------------------------------------
+-- [E007] Type Mismatch Error: <console>:11:7 ----------------------------------
11 |buf += xs
| ^^
| found: scala.collection.immutable.List[Int](o.xs)
@@ -16,12 +16,12 @@ scala> buf += xs
scala> buf ++= xs
val res1: scala.collection.mutable.ListBuffer[Int] = ListBuffer(1, 2, 3)
scala> import util.foo
--- Error: <console> ------------------------------------------------------------
+-- Error: <console>:8:12 -------------------------------------------------------
8 |import util.foo
| ^^^
| foo is not a member of util
scala> import util.foo.bar
--- [E008] Member Not Found Error: <console> ------------------------------------
+-- [E008] Member Not Found Error: <console>:8:12 -------------------------------
8 |import util.foo.bar
| ^^^^^^^^
| value `foo` is not a member of util.type - did you mean `util.Left`?
diff --git a/tests/repl/overrides.check b/tests/repl/overrides.check
index 0fbd3d0..75970d0 100644
--- a/tests/repl/overrides.check
+++ b/tests/repl/overrides.check
@@ -1,5 +1,5 @@
scala> class B { override def foo(i: Int): Unit = {}; }
--- [E036] Reference Error: <console> -------------------------------------------
+-- [E036] Reference Error: <console>:4:23 --------------------------------------
4 |class B { override def foo(i: Int): Unit = {}; }
| ^
| method foo overrides nothing
@@ -8,7 +8,7 @@ longer explanation available when compiling with `-explain`
scala> class A { def foo: Unit = {}; }
defined class A
scala> class B extends A { override def foo(i: Int): Unit = {}; }
--- [E037] Reference Error: <console> -------------------------------------------
+-- [E037] Reference Error: <console>:5:33 --------------------------------------
5 |class B extends A { override def foo(i: Int): Unit = {}; }
| ^
| method foo has a different signature than the overridden declaration