diff --git a/src/main/scala/leon/solvers/z3/AbstractZ3Solver.scala b/src/main/scala/leon/solvers/z3/AbstractZ3Solver.scala index 9907f03945440723d8a2829992197a1ae0406d46..1036643df0bc92de9772597af9d26f156c0ebb97 100644 --- a/src/main/scala/leon/solvers/z3/AbstractZ3Solver.scala +++ b/src/main/scala/leon/solvers/z3/AbstractZ3Solver.scala @@ -160,7 +160,7 @@ trait AbstractZ3Solver extends Solver { val defs = for ((_, DataType(sym, cases)) <- adts) yield {( sym.uniqueName, cases.map(c => c.sym.uniqueName), - cases.map(c => c.fields.map{ case(id, tpe) => (id.uniqueName, typeToSortRef(tpe))}) + cases.map(c => c.fields.map { case(id, tpe) => (id.uniqueName, typeToSortRef(tpe))}) )} val resultingZ3Info = z3.mkADTSorts(defs) diff --git a/src/main/scala/leon/termination/StructuralSize.scala b/src/main/scala/leon/termination/StructuralSize.scala index f7554e7aaeb7e45a640df5265b268c79b2d39be1..6d6bf68945cc72759f6d07f87fdee29b3e38a725 100644 --- a/src/main/scala/leon/termination/StructuralSize.scala +++ b/src/main/scala/leon/termination/StructuralSize.scala @@ -205,20 +205,21 @@ trait StructuralSize { case ct: ClassType => val root = ct.root val fd = outerCache.getOrElse(root.classDef.typed, { - val id = FreshIdentifier("x", root.classDef.typed, true) + val tcd = root.classDef.typed + val id = FreshIdentifier("x", tcd, true) val fd = new FunDef(FreshIdentifier("outerSize", alwaysShowUniqueID = true), root.classDef.tparams, Seq(ValDef(id)), IntegerType) - outerCache(root.classDef.typed) = fd + outerCache(tcd) = fd - fd.body = Some(MatchExpr(Variable(id), root.knownCCDescendants map { cct => + fd.body = Some(MatchExpr(Variable(id), tcd.knownCCDescendants map { cct => val args = cct.fields.map(_.id.freshen) purescala.Extractors.SimpleCase( CaseClassPattern(None, cct, args.map(id => WildcardPattern(Some(id)))), args.foldLeft[Expr](InfiniteIntegerLiteral(1)) { case (e, id) => plus(e, id.getType match { - case ct: ClassType if dependencies(root)(ct.root) => outerSize(Variable(id)) + case ct: ClassType if dependencies(tcd)(ct.root) => outerSize(Variable(id)) case _ => InfiniteIntegerLiteral(0) }) }) @@ -229,7 +230,7 @@ trait StructuralSize { fd }) - FunctionInvocation(fd.typed(ct.tps), Seq(e)) + FunctionInvocation(fd.typed(root.tps), Seq(e)) case _ => InfiniteIntegerLiteral(0) }) diff --git a/src/test/scala/leon/regression/termination/TerminationSuite.scala b/src/test/scala/leon/regression/termination/TerminationSuite.scala index 876ad77bde182b5fd380300a69b3963929eaee31..5aa1d7891a2dbee9b5b30c4b8211f02d81bf1cdb 100644 --- a/src/test/scala/leon/regression/termination/TerminationSuite.scala +++ b/src/test/scala/leon/regression/termination/TerminationSuite.scala @@ -68,7 +68,7 @@ class TerminationSuite extends LeonRegressionSuite { private def forEachFileIn(files: Iterable[File], forError: Boolean = false)(block : Output=>Unit) { for(f <- files) { - mkTest(f, Seq("--solvers=smt-z3"), forError)(block) + mkTest(f, Seq(), forError)(block) } }