diff options
Diffstat (limited to 'Chalice/src/main/scala/Ast.scala')
-rw-r--r-- | Chalice/src/main/scala/Ast.scala | 6 |
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 {
|