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