diff options
author | Martin Odersky <odersky@gmail.com> | 2003-03-04 15:20:12 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2003-03-04 15:20:12 +0000 |
commit | e9e6e2ee0d5d12853d2d6f9ce2a6bc3148fd4c40 (patch) | |
tree | e0a36ec3beb00f77c4c95f208b3f270b4c3a136e /sources/scalac | |
parent | c92e218894312499145816a5ad1f70f042e112b1 (diff) | |
download | scala-e9e6e2ee0d5d12853d2d6f9ce2a6bc3148fd4c40.tar.gz scala-e9e6e2ee0d5d12853d2d6f9ce2a6bc3148fd4c40.tar.bz2 scala-e9e6e2ee0d5d12853d2d6f9ce2a6bc3148fd4c40.zip |
*** empty log message ***
Diffstat (limited to 'sources/scalac')
-rw-r--r-- | sources/scalac/symtab/Symbol.java | 2 | ||||
-rw-r--r-- | sources/scalac/symtab/Type.java | 17 | ||||
-rw-r--r-- | sources/scalac/transformer/LambdaLiftPhase.java | 2 |
3 files changed, 16 insertions, 5 deletions
diff --git a/sources/scalac/symtab/Symbol.java b/sources/scalac/symtab/Symbol.java index e77de471a9..48e07b4021 100644 --- a/sources/scalac/symtab/Symbol.java +++ b/sources/scalac/symtab/Symbol.java @@ -1101,7 +1101,7 @@ public class ClassSymbol extends TypeSymbol { */ private Type thistp = Type.ThisType(this); - /** Principal Constructor for module classes and classes with static members. + /** Principal Constructor */ public ClassSymbol(int pos, Name name, Symbol owner, int flags) { super(CLASS, pos, name, owner, flags); diff --git a/sources/scalac/symtab/Type.java b/sources/scalac/symtab/Type.java index e7a701ce6d..c239146f78 100644 --- a/sources/scalac/symtab/Type.java +++ b/sources/scalac/symtab/Type.java @@ -585,9 +585,9 @@ public class Type implements Modifiers, Kinds, TypeTags { return tp; } else { Scope members2 = new Scope(); - Type tp1 = compoundType(parts1, members2); - //Type tp1 = (tp.symbol().isCompoundSym()) ? compoundType(parts1, members2) - // : compoundType(parts1, members2, tp.symbol()); + //Type tp1 = compoundType(parts1, members2); + Type tp1 = (tp.symbol().isCompoundSym()) ? compoundType(parts1, members2) + : compoundType(parts1, members2, tp.symbol()); Symbol[] syms1 = members1.elements(); Symbol[] syms2 = new Symbol[syms1.length]; for (int i = 0; i < syms2.length; i++) { @@ -695,6 +695,17 @@ public class Type implements Modifiers, Kinds, TypeTags { public Symbol map(Symbol sym) { return sym; } public Symbol[] map(Symbol[] syms) { return syms; } public Scope map(Scope s) { return s; } + public Type map(Type tp) { + switch (tp) { + case CompoundType(Type[] parts, Scope members): + if (!tp.symbol().isCompoundSym()) { + Type[] parts1 = map(parts); + if (parts1 == parts) return tp; + else return compoundType(parts1, members, tp.symbol()); + } + } + return super.map(tp); + } } // baseType and asSeenFrom -------------------------------------------------------- diff --git a/sources/scalac/transformer/LambdaLiftPhase.java b/sources/scalac/transformer/LambdaLiftPhase.java index 35e3e44ff0..4208e6ede1 100644 --- a/sources/scalac/transformer/LambdaLiftPhase.java +++ b/sources/scalac/transformer/LambdaLiftPhase.java @@ -47,7 +47,7 @@ public class LambdaLiftPhase extends PhaseDescriptor implements Kinds, Modifiers global.log("transform info for " + sym + sym.locationString()); Type tp1 = tp; if (sym != Symbol.NONE) { - switch (sym.type()) { + switch (tp) { case MethodType(_, _): case PolyType(_, _): tp1 = transform(tp, sym); |