From 275a38a6d3301c1cc162e28251120ec1a1b84381 Mon Sep 17 00:00:00 2001
From: "Emmanouil (Manos) Koukoutos" <emmanouil.koukoutos@epfl.ch>
Date: Thu, 4 Dec 2014 17:20:13 +0100
Subject: [PATCH] Reorder some datagen productions

---
 src/main/scala/leon/datagen/NaiveDataGen.scala | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/src/main/scala/leon/datagen/NaiveDataGen.scala b/src/main/scala/leon/datagen/NaiveDataGen.scala
index d65e5ce1d..212b3ba22 100644
--- a/src/main/scala/leon/datagen/NaiveDataGen.scala
+++ b/src/main/scala/leon/datagen/NaiveDataGen.scala
@@ -57,7 +57,10 @@ class NaiveDataGen(ctx: LeonContext, p: Program, evaluator: Evaluator, _bounds :
         // generating lists.
         val ccChildren = act.knownCCDescendents
 
-        val (leafs,conss) = ccChildren.partition(_.fields.size == 0)
+        val (leafs,conss) = ccChildren.partition(_.fields.isEmpty)
+        
+        // FIXME: Will not work for mutually recursive types
+        val sortedConss = conss sortBy { _.fields.count{ _.getType.isInstanceOf[ClassType]}}
 
         // The stream for leafs...
         val leafsStream = leafs.toStream.flatMap { cct =>
@@ -65,7 +68,7 @@ class NaiveDataGen(ctx: LeonContext, p: Program, evaluator: Evaluator, _bounds :
         }
 
         // ...to which we append the streams for constructors.
-        leafsStream.append(interleave(conss.map { cct =>
+        leafsStream.append(interleave(sortedConss.map { cct =>
           generate(cct)
         }))
 
-- 
GitLab