From d205bf404fb361de6c8829d8f13d8adcc809e87d Mon Sep 17 00:00:00 2001 From: Iulian Dragos Date: Sat, 13 Nov 2010 13:31:49 +0000 Subject: 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. --- src/fjbg/ch/epfl/lamp/fjbg/JInnerClassesAttribute.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'src/fjbg') 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 -- cgit v1.2.3