kenbot / goggles

Pleasant, yet principled Scala optics DSL
MIT License
195 stars 7 forks source link

Can't access fields on varargs case class #15

Open kenbot opened 7 years ago

kenbot commented 7 years ago

If a case class field is marked as varargs, then "get" and "set" expressions cannot recognise the expected copy method.

Once #3 is resolved, "get" shouldn't be a problem at least.

scala> case class Foo(ns: Int*)
defined class Foo

scala> get"$res1.ns"
<console>:26: error: Can't update 'ns', because no 'copy' method found on Foo
       get"$res1.ns"
       ^

scala> set"$res1.ns" := Nil
<console>:26: error: Can't update 'ns', because no 'copy' method found on Foo
       set"$res1.ns" := Nil
       ^
kenbot commented 7 years ago

A copy method actually doesn't get generated for varargs case classes. Our options are:

kenbot commented 7 years ago

It can wait until after 1.0.