From 8e02424dda925953c13e3caef8bb854802c06fb4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9gis=20Blanc?= <regwblanc@gmail.com> Date: Wed, 12 Dec 2012 14:36:09 +0100 Subject: [PATCH] Force a bestRealType on all TupleType --- src/main/scala/leon/purescala/TypeTrees.scala | 26 ++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/src/main/scala/leon/purescala/TypeTrees.scala b/src/main/scala/leon/purescala/TypeTrees.scala index feb400baf..91d597535 100644 --- a/src/main/scala/leon/purescala/TypeTrees.scala +++ b/src/main/scala/leon/purescala/TypeTrees.scala @@ -166,8 +166,32 @@ object TypeTrees { case object Int32Type extends TypeTree case object UnitType extends TypeTree + class TupleType private (val bases: Seq[TypeTree]) extends TypeTree { + lazy val dimension: Int = bases.length + + override def equals(other: Any): Boolean = { + other match { + case (t: TupleType) => t.bases == bases + case _ => false + } + } + + override def hashCode: Int = { + bases.foldLeft(42)((acc, t) => acc + t.hashCode) + } + + } + object TupleType { + def apply(bases: Seq[TypeTree]): TupleType = { + new TupleType(bases.map(bestRealType(_))) + } + def unapply(expr: TupleType): Option[Seq[TypeTree]] = expr match { + case (t: TupleType) => Some(t.bases) + case _ => None + } + } + case class ListType(base: TypeTree) extends TypeTree - case class TupleType(bases: Seq[TypeTree]) extends TypeTree { lazy val dimension: Int = bases.length } case class SetType(base: TypeTree) extends TypeTree case class MultisetType(base: TypeTree) extends TypeTree case class MapType(from: TypeTree, to: TypeTree) extends TypeTree -- GitLab