diff options
author | Som Snytt <som.snytt@gmail.com> | 2017-03-09 09:15:14 -0800 |
---|---|---|
committer | Som Snytt <som.snytt@gmail.com> | 2017-03-09 09:15:14 -0800 |
commit | 050811bd84523dd90cec9d490aa746043973b13d (patch) | |
tree | ccc67da808ee6b0b7ca5f8ec8b059b791330bc71 /test | |
parent | c309f9867a557d4edccaebfa399eabcef11bf1bf (diff) | |
download | scala-050811bd84523dd90cec9d490aa746043973b13d.tar.gz scala-050811bd84523dd90cec9d490aa746043973b13d.tar.bz2 scala-050811bd84523dd90cec9d490aa746043973b13d.zip |
SI-8969 Accept poly+implicit for assignment syntax
Follow-up to fb061f22d4c35df626d9651e017820a11f8fe56e
which allowed the type param only.
Reported:
```
scala> object Test {
| def a[R](implicit s: List[R]):Int = 0
| def a_=[R](v: Int)(implicit s: List[R]) = ()
| }
```
Diffstat (limited to 'test')
-rw-r--r-- | test/files/pos/t4237.scala | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/test/files/pos/t4237.scala b/test/files/pos/t4237.scala index fcf6eb8bf1..3f605607b2 100644 --- a/test/files/pos/t4237.scala +++ b/test/files/pos/t4237.scala @@ -2,5 +2,16 @@ class A { (new { def field = 0; def field_=(i: Int) = () }).field = 5 // compiles as expected (new { def field(implicit i: Int) = 0; def field_=(i: Int) = () }).field = 5 // compiles even with implicit params on getter (new { def field = 0; def field_=[T](i: Int) = () }).field = 5 // compiles with type param on setter - (new { def field[T] = 0; def field_=(i: Int) = () }).field = 5 // DOESN'T COMPILE -}
\ No newline at end of file + (new { def field[T] = 0; def field_=(i: Int) = () }).field = 5 // DIDN'T COMPILE + + class Imp + implicit val imp: Imp = new Imp + implicit val implicitList: List[Int] = null + + // compiles even with implicit params on setter + (new { def field(implicit i: Int) = 0; def field_=(i: Int)(implicit j: Imp) = () }).field = 5 + (new { def field(implicit i: Int) = 0; def field_=[T <: Imp](i: Int)(implicit j: T) = () }).field = 5 + // was reassignment to val + (new { def field[T](implicit ts: List[T]) = 0; def field_=[T](i: Int)(implicit ts: List[T]) = () }).field = 5 + (new { def field[T](implicit ts: List[T]) = 0; def field_=[T](i: T)(implicit ts: List[T]) = () }).field = 5 +} |