diff options
author | paltherr <paltherr@epfl.ch> | 2004-01-07 17:08:42 +0000 |
---|---|---|
committer | paltherr <paltherr@epfl.ch> | 2004-01-07 17:08:42 +0000 |
commit | 03399790a42aa81e90b5e1a8c25fcb8f8e9df574 (patch) | |
tree | 8511ab5560cbd8c892534f6e5a6a63801b0450cc /sources | |
parent | 497e073783f25263226447537b574f9f28ef1389 (diff) | |
download | scala-03399790a42aa81e90b5e1a8c25fcb8f8e9df574.tar.gz scala-03399790a42aa81e90b5e1a8c25fcb8f8e9df574.tar.bz2 scala-03399790a42aa81e90b5e1a8c25fcb8f8e9df574.zip |
- Added stable type variables
Diffstat (limited to 'sources')
-rw-r--r-- | sources/scalac/symtab/Type.java | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/sources/scalac/symtab/Type.java b/sources/scalac/symtab/Type.java index 220f24d728..04db29f6f0 100644 --- a/sources/scalac/symtab/Type.java +++ b/sources/scalac/symtab/Type.java @@ -146,6 +146,7 @@ public class Type implements Modifiers, Kinds, TypeTags, EntryTags { public static final Type[] EMPTY_ARRAY = new Type[0]; public static SingleType singleType(Type pre, Symbol sym) { + assert sym.isTerm(): pre + " -- " + Debug.show(sym); if (pre.isStable() || pre == ErrorType) { return new ExtSingleType(pre, sym); } else { @@ -711,6 +712,9 @@ public class Type implements Modifiers, Kinds, TypeTags, EntryTags { case SingleType(_, _): case ConstantType(_, _): return true; + case TypeRef(_, Symbol sym, _): + if (sym.isParameter() && sym.isSynthetic() && sym.hasStableFlag()) return true; + return false; default: return false; } @@ -724,6 +728,7 @@ public class Type implements Modifiers, Kinds, TypeTags, EntryTags { case SingleType(_, _): return true; case TypeRef(_, Symbol sym, _): + if (sym.isParameter() && sym.isSynthetic()) return true; return sym.kind == CLASS && ((sym.flags & JAVA) != 0 || (sym.flags & (TRAIT | ABSTRACT)) == 0); @@ -2153,6 +2158,9 @@ public class Type implements Modifiers, Kinds, TypeTags, EntryTags { || deAlias(this) != this && deAlias(this).isSameAs(that); + default: + if (deAlias(this) != this) + return deAlias(this).isSameAs(that); } break; |