diff options
author | Adriaan Moors <adriaan.moors@typesafe.com> | 2012-12-10 12:03:44 -0800 |
---|---|---|
committer | Adriaan Moors <adriaan.moors@typesafe.com> | 2012-12-10 12:03:44 -0800 |
commit | eaf5884c0bc99666fa02aa279e9b979333dea476 (patch) | |
tree | cdc4584139ab9c62b758c93caac1c65907cf8bac /test | |
parent | 9a5eb7ee0b4f2f079f00262421ce25912a11b9f7 (diff) | |
parent | 9aa6ded8e01179e7d55144de273b39f3a0b2d3ec (diff) | |
download | scala-eaf5884c0bc99666fa02aa279e9b979333dea476.tar.gz scala-eaf5884c0bc99666fa02aa279e9b979333dea476.tar.bz2 scala-eaf5884c0bc99666fa02aa279e9b979333dea476.zip |
Merge pull request #1675 from retronym/ticket/6667-2
SI-6667 Abort after any ambiguous in-scope implicit
Diffstat (limited to 'test')
-rw-r--r-- | test/files/neg/t6667.check | 13 | ||||
-rw-r--r-- | test/files/neg/t6667.scala | 10 | ||||
-rw-r--r-- | test/files/neg/t6667b.check | 13 | ||||
-rw-r--r-- | test/files/neg/t6667b.scala | 25 |
4 files changed, 61 insertions, 0 deletions
diff --git a/test/files/neg/t6667.check b/test/files/neg/t6667.check new file mode 100644 index 0000000000..43313fa4fe --- /dev/null +++ b/test/files/neg/t6667.check @@ -0,0 +1,13 @@ +t6667.scala:8: error: ambiguous implicit values: + both value inScope1 in object Test of type => C + and value inScope2 in object Test of type => C + match expected type C + implicitly[C]: Unit // C.companion was used; whereas the ambiguity should abort the implicit search. + ^ +t6667.scala:9: error: ambiguous implicit values: + both value inScope1 in object Test of type => C + and value inScope2 in object Test of type => C + match expected type C + implicitly[C] // ambiguity reported, rather than falling back to C.companion + ^ +two errors found diff --git a/test/files/neg/t6667.scala b/test/files/neg/t6667.scala new file mode 100644 index 0000000000..fb857ebd33 --- /dev/null +++ b/test/files/neg/t6667.scala @@ -0,0 +1,10 @@ +class C +object C { + implicit def companion = new C +} + +object Test { + implicit val inScope1, inScope2 = new C + implicitly[C]: Unit // C.companion was used; whereas the ambiguity should abort the implicit search. + implicitly[C] // ambiguity reported, rather than falling back to C.companion +} diff --git a/test/files/neg/t6667b.check b/test/files/neg/t6667b.check new file mode 100644 index 0000000000..99cea9a47c --- /dev/null +++ b/test/files/neg/t6667b.check @@ -0,0 +1,13 @@ +t6667b.scala:16: error: ambiguous implicit values: + both value a in object Test of type => Test.Box + and value b of type Test.Box + match expected type Test.Box + new Test() + ^ +t6667b.scala:19: error: ambiguous implicit values: + both value a in object Test of type => Test.Box + and value b of type Test.Box + match expected type Test.Box + new Test() + ^ +two errors found diff --git a/test/files/neg/t6667b.scala b/test/files/neg/t6667b.scala new file mode 100644 index 0000000000..4e64e1af17 --- /dev/null +++ b/test/files/neg/t6667b.scala @@ -0,0 +1,25 @@ +object Test { + abstract class Box { + val value: Int + } + + implicit val a: Box = new Box { + val value= 1 + } + + def main(args: Array[String]) { + implicit val b: Box= new Box { + val value= 2 + } + + new Object { + new Test() + } + // compare with: + new Test() + } +} + +class Test()(implicit x: Test.Box) { + println(x.value) +} |