summaryrefslogtreecommitdiff
path: root/Chalice/src/main/scala/Ast.scala
diff options
context:
space:
mode:
Diffstat (limited to 'Chalice/src/main/scala/Ast.scala')
-rw-r--r--Chalice/src/main/scala/Ast.scala6
1 files changed, 6 insertions, 0 deletions
diff --git a/Chalice/src/main/scala/Ast.scala b/Chalice/src/main/scala/Ast.scala
index 1cfd173e..b8a92f7c 100644
--- a/Chalice/src/main/scala/Ast.scala
+++ b/Chalice/src/main/scala/Ast.scala
@@ -182,6 +182,7 @@ case class Method(id: String, ins: List[Variable], outs: List[Variable], spec: L
override def Outs = outs
}
case class Predicate(id: String, private val rawDefinition: Expression) extends NamedMember(id) {
+ TranslatorPrelude.addPredicate(this)
lazy val definition: Expression = rawDefinition.transform {
case Epsilon | MethodEpsilon => Some(PredicateEpsilon(None))
case _ => None
@@ -209,8 +210,13 @@ case class Function(id: String, ins: List[Variable], out: Type, spec: List[Speci
result
}
var isUnlimited = false
+ var isStatic = false
var isRecursive = false
var SCC: List[Function] = Nil
+ // the 'height' of this function is determined by a topological sort of the
+ // condensation of the call graph; mutually recursive functions get the same
+ // height.
+ var height: Int = -1
}
case class Condition(id: String, where: Option[Expression]) extends NamedMember(id)
case class Variable(id: String, t: Type, isGhost: Boolean, isImmutable: Boolean) extends ASTNode {