diff options
Diffstat (limited to 'test')
12 files changed, 135 insertions, 0 deletions
diff --git a/test/files/run/reflection-fieldmirror-ctorparam.check b/test/files/run/reflection-fieldmirror-ctorparam.check new file mode 100644 index 0000000000..8b99a6f772 --- /dev/null +++ b/test/files/run/reflection-fieldmirror-ctorparam.check @@ -0,0 +1 @@ +class java.lang.NoSuchFieldException: Test$A$$x
diff --git a/test/files/run/reflection-fieldmirror-ctorparam.scala b/test/files/run/reflection-fieldmirror-ctorparam.scala new file mode 100644 index 0000000000..286399072e --- /dev/null +++ b/test/files/run/reflection-fieldmirror-ctorparam.scala @@ -0,0 +1,21 @@ +import scala.reflect.runtime.universe._ +import scala.reflect.runtime.{currentMirror => cm} + +object Test extends App { + class A(x: Int) { + private[this] var xx = x + } + + val a = new A(42) + + val im: InstanceMirror = cm.reflect(a) + val cs = im.reflectClass.symbol + val f = cs.typeSignature.declaration(newTermName("x")).asTermSymbol + try { + val fm: FieldMirror = im.reflectField(f) + println(fm.get) + } catch { + case ex: Throwable => + println(s"${ex.getClass}: ${ex.getMessage}") + } +} diff --git a/test/files/run/reflection-fieldmirror-getsetval.check b/test/files/run/reflection-fieldmirror-getsetval.check new file mode 100644 index 0000000000..707bbcccce --- /dev/null +++ b/test/files/run/reflection-fieldmirror-getsetval.check @@ -0,0 +1,2 @@ +42
+cannot set an immutable field
diff --git a/test/files/run/reflection-fieldmirror-getsetval.scala b/test/files/run/reflection-fieldmirror-getsetval.scala new file mode 100644 index 0000000000..aeae66b422 --- /dev/null +++ b/test/files/run/reflection-fieldmirror-getsetval.scala @@ -0,0 +1,24 @@ +import scala.reflect.runtime.universe._ +import scala.reflect.runtime.{currentMirror => cm} + +object Test extends App { + class A { + val x: Int = 42 + } + + val a = new A + + val im: InstanceMirror = cm.reflect(a) + val cs = im.reflectClass.symbol + val f = cs.typeSignature.declaration(newTermName("x" + nme.LOCAL_SUFFIX_STRING)).asTermSymbol + val fm: FieldMirror = im.reflectField(f) + try { + println(fm.get) + fm.set(2) + println(fm.get) + println("this indicates a failure") + } catch { + case ex: Throwable => + println(ex.getMessage) + } +} diff --git a/test/files/run/reflection-fieldmirror-getsetvar.check b/test/files/run/reflection-fieldmirror-getsetvar.check new file mode 100644 index 0000000000..a9b0ccc6a0 --- /dev/null +++ b/test/files/run/reflection-fieldmirror-getsetvar.check @@ -0,0 +1,2 @@ +42
+2
diff --git a/test/files/run/reflection-fieldmirror-getsetvar.scala b/test/files/run/reflection-fieldmirror-getsetvar.scala new file mode 100644 index 0000000000..99ecc8996c --- /dev/null +++ b/test/files/run/reflection-fieldmirror-getsetvar.scala @@ -0,0 +1,18 @@ +import scala.reflect.runtime.universe._ +import scala.reflect.runtime.{currentMirror => cm} + +object Test extends App { + class A { + var x: Int = 42 + } + + val a = new A + + val im: InstanceMirror = cm.reflect(a) + val cs = im.reflectClass.symbol + val f = cs.typeSignature.declaration(newTermName("x" + nme.LOCAL_SUFFIX_STRING)).asTermSymbol + val fm: FieldMirror = im.reflectField(f) + println(fm.get) + fm.set(2) + println(fm.get) +} diff --git a/test/files/run/reflection-fieldmirror-nmelocalsuffixstring.check b/test/files/run/reflection-fieldmirror-nmelocalsuffixstring.check new file mode 100644 index 0000000000..fe75c80bca --- /dev/null +++ b/test/files/run/reflection-fieldmirror-nmelocalsuffixstring.check @@ -0,0 +1 @@ +true
diff --git a/test/files/run/reflection-fieldmirror-nmelocalsuffixstring.scala b/test/files/run/reflection-fieldmirror-nmelocalsuffixstring.scala new file mode 100644 index 0000000000..9dca7b452c --- /dev/null +++ b/test/files/run/reflection-fieldmirror-nmelocalsuffixstring.scala @@ -0,0 +1,16 @@ +import scala.reflect.runtime.universe._ +import scala.reflect.runtime.{currentMirror => cm} + +object Test extends App { + class A { + var x: Int = 42 + } + + val a = new A + + val im: InstanceMirror = cm.reflect(a) + val cs = im.reflectClass.symbol + val f = cs.typeSignature.declaration(newTermName("x" + nme.LOCAL_SUFFIX_STRING)).asTermSymbol + val fm: FieldMirror = im.reflectField(f) + println(fm.field.isVariable) +} diff --git a/test/files/run/reflection-fieldmirror-privatethis.check b/test/files/run/reflection-fieldmirror-privatethis.check new file mode 100644 index 0000000000..889b7c2c34 --- /dev/null +++ b/test/files/run/reflection-fieldmirror-privatethis.check @@ -0,0 +1,3 @@ +true
+42
+2
diff --git a/test/files/run/reflection-fieldmirror-privatethis.scala b/test/files/run/reflection-fieldmirror-privatethis.scala new file mode 100644 index 0000000000..844822d449 --- /dev/null +++ b/test/files/run/reflection-fieldmirror-privatethis.scala @@ -0,0 +1,19 @@ +import scala.reflect.runtime.universe._ +import scala.reflect.runtime.{currentMirror => cm} + +object Test extends App { + class A { + private[this] var x: Int = 42 + } + + val a = new A + + val im: InstanceMirror = cm.reflect(a) + val cs = im.reflectClass.symbol + val f = cs.typeSignature.declaration(newTermName("x")).asTermSymbol + val fm: FieldMirror = im.reflectField(f) + println(fm.field.isVariable) + println(fm.get) + fm.set(2) + println(fm.get) +} diff --git a/test/files/run/reflection-fieldmirror-sanitycheck.check b/test/files/run/reflection-fieldmirror-sanitycheck.check new file mode 100644 index 0000000000..e5134de4e3 --- /dev/null +++ b/test/files/run/reflection-fieldmirror-sanitycheck.check @@ -0,0 +1,6 @@ +expected a field symbol, you provided a method symbol +A typical cause of this problem is using a field accessor symbol instead of a field symbol. +To obtain a field symbol append nme.LOCAL_SUFFIX_STRING to the name of the field, +when searching for a member with Type.members or Type.declarations. +This is a temporary inconvenience that will be resolved before 2.10.0-final. +More information can be found here: https://issues.scala-lang.org/browse/SI-5895.
diff --git a/test/files/run/reflection-fieldmirror-sanitycheck.scala b/test/files/run/reflection-fieldmirror-sanitycheck.scala new file mode 100644 index 0000000000..abd4cf57c5 --- /dev/null +++ b/test/files/run/reflection-fieldmirror-sanitycheck.scala @@ -0,0 +1,22 @@ +import scala.reflect.runtime.universe._ +import scala.reflect.runtime.{currentMirror => cm} + +object Test extends App { + class A { + var x: Int = 42 + } + + val a = new A + + val im: InstanceMirror = cm.reflect(a) + val cs = im.reflectClass.symbol + //val f = cs.typeSignature.declaration(newTermName("x" + nme.LOCAL_SUFFIX_STRING)).asTermSymbol + val f = cs.typeSignature.declaration(newTermName("x")).asTermSymbol + try { + val fm: FieldMirror = im.reflectField(f) + println("this indicates a failure") + } catch { + case ex: Throwable => + println(ex.getMessage) + } +} |