diff options
author | Samuel Gruetter <samuel.gruetter@epfl.ch> | 2014-03-19 17:53:49 +0100 |
---|---|---|
committer | Samuel Gruetter <samuel.gruetter@epfl.ch> | 2014-03-19 17:53:49 +0100 |
commit | d51d08b444e0ea4a2c13b4daf0ce14b53bfbad89 (patch) | |
tree | 1d3a66fc0f5f839a561a2987159cb5b841b89257 /tests/untried/neg-with-implicits/t2316.scala | |
parent | 24ac35546c2c159403e91144e0e4add585ee9ae5 (diff) | |
download | dotty-d51d08b444e0ea4a2c13b4daf0ce14b53bfbad89.tar.gz dotty-d51d08b444e0ea4a2c13b4daf0ce14b53bfbad89.tar.bz2 dotty-d51d08b444e0ea4a2c13b4daf0ce14b53bfbad89.zip |
move all tests in tests/untried/neg which use implicits to tests/untried/neg-with-implicits
Diffstat (limited to 'tests/untried/neg-with-implicits/t2316.scala')
-rw-r--r-- | tests/untried/neg-with-implicits/t2316.scala | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/tests/untried/neg-with-implicits/t2316.scala b/tests/untried/neg-with-implicits/t2316.scala new file mode 100644 index 000000000..bf4bb0ec6 --- /dev/null +++ b/tests/untried/neg-with-implicits/t2316.scala @@ -0,0 +1,43 @@ +object test { + case class T1(val source: String) + + + object T1 { + implicit def T1FromT2(implicit t2: T2): T1 = T1("implicit def T1FromT2") + implicit def T1FromT3(implicit t3: T3): T1 = T1("implicit def T1FromT3") + } + + trait T2 { + } + + object T2 { + implicit val t2: T2 = new T2 {} + } + + trait T3 + + def requireT1(implicit t1: T1) = t1 + + { + val t1 = requireT1 + assert(t1.source == "implicit def T1FromT2") + } + + { + implicit def t3: T3 = new T3 {} + val t1 = requireT1 + assert(t1.source == "implicit def T1FromT2") + + // Expected a compile error here, but because T1.T1FromT2(T2.t2) was cached as a non-local implicit + // expression for type T1, this is not checked! + // + // (fragment of implicit-cache-error2.scala):26: error: ambiguous implicit values: + // both method T1FromT3 in object T1 of type (implicit t3: this.T3)this.T1 + // and method T1FromT2 in object T1 of type (implicit t2: this.T2)this.T1 + // match expected type this.T1 + // val t1 = requireT1 + // ^ + // one error found + + } +} |