From df8ef8c828a794c6d2b96755db822969a4551dc8 Mon Sep 17 00:00:00 2001
From: Nicolas Voirol <voirol.nicolas@gmail.com>
Date: Tue, 11 Oct 2016 09:39:40 +0200
Subject: [PATCH] Fixed TIP parser for hex bitvectors & generalized identity
 transformers in TreeOps

---
 src/main/scala/inox/ast/TreeOps.scala | 8 ++++++--
 src/main/scala/inox/tip/Parser.scala  | 5 +----
 2 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/src/main/scala/inox/ast/TreeOps.scala b/src/main/scala/inox/ast/TreeOps.scala
index a5cc023e1..973c25e22 100644
--- a/src/main/scala/inox/ast/TreeOps.scala
+++ b/src/main/scala/inox/ast/TreeOps.scala
@@ -19,7 +19,7 @@ trait TreeOps { self: Trees =>
     } = self.deconstructor
   }
 
-  lazy val TreeIdentity = new SelfTreeTransformer {
+  class TreeIdentity extends SelfTreeTransformer {
     override def transform(id: Identifier, tpe: s.Type): (Identifier, t.Type) = (id, tpe)
     override def transform(v: s.Variable): t.Variable = v
     override def transform(vd: s.ValDef): t.ValDef = vd
@@ -28,11 +28,15 @@ trait TreeOps { self: Trees =>
     override def transform(flag: s.Flag): t.Flag = flag
   }
 
-  lazy val SymbolIdentity = new SymbolTransformer {
+  lazy val TreeIdentity: SelfTransformer = new TreeIdentity
+
+  class SymbolIdentity extends SymbolTransformer {
     val transformer = TreeIdentity
     override def transform(syms: s.Symbols): t.Symbols = syms
   }
 
+  lazy val SymbolIdentity: SymbolTransformer { val transformer: SelfTransformer } = new SymbolIdentity
+
   trait TreeTraverser {
     def traverse(vd: ValDef): Unit = traverse(vd.tpe)
 
diff --git a/src/main/scala/inox/tip/Parser.scala b/src/main/scala/inox/tip/Parser.scala
index 613bdf879..51024b61a 100644
--- a/src/main/scala/inox/tip/Parser.scala
+++ b/src/main/scala/inox/tip/Parser.scala
@@ -380,10 +380,7 @@ class Parser(file: File) {
     case SNumeral(n) =>
       IntegerLiteral(n)
 
-    // TODO: hexadecimal case
-    //case SHexadecimal(value) => BVLiteral()
-
-    case SBinary(bs) =>
+    case FixedSizeBitVectors.BitVectorLit(bs) =>
       BVLiteral(BitSet.empty ++ bs.reverse.zipWithIndex.collect { case (true, i) => i }, bs.size)
 
     case SDecimal(value) =>
-- 
GitLab