From fe1158fedff529efbc86c5a8eadc623b58c9bdea Mon Sep 17 00:00:00 2001
From: Etienne Kneuss <ekneuss@gmail.com>
Date: Fri, 12 Jun 2015 01:32:17 +0200
Subject: [PATCH] Make Leon strings a bit more scala-friendly

---
 library/lang/string/String.scala                   | 14 +++++++++++++-
 .../leon/frontends/scalac/CodeExtraction.scala     |  3 +++
 2 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/library/lang/string/String.scala b/library/lang/string/String.scala
index e0a591f01..0a3e72bd1 100644
--- a/library/lang/string/String.scala
+++ b/library/lang/string/String.scala
@@ -3,9 +3,10 @@
 package leon.lang.string
 
 import leon.annotation._
+import leon.collection._
 
 @library
-case class String(chars: leon.collection.List[Char]) {
+case class String(chars: List[Char]) {
   def +(that: String): String = {
     String(this.chars ++ that.chars)
   }
@@ -13,4 +14,15 @@ case class String(chars: leon.collection.List[Char]) {
   def size = chars.size
 
   def length = size
+
+  @ignore
+  override def toString = {
+
+    "\""+charsToString(chars)+"\""
+  }
+  @ignore
+  def charsToString(chars: List[Char]): java.lang.String = chars match {
+    case Cons(h, t) => h + charsToString(t)
+    case Nil() => ""
+  }
 }
diff --git a/src/main/scala/leon/frontends/scalac/CodeExtraction.scala b/src/main/scala/leon/frontends/scalac/CodeExtraction.scala
index 0741d2b4b..101e572ee 100644
--- a/src/main/scala/leon/frontends/scalac/CodeExtraction.scala
+++ b/src/main/scala/leon/frontends/scalac/CodeExtraction.scala
@@ -721,6 +721,9 @@ trait CodeExtraction extends ASTExtractors {
         val ctparamsMap = ctparams zip cd.tparams.map(_.tp)
 
         for (d <- tmpl.body) d match {
+          case t if isIgnored(t.symbol) =>
+            //ignore
+
           case ExFunctionDef(sym, tparams, params, _, body) =>
             val fd = defsToDefs(sym)
 
-- 
GitLab