diff options
author | paltherr <paltherr@epfl.ch> | 2003-10-27 11:42:54 +0000 |
---|---|---|
committer | paltherr <paltherr@epfl.ch> | 2003-10-27 11:42:54 +0000 |
commit | 30ebdd6a33a155777c0c675dc20de938ee6d6e94 (patch) | |
tree | 9479c5ad07e7d0c8ac2eecc4e3f6c49bfa5ca0b6 /sources/scalac | |
parent | 6b900ad98d64efee658824d53126105cf6030857 (diff) | |
download | scala-30ebdd6a33a155777c0c675dc20de938ee6d6e94.tar.gz scala-30ebdd6a33a155777c0c675dc20de938ee6d6e94.tar.bz2 scala-30ebdd6a33a155777c0c675dc20de938ee6d6e94.zip |
- Replaced body of isSubType by a call to Type....
- Replaced body of isSubType by a call to Type.isSubType
Diffstat (limited to 'sources/scalac')
-rw-r--r-- | sources/scalac/transformer/Erasure.java | 36 |
1 files changed, 7 insertions, 29 deletions
diff --git a/sources/scalac/transformer/Erasure.java b/sources/scalac/transformer/Erasure.java index a29df0770e..e8f54d5aa5 100644 --- a/sources/scalac/transformer/Erasure.java +++ b/sources/scalac/transformer/Erasure.java @@ -577,35 +577,13 @@ public class Erasure extends Transformer implements Modifiers { return gen.Select(qual, sym); } - /** Subclass relation for class types; empty for other types. - */ - boolean isSubClass(Type tp1, Type tp2) { - Symbol sym1 = tp1.symbol(); - Symbol sym2 = tp2.symbol(); - return sym1 != null && sym2 != null && sym1.isSubClass(sym2); - } - /** Subtyping relation on erased types. */ - boolean isSubType(Type tp1, Type tp2) { - if (isSameAs(tp1, tp2)) return true; - switch (tp2) { - case UnboxedType(_): - return tp1.isSubType(tp2); - case UnboxedArrayType(Type elemtp2): - switch (tp1) { - case UnboxedArrayType(Type elemtp1): - return !(elemtp1 instanceof Type.UnboxedType) && - isSubType(elemtp1, elemtp2); - default: - return tp1.isSubType(tp2); - } - } - switch (tp1) { - case UnboxedArrayType(Type elemtp1): - if (tp2.symbol() == definitions.ANY_CLASS) return true; - } - return isSubClass(tp1, tp2); + boolean isSubType(Tree tree, Type tp2) { + global.nextPhase(); + boolean test = tp1.isSubType(tp2); + global.prevPhase(); + return test; } /** Equality relation on erased types. @@ -618,14 +596,14 @@ public class Erasure extends Transformer implements Modifiers { } Tree coerce(Tree tree, Type pt) { - return isSubType(tree.type, pt) ? tree : cast(tree, pt); + return isSubType(tree, pt) ? tree : cast(tree, pt); } Tree cast(Tree tree, Type pt) { if (global.debug) global.log("cast " + tree + ":" + tree.type + " to " + pt);//debug if (isSameAs(tree.type, pt)) { return tree; - } else if (isSubType(tree.type, pt)) { + } else if (isSubType(tree, pt)) { return tree; } else if (isUnboxed(tree.type) && !isUnboxed(pt)) { return cast(box(tree), pt); |