///|
#valtype
pub struct NumericUpdatePlan {
priv assigned : Value
priv expression : Value
}
///|
pub fn plan_numeric_update(
old_number : Double,
op : @ast.UpdateOp,
prefix : Bool,
) -> NumericUpdatePlan {
let next_number = match op {
Increment => old_number + 1.0
Decrement => old_number - 1.0
}
let assigned = Value::Number(next_number)
let expression = if prefix { assigned } else { Value::Number(old_number) }
{ assigned, expression, }
}
///|
pub fn NumericUpdatePlan::assigned_value(self : NumericUpdatePlan) -> Value {
self.assigned
}
///|
pub fn NumericUpdatePlan::expression_value(self : NumericUpdatePlan) -> Value {
self.expression
}