diff options
author | paltherr <paltherr@epfl.ch> | 2003-07-15 15:17:55 +0000 |
---|---|---|
committer | paltherr <paltherr@epfl.ch> | 2003-07-15 15:17:55 +0000 |
commit | b82944e86b633ec91b435b647d6db7a66107c924 (patch) | |
tree | 449d545a99c4c123b23a752162953ac356170cac /sources/scalac/symtab | |
parent | 40eddc459e87ff08d484be9b981fb93c903be265 (diff) | |
download | scala-b82944e86b633ec91b435b647d6db7a66107c924.tar.gz scala-b82944e86b633ec91b435b647d6db7a66107c924.tar.bz2 scala-b82944e86b633ec91b435b647d6db7a66107c924.zip |
- Added a missing isMethod test on LambdaLiftPh...
- Added a missing isMethod test on LambdaLiftPhase.proxy - Added some
assertion checks to Type.typeParams and Type.valueParams - Patched
ClassSymbol.typeParams and LambdaLiftPhase.TransformTypeMap.apply
to hide bug of method Symbol.constructor (see comment is those two
methods).
Diffstat (limited to 'sources/scalac/symtab')
-rw-r--r-- | sources/scalac/symtab/Symbol.java | 12 | ||||
-rw-r--r-- | sources/scalac/symtab/Type.java | 12 |
2 files changed, 20 insertions, 4 deletions
diff --git a/sources/scalac/symtab/Symbol.java b/sources/scalac/symtab/Symbol.java index 62b6f1200a..a67669075a 100644 --- a/sources/scalac/symtab/Symbol.java +++ b/sources/scalac/symtab/Symbol.java @@ -1357,7 +1357,17 @@ public class ClassSymbol extends TypeSymbol { /** Get type parameters */ public Symbol[] typeParams() { - return constructor.info().typeParams(); + // !!! For some Java classes, constructor() returns an + // Overloaded symbol. This is wrong as constructor() should + // return the primary constructor. Once this problem is + // solved, the following switch can be removed. + Type constrtype = constructor.info(); + switch (constrtype) { + case OverloadedType(_, _): + return Symbol.EMPTY_ARRAY; + default: + return constrtype.typeParams(); + } } public Symbol[] valueParams() { diff --git a/sources/scalac/symtab/Type.java b/sources/scalac/symtab/Type.java index 61cd77c300..86dbb3a805 100644 --- a/sources/scalac/symtab/Type.java +++ b/sources/scalac/symtab/Type.java @@ -418,8 +418,10 @@ public class Type implements Modifiers, Kinds, TypeTags { switch (this) { case PolyType(Symbol[] tparams, _): return tparams; - default: + case MethodType(Symbol[] vparams, _): return Symbol.EMPTY_ARRAY; + default: + throw Debug.abort("illegal case", this); } } @@ -427,13 +429,17 @@ public class Type implements Modifiers, Kinds, TypeTags { * applicable. */ public Symbol[] valueParams() { + return valueParams(false); + } + private Symbol[] valueParams(boolean ok) { switch (this) { case PolyType(_, Type result): - return result.valueParams(); + return result.valueParams(true); case MethodType(Symbol[] vparams, _): return vparams; default: - return Symbol.EMPTY_ARRAY; + if (ok) return Symbol.EMPTY_ARRAY; + throw Debug.abort("illegal case", this); } } |