From d2fec907fdd768e6bcd07b68b01673749c67e810 Mon Sep 17 00:00:00 2001
From: Manos Koukoutos <emmanouil.koukoutos@epfl.ch>
Date: Mon, 2 May 2016 12:35:26 +0200
Subject: [PATCH] Fix GrammarDataGen for empty inputs

---
 .../scala/leon/datagen/GrammarDataGen.scala   | 25 ++++++++++---------
 1 file changed, 13 insertions(+), 12 deletions(-)

diff --git a/src/main/scala/leon/datagen/GrammarDataGen.scala b/src/main/scala/leon/datagen/GrammarDataGen.scala
index 29e102281..ffe7b8b47 100644
--- a/src/main/scala/leon/datagen/GrammarDataGen.scala
+++ b/src/main/scala/leon/datagen/GrammarDataGen.scala
@@ -59,8 +59,20 @@ class GrammarDataGen(evaluator: Evaluator, grammar: ExpressionGrammar = ValueGra
   }
 
   def generateFor(ins: Seq[Identifier], satisfying: Expr, maxValid: Int, maxEnumerated: Int): Iterator[Seq[Expr]] = {
+
+    def filterCond(vs: Seq[Expr]): Boolean = satisfying match {
+      case BooleanLiteral(true) =>
+        true
+      case e =>
+        // in -> e should be enough. We shouldn't find any subexpressions of in.
+        evaluator.eval(e, (ins zip vs).toMap) match {
+          case EvaluationResults.Successful(BooleanLiteral(true)) => true
+          case _ => false
+        }
+    }
+
     if (ins.isEmpty) {
-      Iterator.empty
+      Iterator(Seq[Expr]()).filter(filterCond)
     } else {
       val values = generate(tupleTypeWrap(ins.map{ _.getType }))
 
@@ -68,17 +80,6 @@ class GrammarDataGen(evaluator: Evaluator, grammar: ExpressionGrammar = ValueGra
         v => unwrapTuple(v, ins.size)
       }
 
-      def filterCond(vs: Seq[Expr]): Boolean = satisfying match {
-        case BooleanLiteral(true) =>
-          true 
-        case e => 
-          // in -> e should be enough. We shouldn't find any subexpressions of in.
-          evaluator.eval(e, (ins zip vs).toMap) match {
-            case EvaluationResults.Successful(BooleanLiteral(true)) => true
-            case _ => false
-          }
-      }
-
       detupled.take(maxEnumerated)
               .filter(filterCond)
               .take(maxValid)
-- 
GitLab