From 22075d6fb494946e435eebad697d289e70a575a5 Mon Sep 17 00:00:00 2001 From: Ravi <ravi.kandhadai@epfl.ch> Date: Sun, 1 May 2016 11:57:49 +0200 Subject: [PATCH] Fixing a bug in the SMTLIB encoding of ADTs --- src/main/scala/leon/solvers/ADTManager.scala | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/main/scala/leon/solvers/ADTManager.scala b/src/main/scala/leon/solvers/ADTManager.scala index 7aefd9577..a08fbc1ae 100644 --- a/src/main/scala/leon/solvers/ADTManager.scala +++ b/src/main/scala/leon/solvers/ADTManager.scala @@ -70,7 +70,15 @@ class ADTManager(ctx: LeonContext) { def forEachType(t: TypeTree)(f: TypeTree => Unit): Unit = t match { case NAryType(tps, builder) => f(t) - tps.foreach(forEachType(_)(f)) + // note: each of the tps could be abstract classes in which case we need to + // lock their dependencies, transitively. + tps.foreach { + case ct: ClassType => + val (root, sub) = getHierarchy(ct) + (root +: sub).flatMap(_.fields.map(_.getType)).foreach(subt => forEachType(subt)(f)) + case othert => + forEachType(othert)(f) + } } protected def findDependencies(t: TypeTree): Unit = t match { -- GitLab