diff options
author | Lukas Rytz <lukas.rytz@gmail.com> | 2014-12-16 10:50:10 +0100 |
---|---|---|
committer | Lukas Rytz <lukas.rytz@gmail.com> | 2015-01-16 23:18:12 +0100 |
commit | afebceee78155c66564921eab7dd2170f820fdbf (patch) | |
tree | 65fba50f00339b69e4b0713f4120722115cf9a9c /test/files/jvm/t8582.check | |
parent | 7c1983d153a81ba43858a1bb5f0b59c5708bbfcf (diff) | |
download | scala-afebceee78155c66564921eab7dd2170f820fdbf.tar.gz scala-afebceee78155c66564921eab7dd2170f820fdbf.tar.bz2 scala-afebceee78155c66564921eab7dd2170f820fdbf.zip |
Construct ClassBTypes from parsed classfiles
This infrastructure is required for the inliner: when inlining code
from a classfile, the corresponding ClassBType is needed for various
things (eg access checks, InnerClass attribute).
The test creates two ClassBTypes for the same class: once using the
(unpickled) Symbol, once using the parsed ASM ClassNode, and verifies
that the two are the same.
There's a cleanup to the InnerClass attribute:
object T { class Member; def foo = { class Local } }
class T
For Java compatibility the InnerClass entry for Member says the class
is nested in T (not in the module class T$). We now make sure to add
that entry only to T, not to T$ (unless Member is actually referenced
in the classfile T$, in that case it will be added, as required).
Diffstat (limited to 'test/files/jvm/t8582.check')
-rw-r--r-- | test/files/jvm/t8582.check | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/test/files/jvm/t8582.check b/test/files/jvm/t8582.check index 564f482ff8..e388366270 100644 --- a/test/files/jvm/t8582.check +++ b/test/files/jvm/t8582.check @@ -14,10 +14,10 @@ Reflection can find direct nested classes (A2-B2-C2) A2$B2: List(class A2$B2$C2) A2$B2$C2: List() -Mirror classes have the same InnerClass attributes as the corresponding module class: - className[p1/p2/Singleton$Singleton$] outerClassName[p1/p2/Singleton] innerName[Singleton$] access[9] -Module class +The InnerClass attribute of a mirror class contains the members of the module class: className[p1/p2/Singleton$Singleton$] outerClassName[p1/p2/Singleton] innerName[Singleton$] access[9] +The module members are not in the InnerClass table of the module class (unless referenced): + An outer class has a InnerClass attribute for direct nested classes className[A1$B1] outerClassName[A1] innerName[B1] access[1] |