diff --git a/src/main/wacc/ast.scala b/src/main/wacc/ast.scala index 6a86abf..1e85989 100644 --- a/src/main/wacc/ast.scala +++ b/src/main/wacc/ast.scala @@ -150,19 +150,18 @@ object ast { // Types sealed trait Type - case object IntType extends Type with ParserBridge0[IntType.type] - case object BoolType extends Type with ParserBridge0[BoolType.type] - case object CharType extends Type with ParserBridge0[CharType.type] - case object StringType extends Type with ParserBridge0[StringType.type] - case class ArrayType(elemType: Type) extends Type + sealed trait BaseType extends Type with PairElemType + case object IntType extends BaseType with ParserBridge0[IntType.type] + case object BoolType extends BaseType with ParserBridge0[BoolType.type] + case object CharType extends BaseType with ParserBridge0[CharType.type] + case object StringType extends BaseType with ParserBridge0[StringType.type] + case class ArrayType(elemType: Type) extends Type with PairElemType object ArrayType extends ParserBridge1[Type, ArrayType] case class PairType(fst: PairElemType, snd: PairElemType) extends Type object PairType extends ParserBridge2[PairElemType, PairElemType, PairType] sealed trait PairElemType - case object PairBaseType + case object UntypedPairType extends PairElemType - with ParserBridge0[PairBaseType.type] - case class PairArrayType(baseType: Type) extends PairElemType - object PairArrayType extends ParserBridge1[Type, PairArrayType] + with ParserBridge0[UntypedPairType.type] }