diff --git a/cp-demo/FirstClassConstraints.scala b/cp-demo/FirstClassConstraints.scala index 281b385e68166d5ccacf9f52073872e8a607ecb2..c0bdf5b7933c9513fcd08c902e799e9a117e73fd 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 bc0b7b20d5f4c56d4f8646024a49d2ee04c3e475..bd8002024034eb4a7297e5b715fac32a382ec9a9 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 a53a339a71d88ee1364e69c6e67df923137a4e4b..756d0d5b69748b859b296ed08d1cceb9d1fe119b 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)