From da3d8b2bcb42c14251ba13658038c7708f63d6b0 Mon Sep 17 00:00:00 2001 From: Felix Mulder Date: Sun, 16 Apr 2017 10:53:09 +0200 Subject: Render line and col in error message for clickability --- .../tools/dotc/reporting/MessageRendering.scala | 2 +- tests/repl/errmsgs.check | 22 +++++++++++----------- tests/repl/imports.check | 6 +++--- tests/repl/overrides.check | 4 ++-- 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 91e65ab66..98af775da 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 4e89a16a5..a1b3bd6ae 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: --------------------------------------- +-- [E007] Type Mismatch Error: :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: --------------------------------------- +-- [E007] Type Mismatch Error: :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: --------------------------------------- +-- [E007] Type Mismatch Error: :4:41 ---------------------------------- 4 |val z: (List[String], List[Int]) = (List(1), List("a")) | ^ | found: Int(1) | required: String | --- [E007] Type Mismatch Error: --------------------------------------- +-- [E007] Type Mismatch Error: :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: --------------------------------------- +-- [E007] Type Mismatch Error: :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: --------------------------------------- +-- [E007] Type Mismatch Error: :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: --------------------------------------- +-- [E007] Type Mismatch Error: :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: --------------------------------------- +-- [E007] Type Mismatch Error: :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: ------------------------------------ +-- [E008] Member Not Found Error: :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: --------------------------------------- +-- [E007] Type Mismatch Error: :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: ------------------------------------------- +-- [E038] Reference Error: :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 345fac142..12056280f 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: --------------------------------------- +-- [E007] Type Mismatch Error: :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: ------------------------------------------------------------ +-- Error: :8:12 ------------------------------------------------------- 8 |import util.foo | ^^^ | foo is not a member of util scala> import util.foo.bar --- [E008] Member Not Found Error: ------------------------------------ +-- [E008] Member Not Found Error: :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 0fbd3d0e3..75970d0a1 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: ------------------------------------------- +-- [E036] Reference Error: :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: ------------------------------------------- +-- [E037] Reference Error: :5:33 -------------------------------------- 5 |class B extends A { override def foo(i: Int): Unit = {}; } | ^ | method foo has a different signature than the overridden declaration -- cgit v1.2.3