summaryrefslogtreecommitdiff
path: root/src/fjbg
diff options
context:
space:
mode:
authorIulian Dragos <jaguarul@gmail.com>2010-11-13 13:31:49 +0000
committerIulian Dragos <jaguarul@gmail.com>2010-11-13 13:31:49 +0000
commitd205bf404fb361de6c8829d8f13d8adcc809e87d (patch)
tree4fab6cd12183a287cdaf20d5700ee6185f492ce5 /src/fjbg
parent8c5af3304f8592fbb2fe20db4caf61f1085b8723 (diff)
downloadscala-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')
-rw-r--r--src/fjbg/ch/epfl/lamp/fjbg/JInnerClassesAttribute.java9
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