@@ -4,6 +4,7 @@ package reporting
44
55import core .Contexts .Context
66import diagnostic .messages ._
7+ import dotty .tools .dotc .core .Types .WildcardType
78import dotty .tools .dotc .parsing .Tokens
89import org .junit .Assert ._
910import org .junit .{Ignore , Test }
@@ -368,16 +369,16 @@ class ErrorMessagesTests extends ErrorMessagesTest {
368369 |}
369370 """ .stripMargin
370371 }
371- .expect { (ictx, messages) =>
372- implicit val ctx : Context = ictx
373- val defn = ictx.definitions
372+ .expect { (ictx, messages) =>
373+ implicit val ctx : Context = ictx
374+ val defn = ictx.definitions
374375
375- assertMessageCount(1 , messages)
376- val MethodDoesNotTakeParameters (tree, methodPart) :: Nil = messages
376+ assertMessageCount(1 , messages)
377+ val MethodDoesNotTakeParameters (tree, methodPart) :: Nil = messages
377378
378- assertEquals(" Scope.foo" , tree.show)
379- assertEquals(" => Unit(Scope.foo)" , methodPart.show)
380- }
379+ assertEquals(" Scope.foo" , tree.show)
380+ assertEquals(" => Unit(Scope.foo)" , methodPart.show)
381+ }
381382
382383 @ Test def methodDoesNotTakeMorePrameters =
383384 checkMessagesAfter(" frontend" ) {
@@ -388,15 +389,55 @@ class ErrorMessagesTests extends ErrorMessagesTest {
388389 |}
389390 """ .stripMargin
390391 }
391- .expect { (ictx, messages) =>
392- implicit val ctx : Context = ictx
393- val defn = ictx.definitions
392+ .expect { (ictx, messages) =>
393+ implicit val ctx : Context = ictx
394+ val defn = ictx.definitions
394395
395- assertMessageCount(1 , messages)
396- val MethodDoesNotTakeParameters (tree, methodPart) :: Nil = messages
396+ assertMessageCount(1 , messages)
397+ val MethodDoesNotTakeParameters (tree, methodPart) :: Nil = messages
397398
398- assertEquals(" Scope.foo(1)" , tree.show)
399- assertEquals(" ((a: Int)Unit)(Scope.foo)" , methodPart.show)
400- }
399+ assertEquals(" Scope.foo(1)" , tree.show)
400+ assertEquals(" ((a: Int)Unit)(Scope.foo)" , methodPart.show)
401+ }
402+
403+ @ Test def ambiugousOverloadWithWildcard =
404+ checkMessagesAfter(" frontend" ) {
405+ """ object Context {
406+ | trait A {
407+ | def foo(s: String): String
408+ | def foo: String = foo("foo")
409+ | }
410+ | object B extends A {
411+ | def foo(s: String): String = s
412+ | }
413+ | B.foo
414+ |}
415+ """ .stripMargin
416+ }
417+ .expect { (ictx, messages) =>
418+ implicit val ctx : Context = ictx
419+ val defn = ictx.definitions
420+
421+ assertMessageCount(1 , messages)
422+ val AmbiguousOverload (tree, List (alt1, alt2), pt : WildcardType ) :: Nil = messages
423+ assertEquals(" method foo" , alt1.show)
424+ assertEquals(" (s: String)String" , alt1.info.show)
425+ assertEquals(" method foo" , alt2.show)
426+ }
401427
428+ @ Test def reassignmentToVal =
429+ checkMessagesAfter(" frontend" ) {
430+ """
431+ |class Context {
432+ | val value = 3
433+ | value = 4
434+ |}
435+ """ .stripMargin
436+ }
437+ .expect { (ictx, messages) =>
438+ implicit val ctx : Context = ictx
439+ assertMessageCount(1 , messages)
440+ val ReassignmentToVal (name) :: Nil = messages
441+ assertEquals(" value" , name.show)
442+ }
402443}
0 commit comments