diff options
author | Grzegorz Kossakowski <grzegorz.kossakowski@gmail.com> | 2012-05-11 17:04:30 +0200 |
---|---|---|
committer | Grzegorz Kossakowski <grzegorz.kossakowski@gmail.com> | 2012-05-11 17:04:30 +0200 |
commit | 389a15bf1e63934644e4aa423cac31435438ff36 (patch) | |
tree | 8f3644b45f1e1473151ed59ee7c2288669ceb83c /test/files/pos | |
parent | 2422b064e7a52c04dfb2239fc8e7b9ffbab24251 (diff) | |
download | scala-389a15bf1e63934644e4aa423cac31435438ff36.tar.gz scala-389a15bf1e63934644e4aa423cac31435438ff36.tar.bz2 scala-389a15bf1e63934644e4aa423cac31435438ff36.zip |
Fix for unnecessary InnerClasses for top-level objects.
Mirror classes (with static forwarders) for top-level
objects would get unnecessary InnerClasses entries
in some cases. See the following comment I introduced
to the place I fixed:
We need to make sure that we do not confuse inner classes
of the class we mirror with inner classes of the class
we are mirroring. These two sets can be different as
seen in this case:
```scala
class A {
class B
def b: B = new B
}
object C extends A
```
Here mirror class of C has a static forwarder for
(inherited) method `b` therefore it refers to class `B`
and needs InnerClasses entry. However, the real class
for `C` (named `C$`) is empty and does not refer to `B`
thus does not need InnerClasses entry it.
NOTE: This logic has been refactored in GenASM and
everything is implemented in a much cleaner way by
having two separate buffers.
Diffstat (limited to 'test/files/pos')
0 files changed, 0 insertions, 0 deletions