diff --git a/src/main/scala/leon/datagen/NaiveDataGen.scala b/src/main/scala/leon/datagen/NaiveDataGen.scala index d65e5ce1d7fb1312f3009b600eaae79dc82f0324..212b3ba226bee348ad4a4cc6c0eaa957fe39afff 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) }))