summaryrefslogtreecommitdiff
path: root/src/reflect/scala/reflect/runtime/JavaMirrors.scala
diff options
context:
space:
mode:
authorEugene Burmako <xeno.by@gmail.com>2013-03-18 14:26:27 +0100
committerEugene Burmako <xeno.by@gmail.com>2013-05-17 11:23:27 +0200
commit5e715396af47cc96d6bada426d1e496934011599 (patch)
tree69cd772840352af9a20a45b78e744db54f6ccbeb /src/reflect/scala/reflect/runtime/JavaMirrors.scala
parent48e80cb8c715cf8cb6dc73a5f894838671e385a4 (diff)
downloadscala-5e715396af47cc96d6bada426d1e496934011599.tar.gz
scala-5e715396af47cc96d6bada426d1e496934011599.tar.bz2
scala-5e715396af47cc96d6bada426d1e496934011599.zip
SI-7464 allows FieldMirror.set to update vals
There's no reason to leave such sentinels in place inside a facility designed to circumvent usual restrictions of static types / visibility.
Diffstat (limited to 'src/reflect/scala/reflect/runtime/JavaMirrors.scala')
-rw-r--r--src/reflect/scala/reflect/runtime/JavaMirrors.scala4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/reflect/scala/reflect/runtime/JavaMirrors.scala b/src/reflect/scala/reflect/runtime/JavaMirrors.scala
index 3442e3d22e..09b07bb2c7 100644
--- a/src/reflect/scala/reflect/runtime/JavaMirrors.scala
+++ b/src/reflect/scala/reflect/runtime/JavaMirrors.scala
@@ -133,6 +133,7 @@ private[reflect] trait JavaMirrors extends internal.SymbolTable with api.JavaUni
sm"""Scala field ${sym.name} isn't represented as a Java field, neither it has a Java accessor method
|note that private parameters of class constructors don't get mapped onto fields and/or accessors,
|unless they are used outside of their declaring constructors.""")
+ @deprecated("corresponding check has been removed from FieldMirror.set, this method is also being phased out", "2.11.0")
private def ErrorSetImmutableField(sym: Symbol) = throw new ScalaReflectionException(s"cannot set an immutable field ${sym.name}")
private def ErrorNotConstructor(sym: Symbol, owner: Symbol) = throw new ScalaReflectionException(s"expected a constructor of $owner, you provided $sym")
private def ErrorFree(member: Symbol, freeType: Symbol) = throw new ScalaReflectionException(s"cannot reflect ${member.kindString} ${member.name}, because it's a member of a weak type ${freeType.name}")
@@ -282,7 +283,8 @@ private[reflect] trait JavaMirrors extends internal.SymbolTable with api.JavaUni
}
def get = jfield.get(receiver)
def set(value: Any) = {
- if (!symbol.isMutable) ErrorSetImmutableField(symbol)
+ // it appears useful to be able to set values of vals, therefore I'm disabling this check
+ // if (!symbol.isMutable) ErrorSetImmutableField(symbol)
jfield.set(receiver, value)
}
override def toString = s"field mirror for ${symbol.fullName} (bound to $receiver)"