summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEugene Burmako <xeno.by@gmail.com>2012-09-17 15:20:44 +0200
committerEugene Burmako <xeno.by@gmail.com>2012-09-17 15:49:51 +0200
commit1b8330c51055b0e83b8187ac3783eabb08d8c778 (patch)
treeaf36e3b082032118e48c8a12a97d17eeddc24f95 /src
parent40c388aa948807d893837937c6fdaa313c556f8f (diff)
downloadscala-1b8330c51055b0e83b8187ac3783eabb08d8c778.tar.gz
scala-1b8330c51055b0e83b8187ac3783eabb08d8c778.tar.bz2
scala-1b8330c51055b0e83b8187ac3783eabb08d8c778.zip
SI-6374 Reflection now works for anns with enum fields
Enum members are static and, therefore, they need to be looked up in classSymbol(<enum>).companionModule, rather than in classSymbol(<enum>).
Diffstat (limited to 'src')
-rw-r--r--src/reflect/scala/reflect/runtime/JavaMirrors.scala6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/reflect/scala/reflect/runtime/JavaMirrors.scala b/src/reflect/scala/reflect/runtime/JavaMirrors.scala
index 8ea371f2d2..0d9e90d3a6 100644
--- a/src/reflect/scala/reflect/runtime/JavaMirrors.scala
+++ b/src/reflect/scala/reflect/runtime/JavaMirrors.scala
@@ -148,8 +148,10 @@ trait JavaMirrors extends internal.SymbolTable with api.JavaUniverse { thisUnive
object AnnotationClass { def unapply(x: jClass[_]) = x.isAnnotation }
object ConstantArg {
- def enumToSymbol(enum: Enum[_]): Symbol =
- classToScala(enum.getClass).typeSignature.declaration(enum.name: TermName)
+ def enumToSymbol(enum: Enum[_]): Symbol = {
+ val staticPartOfEnum = classToScala(enum.getClass).companionSymbol
+ staticPartOfEnum.typeSignature.declaration(enum.name: TermName)
+ }
def unapply(schemaAndValue: (jClass[_], Any)): Option[Any] = schemaAndValue match {
case (StringClass | PrimitiveClass(), value) => Some(value)