From ebcbe6cfa7cd8ee5ecb6716ad30d86406d508ca0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ali=20Sinan=20K=C3=B6ksal?= <alisinan@gmail.com>
Date: Thu, 5 May 2011 15:07:26 +0000
Subject: [PATCH] extracted "Typed" expressions of kind x: T

---
 cp-demo/FirstClassConstraints.scala | 2 +-
 src/cp/CodeExtraction.scala         | 1 +
 src/cp/Extractors.scala             | 7 +++++++
 3 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/cp-demo/FirstClassConstraints.scala b/cp-demo/FirstClassConstraints.scala
index 281b385e6..c0bdf5b79 100644
--- a/cp-demo/FirstClassConstraints.scala
+++ b/cp-demo/FirstClassConstraints.scala
@@ -18,7 +18,7 @@ object FirstClassConstraints {
   def main(args: Array[String]) : Unit = {
     val l = List(1, 3, 5, 7)
 
-    for (x <- (oneOf(l) minimizing ((x: Int) => -x)).findAll)
+    for (x <- (oneOf(l) minimizing (- (_: Int))).findAll)
       println("A solution: " + x)
 
     val mapper : Term1[MyList,MyList] = (l : MyList) => l match { case MyCons(_, xs) => xs; case x => x }
diff --git a/src/cp/CodeExtraction.scala b/src/cp/CodeExtraction.scala
index bc0b7b20d..bd8002024 100644
--- a/src/cp/CodeExtraction.scala
+++ b/src/cp/CodeExtraction.scala
@@ -628,6 +628,7 @@ trait CodeExtraction extends Extractors {
       }
       case ExInt32Literal(v) => IntLiteral(v).setType(Int32Type)
       case ExBooleanLiteral(v) => BooleanLiteral(v).setType(BooleanType)
+      case ExTyped(e,tpt) => rec(e).setType(scalaType2PureScala(unit,silent)(tpt.tpe))
       case i @ ExIdentifier(sym,tpt) => varSubsts.get(sym) match {
         case Some(fun) => fun()
         case None => {
diff --git a/src/cp/Extractors.scala b/src/cp/Extractors.scala
index a53a339a7..756d0d5b6 100644
--- a/src/cp/Extractors.scala
+++ b/src/cp/Extractors.scala
@@ -210,6 +210,13 @@ trait Extractors {
       }
     }
 
+    object ExTyped {
+      def unapply(tree : Typed): Option[(Tree,Tree)] = tree match {
+        case Typed(e,t) => Some((e,t))
+        case _ => None
+      }
+    }
+
     object ExIntIdentifier {
       def unapply(tree: Ident): Option[String] = tree match {
         case i: Ident if i.symbol.tpe == IntClass.tpe => Some(i.symbol.name.toString)
-- 
GitLab