public override void TraverseChildren(IAssumeStatement assumeStatement) { Bpl.Expr conditionExpr = ExpressionFor(assumeStatement.Condition); Bpl.Type conditionType = this.sink.CciTypeToBoogie(assumeStatement.Condition.Type); if (conditionType == this.sink.Heap.RefType) { conditionExpr = Bpl.Expr.Binary(Bpl.BinaryOperator.Opcode.Neq, conditionExpr, Bpl.Expr.Ident(this.sink.Heap.NullRef)); } else if (conditionType == Bpl.Type.Int) { conditionExpr = Bpl.Expr.Binary(Bpl.BinaryOperator.Opcode.Neq, conditionExpr, Bpl.Expr.Literal(0)); } else { System.Diagnostics.Debug.Assert(conditionType == Bpl.Type.Bool); } StmtBuilder.Add(new Bpl.AssumeCmd(assumeStatement.Token(), conditionExpr)); }
public override void TraverseChildren(IAssumeStatement assumeStatement) { Bpl.Expr conditionExpr = ExpressionFor(assumeStatement.Condition); Bpl.Type conditionType = this.sink.CciTypeToBoogie(assumeStatement.Condition.Type); if (conditionType == this.sink.Heap.RefType) { conditionExpr = Bpl.Expr.Binary(Bpl.BinaryOperator.Opcode.Neq, conditionExpr, Bpl.Expr.Ident(this.sink.Heap.NullRef)); } else if (conditionType == Bpl.Type.Int) { conditionExpr = Bpl.Expr.Binary(Bpl.BinaryOperator.Opcode.Neq, conditionExpr, Bpl.Expr.Literal(0)); } else { System.Diagnostics.Debug.Assert(conditionType == Bpl.Type.Bool); } StmtBuilder.Add(new Bpl.AssumeCmd(assumeStatement.Token(), conditionExpr)); }