summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authoramin <amin@epfl.ch>2011-11-15 14:33:55 +0000
committeramin <amin@epfl.ch>2011-11-15 14:33:55 +0000
commit3ba3b39b93b9e8412fd4fe0a7d907a842da2e906 (patch)
tree8890e9b32f5ce8ce52fbf5f7a93813410e665e29 /src
parent85e7755ef6767ebb6733c10a90006a71d97ddc9b (diff)
downloadscala-3ba3b39b93b9e8412fd4fe0a7d907a842da2e906.tar.gz
scala-3ba3b39b93b9e8412fd4fe0a7d907a842da2e906.tar.bz2
scala-3ba3b39b93b9e8412fd4fe0a7d907a842da2e906.zip
Changed reflection to allow getting a Scala Sym...
Changed reflection to allow getting a Scala Symbol for the implementation class of a trait.
Diffstat (limited to 'src')
-rw-r--r--src/compiler/scala/reflect/runtime/JavaToScala.scala10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/compiler/scala/reflect/runtime/JavaToScala.scala b/src/compiler/scala/reflect/runtime/JavaToScala.scala
index 8167588712..b1e4a2a3e0 100644
--- a/src/compiler/scala/reflect/runtime/JavaToScala.scala
+++ b/src/compiler/scala/reflect/runtime/JavaToScala.scala
@@ -351,7 +351,7 @@ trait JavaToScala extends ConversionUtil { self: SymbolTable =>
* not available, wrapped from the Java reflection info.
*/
def classToScala(jclazz: jClass[_]): Symbol = classCache.toScala(jclazz) {
- if (jclazz.isMemberClass) {
+ if (jclazz.isMemberClass && !nme.isImplClassName(jclazz.getName)) {
val sym = sOwner(jclazz).info.decl(newTypeName(jclazz.getSimpleName))
assert(sym.isType, sym+"/"+jclazz+"/"+sOwner(jclazz)+"/"+jclazz.getSimpleName)
sym.asInstanceOf[ClassSymbol]
@@ -456,9 +456,11 @@ trait JavaToScala extends ConversionUtil { self: SymbolTable =>
private def jclassAsScala(jclazz: jClass[_]): Symbol = jclassAsScala(jclazz, sOwner(jclazz))
private def jclassAsScala(jclazz: jClass[_], owner: Symbol): Symbol = {
- val clazz = owner.newClass(NoPosition, newTypeName(jclazz.getSimpleName))
+ val name = newTypeName(jclazz.getSimpleName)
+ val completer = (clazz: Symbol, module: Symbol) => new FromJavaClassCompleter(clazz, module, jclazz)
+ val (clazz, module) = createClassModule(owner, name, completer)
classCache enter (jclazz, clazz)
- clazz setInfo new FromJavaClassCompleter(clazz, NoSymbol, jclazz)
+ clazz
}
/**
@@ -523,4 +525,4 @@ trait JavaToScala extends ConversionUtil { self: SymbolTable =>
}
}
-class ReflectError(msg: String) extends java.lang.Error(msg) \ No newline at end of file
+class ReflectError(msg: String) extends java.lang.Error(msg)