I try to reifydefine an implicit value class (extension method) and get an error value class may not be a local classwhen I do this:
import scala.reflect.runtime.universe._
val reifiedImplicitValueClass = reify {
implicit class RicherDouble(val value: Double) extends AnyVal {
def times(that: Double): Double = value * that
}
}
error: value class may not be a local class
implicit class RicherDouble(val value: Double) extends AnyVal {
^
If I do this with a regular implicit class, removing extends AnyValit works fine:
import scala.reflect.runtime.universe._
val reifiedImplicitClass = reify {
implicit class RicherDouble(val value: Double) {
def times(that: Double): Double = value * that
}
}
reifiedImplicitClass: reflect.runtime.universe.Expr[Unit] =
Expr[Unit]({
implicit class RicherDouble extends AnyRef {
val value: Double = _;
def (value: Double) = {
super.();
()
};
def times(that: Double): Double = RicherDouble.this.value.$times(that)
};
implicit def RicherDouble(value: Double): RicherDouble = new RicherDouble(value);
()
})
Is it possible to override value classes through the reflection API? If so, how should my definition be changed?
I am using Scala 2.11.6.
source
share