diff options
author | Iulian Dragos <jaguarul@gmail.com> | 2010-11-13 13:31:49 +0000 |
---|---|---|
committer | Iulian Dragos <jaguarul@gmail.com> | 2010-11-13 13:31:49 +0000 |
commit | d205bf404fb361de6c8829d8f13d8adcc809e87d (patch) | |
tree | 4fab6cd12183a287cdaf20d5700ee6185f492ce5 /src/fjbg/ch/epfl | |
parent | 8c5af3304f8592fbb2fe20db4caf61f1085b8723 (diff) | |
download | scala-d205bf404fb361de6c8829d8f13d8adcc809e87d.tar.gz scala-d205bf404fb361de6c8829d8f13d8adcc809e87d.tar.bz2 scala-d205bf404fb361de6c8829d8f13d8adcc809e87d.zip |
Fix InnerClasses attribute: anonymous classes d...
Fix InnerClasses attribute: anonymous classes don't have an outer
name. EnclosingMethod is correctly generated. Fixed isAnonymousClass
definition. Updated test that depends on anonymous inner class names.
Closes (again) #3249, references #2749. review by odersky,extempore.
Diffstat (limited to 'src/fjbg/ch/epfl')
-rw-r--r-- | src/fjbg/ch/epfl/lamp/fjbg/JInnerClassesAttribute.java | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/fjbg/ch/epfl/lamp/fjbg/JInnerClassesAttribute.java b/src/fjbg/ch/epfl/lamp/fjbg/JInnerClassesAttribute.java index 81a7db7488..ac69d24947 100644 --- a/src/fjbg/ch/epfl/lamp/fjbg/JInnerClassesAttribute.java +++ b/src/fjbg/ch/epfl/lamp/fjbg/JInnerClassesAttribute.java @@ -24,7 +24,14 @@ public class JInnerClassesAttribute extends JAttribute { } public void addEntry(String inner, String outer, String name, int flags) { - Entry e = new Entry(inner, outer, name, flags); + int inIdx = pool.addClass(inner); + int ouIdx = 0; + if (outer != null) ouIdx = pool.addClass(outer); + int nIdx = 0; + if (name != null) nIdx = pool.addUtf8(name); + + Entry e = new Entry(inIdx, ouIdx, nIdx, flags); + if (entries.containsKey(inner)) { Entry other = (Entry) entries.get(inner); assert other.outerInfo == e.outerInfo && other.originalName == e.originalName && other.innerFlags == e.innerFlags |