From 4785b17ce96c51fa08c00a3224a0bd30ef5ed744 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?R=C3=A9gis=20Blanc?= <regwblanc@gmail.com>
Date: Thu, 13 Dec 2012 15:23:54 +0100
Subject: [PATCH] remove Options trees

---
 src/main/scala/leon/plugin/CodeExtraction.scala   |  6 ------
 src/main/scala/leon/purescala/PrettyPrinter.scala | 11 -----------
 src/main/scala/leon/purescala/ScalaPrinter.scala  | 12 ------------
 src/main/scala/leon/purescala/Trees.scala         |  6 ------
 src/main/scala/leon/purescala/TypeTrees.scala     |  5 -----
 src/main/scala/leon/solvers/RandomSolver.scala    |  1 -
 6 files changed, 41 deletions(-)

diff --git a/src/main/scala/leon/plugin/CodeExtraction.scala b/src/main/scala/leon/plugin/CodeExtraction.scala
index 8807b8761..c7cc6a103 100644
--- a/src/main/scala/leon/plugin/CodeExtraction.scala
+++ b/src/main/scala/leon/plugin/CodeExtraction.scala
@@ -709,11 +709,6 @@ trait CodeExtraction extends Extractors {
             val IntLiteral(ri) = rec(i)
             Waypoint(ri, rec(tree)).setType(pstpe)
           }
-          case ExSomeConstruction(tpe, arg) => {
-            // println("Got Some !" + tpe + ":" + arg)
-            val underlying = scalaType2PureScala(unit, silent)(tpe)
-            OptionSome(rec(arg)).setType(OptionType(underlying))
-          }
           case ExCaseClassConstruction(tpt, args) => {
             val cctype = scalaType2PureScala(unit, silent)(tpt.tpe)
             if(!cctype.isInstanceOf[CaseClassType]) {
@@ -1049,7 +1044,6 @@ trait CodeExtraction extends Extractors {
       case tpe if tpe == NothingClass.tpe => BottomType
       case TypeRef(_, sym, btt :: Nil) if isSetTraitSym(sym) => SetType(rec(btt))
       case TypeRef(_, sym, btt :: Nil) if isMultisetTraitSym(sym) => MultisetType(rec(btt))
-      case TypeRef(_, sym, btt :: Nil) if isOptionClassSym(sym) => OptionType(rec(btt))
       case TypeRef(_, sym, List(ftt,ttt)) if isMapTraitSym(sym) => MapType(rec(ftt),rec(ttt))
       case TypeRef(_, sym, List(t1,t2)) if isTuple2(sym) => TupleType(Seq(rec(t1),rec(t2)))
       case TypeRef(_, sym, List(t1,t2,t3)) if isTuple3(sym) => TupleType(Seq(rec(t1),rec(t2),rec(t3)))
diff --git a/src/main/scala/leon/purescala/PrettyPrinter.scala b/src/main/scala/leon/purescala/PrettyPrinter.scala
index 7ab1b3c2f..0f023bfb9 100644
--- a/src/main/scala/leon/purescala/PrettyPrinter.scala
+++ b/src/main/scala/leon/purescala/PrettyPrinter.scala
@@ -114,16 +114,6 @@ object PrettyPrinter {
       nsb
     }
 
-    case OptionSome(a) => {
-      var nsb = sb
-      nsb.append("Some(")
-      nsb = pp(a, nsb, lvl)
-      nsb.append(")")
-      nsb
-    }
-
-    case OptionNone(_) => sb.append("None")
-
     case CaseClass(cd, args) => {
       var nsb = sb
       nsb.append(cd.id)
@@ -367,7 +357,6 @@ object PrettyPrinter {
     case SetType(bt) => pp(bt, sb.append("Set["), lvl).append("]")
     case MapType(ft,tt) => pp(tt, pp(ft, sb.append("Map["), lvl).append(","), lvl).append("]")
     case MultisetType(bt) => pp(bt, sb.append("Multiset["), lvl).append("]")
-    case OptionType(bt) => pp(bt, sb.append("Option["), lvl).append("]")
     case TupleType(tpes) => ppNaryType(sb, tpes, "(", ", ", ")", lvl)
     case c: ClassType => sb.append(c.classDef.id)
     case _ => sb.append("Type?")
diff --git a/src/main/scala/leon/purescala/ScalaPrinter.scala b/src/main/scala/leon/purescala/ScalaPrinter.scala
index b1cec54c5..aad213668 100644
--- a/src/main/scala/leon/purescala/ScalaPrinter.scala
+++ b/src/main/scala/leon/purescala/ScalaPrinter.scala
@@ -114,14 +114,6 @@ object ScalaPrinter {
       sb.append("._" + i)
     }
 
-    case OptionSome(a) => {
-      sb.append("Some(")
-      pp(a, sb, lvl)
-      sb.append(")")
-    }
-
-    case OptionNone(_) => sb.append("None")
-
     case CaseClass(cd, args) => {
       sb.append(cd.id)
       ppNary(sb, args, "(", ", ", ")", lvl)
@@ -367,10 +359,6 @@ object ScalaPrinter {
       sb.append("Multiset[")
       pp(bt, sb, lvl)
       sb.append("]")
-    case OptionType(bt) =>
-      sb.append("Option[")
-      pp(bt, sb, lvl)
-      sb.append("]")
     case TupleType(tpes) => ppNaryType(sb, tpes, "(", ", ", ")", lvl)
     case c: ClassType => sb.append(c.classDef.id)
     case _ => sb.append("Type?")
diff --git a/src/main/scala/leon/purescala/Trees.scala b/src/main/scala/leon/purescala/Trees.scala
index e8516fc9a..741b3fcaa 100644
--- a/src/main/scala/leon/purescala/Trees.scala
+++ b/src/main/scala/leon/purescala/Trees.scala
@@ -383,12 +383,6 @@ object Trees {
     val fixedType = BooleanType
   }
 
-  /* Option expressions */
-  case class OptionSome(value: Expr) extends Expr 
-  case class OptionNone(baseType: TypeTree) extends Expr with Terminal with FixedType {
-    val fixedType = OptionType(baseType)
-  }
-
   /* Set expressions */
   case class EmptySet(baseType: TypeTree) extends Expr with Terminal
   case class FiniteSet(elements: Seq[Expr]) extends Expr 
diff --git a/src/main/scala/leon/purescala/TypeTrees.scala b/src/main/scala/leon/purescala/TypeTrees.scala
index 3e834e0b0..6dd49f749 100644
--- a/src/main/scala/leon/purescala/TypeTrees.scala
+++ b/src/main/scala/leon/purescala/TypeTrees.scala
@@ -142,10 +142,6 @@ object TypeTrees {
       case (_,InfiniteSize) => InfiniteSize
       case (FiniteSize(n),FiniteSize(m)) => FiniteSize(scala.math.pow(m+1, n).toInt)
     }
-    case OptionType(base) => domainSize(base) match {
-      case InfiniteSize => InfiniteSize
-      case FiniteSize(n) => FiniteSize(n+1)
-    }
     case c: ClassType => InfiniteSize
   }
 
@@ -187,7 +183,6 @@ object TypeTrees {
   case class SetType(base: TypeTree) extends TypeTree
   case class MultisetType(base: TypeTree) extends TypeTree
   case class MapType(from: TypeTree, to: TypeTree) extends TypeTree
-  case class OptionType(base: TypeTree) extends TypeTree
   case class ArrayType(base: TypeTree) extends TypeTree
 
   sealed abstract class ClassType extends TypeTree {
diff --git a/src/main/scala/leon/solvers/RandomSolver.scala b/src/main/scala/leon/solvers/RandomSolver.scala
index da6731a73..330bd00fc 100644
--- a/src/main/scala/leon/solvers/RandomSolver.scala
+++ b/src/main/scala/leon/solvers/RandomSolver.scala
@@ -75,7 +75,6 @@ class RandomSolver(context: LeonContext, val nbTrial: Option[Int] = None) extend
     case ListType(base) => sys.error("I don't know what to do")
     case TupleType(bases) => sys.error("I don't know what to do")
     case MapType(from, to) => sys.error("I don't know what to do")
-    case OptionType(base) => sys.error("I don't know what to do")
     case _ => sys.error("Unexpected type: " + t)
   }
 
-- 
GitLab