From 792cac277cd70add0a902cb4ce6b45e8401a5c64 Mon Sep 17 00:00:00 2001
From: Philippe Suter <philippe.suter@gmail.com>
Date: Mon, 28 Jun 2010 22:03:50 +0000
Subject: [PATCH]

---
 src/purescala/Trees.scala | 7 +++++++
 testcases/RedBlack.scala  | 7 +++++--
 2 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/src/purescala/Trees.scala b/src/purescala/Trees.scala
index 390728610..c0a61240a 100644
--- a/src/purescala/Trees.scala
+++ b/src/purescala/Trees.scala
@@ -12,6 +12,13 @@ object Trees {
     override def toString: String = PrettyPrinter(this)
   }
 
+  /* Like vals */
+  case class Let(binder: Identifier, expression: Expr) extends Expr {
+    val et = expression.getType
+    if(et != NoType)
+      setType(et)
+  }
+
   /* Control flow */
   case class FunctionInvocation(funDef: FunDef, args: Seq[Expr]) extends Expr
   case class IfExpr(cond: Expr, then: Expr, elze: Expr) extends Expr 
diff --git a/testcases/RedBlack.scala b/testcases/RedBlack.scala
index d05e0bc5a..d2f1a1f8e 100644
--- a/testcases/RedBlack.scala
+++ b/testcases/RedBlack.scala
@@ -53,8 +53,11 @@ object RedBlack {
 
   def makeBlack(t: Tree) = {
     require(t != EmptyTree())
-    val Node(_, left, x, right) = t 
-    Node(Black(), left, x, right)
+    //val Node(_, left, x, right) = t 
+    //Node(Black(), left, x, right)
+    t match {
+      case Node(_, left, x, right) => Node(Black(), left, x, right)
+    }
   } ensuring ((x:Tree) => x match {case Node(Black(), _, _, _) => true; case _ => false})
 
   def ins_(t: Tree, e: Int): Tree = t match {
-- 
GitLab