/* zweic -- a compiler for zwei * * Stephane Micheloud & LAMP * * $Id$ */ package zweic; // Internal type abstract class Type { override def toString(): String = this match { // ... à compléter ... case IBadType => "<Bad>" } def isSubtype(that: Type): Boolean = Pair(this, that) match { // ... à compléter ... case _ => false } def isSametype(that: Type): Boolean = Pair(this, that) match { // ... à compléter ... case _ => false } def lub(that: Type): Option[Type] = Pair(this, that) match { // ... à compléter ... case _ => None } } // Class type case class IClassType(c: ClassSymbol) extends Type; // Integer type case object IIntType extends Type; // Null type case object INullType extends Type; // Bad type case object IBadType extends Type;