diff options
author | Eugene Burmako <xeno.by@gmail.com> | 2012-09-17 15:20:44 +0200 |
---|---|---|
committer | Eugene Burmako <xeno.by@gmail.com> | 2012-09-17 15:49:51 +0200 |
commit | 1b8330c51055b0e83b8187ac3783eabb08d8c778 (patch) | |
tree | af36e3b082032118e48c8a12a97d17eeddc24f95 /src | |
parent | 40c388aa948807d893837937c6fdaa313c556f8f (diff) | |
download | scala-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.scala | 6 |
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) |