summaryrefslogtreecommitdiff
path: root/sources/scalac
diff options
context:
space:
mode:
authorpaltherr <paltherr@epfl.ch>2004-01-07 17:08:42 +0000
committerpaltherr <paltherr@epfl.ch>2004-01-07 17:08:42 +0000
commit03399790a42aa81e90b5e1a8c25fcb8f8e9df574 (patch)
tree8511ab5560cbd8c892534f6e5a6a63801b0450cc /sources/scalac
parent497e073783f25263226447537b574f9f28ef1389 (diff)
downloadscala-03399790a42aa81e90b5e1a8c25fcb8f8e9df574.tar.gz
scala-03399790a42aa81e90b5e1a8c25fcb8f8e9df574.tar.bz2
scala-03399790a42aa81e90b5e1a8c25fcb8f8e9df574.zip
- Added stable type variables
Diffstat (limited to 'sources/scalac')
-rw-r--r--sources/scalac/symtab/Type.java8
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;