Refactor.
This commit is contained in:
parent
8f1cb4aef7
commit
3a3653f42a
@ -280,7 +280,7 @@ pub fn get_builtin_binary_op_fn(op: &Token, x: &Dynamic, y: &Dynamic) -> Option<
|
|||||||
Token::GreaterThanEqualsTo => Some(impl_op!(FLOAT => $xx >= $yy)),
|
Token::GreaterThanEqualsTo => Some(impl_op!(FLOAT => $xx >= $yy)),
|
||||||
Token::LessThan => Some(impl_op!(FLOAT => $xx < $yy)),
|
Token::LessThan => Some(impl_op!(FLOAT => $xx < $yy)),
|
||||||
Token::LessThanEqualsTo => Some(impl_op!(FLOAT => $xx <= $yy)),
|
Token::LessThanEqualsTo => Some(impl_op!(FLOAT => $xx <= $yy)),
|
||||||
_ => None,
|
_ => None,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -308,7 +308,7 @@ pub fn get_builtin_binary_op_fn(op: &Token, x: &Dynamic, y: &Dynamic) -> Option<
|
|||||||
Token::Divide => return Some(impl_op!(from Decimal => divide($xx, $yy))),
|
Token::Divide => return Some(impl_op!(from Decimal => divide($xx, $yy))),
|
||||||
Token::Modulo => return Some(impl_op!(from Decimal => modulo($xx, $yy))),
|
Token::Modulo => return Some(impl_op!(from Decimal => modulo($xx, $yy))),
|
||||||
Token::PowerOf => return Some(impl_op!(from Decimal => power($xx, $yy))),
|
Token::PowerOf => return Some(impl_op!(from Decimal => power($xx, $yy))),
|
||||||
_ => ()
|
_ => ()
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(feature = "unchecked")]
|
#[cfg(feature = "unchecked")]
|
||||||
@ -322,17 +322,17 @@ pub fn get_builtin_binary_op_fn(op: &Token, x: &Dynamic, y: &Dynamic) -> Option<
|
|||||||
Token::Divide => return Some(impl_op!(from Decimal => $xx / $yy)),
|
Token::Divide => return Some(impl_op!(from Decimal => $xx / $yy)),
|
||||||
Token::Modulo => return Some(impl_op!(from Decimal => $xx % $yy)),
|
Token::Modulo => return Some(impl_op!(from Decimal => $xx % $yy)),
|
||||||
Token::PowerOf => return Some(impl_op!(from Decimal => $xx.powd($yy))),
|
Token::PowerOf => return Some(impl_op!(from Decimal => $xx.powd($yy))),
|
||||||
_ => ()
|
_ => ()
|
||||||
}
|
}
|
||||||
|
|
||||||
return match op {
|
return match op {
|
||||||
Token::EqualsTo => Some(impl_op!(from Decimal => $xx == $yy)),
|
Token::EqualsTo => Some(impl_op!(from Decimal => $xx == $yy)),
|
||||||
Token::NotEqualsTo => Some(impl_op!(from Decimal => $xx != $yy)),
|
Token::NotEqualsTo => Some(impl_op!(from Decimal => $xx != $yy)),
|
||||||
Token::GreaterThan => Some(impl_op!(from Decimal => $xx > $yy)),
|
Token::GreaterThan => Some(impl_op!(from Decimal => $xx > $yy)),
|
||||||
Token::GreaterThanEqualsTo => Some(impl_op!(from Decimal => $xx >= $yy)),
|
Token::GreaterThanEqualsTo => Some(impl_op!(from Decimal => $xx >= $yy)),
|
||||||
Token::LessThan => Some(impl_op!(from Decimal => $xx < $yy)),
|
Token::LessThan => Some(impl_op!(from Decimal => $xx < $yy)),
|
||||||
Token::LessThanEqualsTo => Some(impl_op!(from Decimal => $xx <= $yy)),
|
Token::LessThanEqualsTo => Some(impl_op!(from Decimal => $xx <= $yy)),
|
||||||
_ => None
|
_ => None
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -680,7 +680,7 @@ pub fn get_builtin_op_assignment_fn(op: &Token, x: &Dynamic, y: &Dynamic) -> Opt
|
|||||||
Token::DivideAssign => Some(impl_op!($x /= $yy)),
|
Token::DivideAssign => Some(impl_op!($x /= $yy)),
|
||||||
Token::ModuloAssign => Some(impl_op!($x %= $yy)),
|
Token::ModuloAssign => Some(impl_op!($x %= $yy)),
|
||||||
Token::PowerOfAssign => Some(impl_op!($x => $xx.powf($yy as $x))),
|
Token::PowerOfAssign => Some(impl_op!($x => $xx.powf($yy as $x))),
|
||||||
_ => None,
|
_ => None,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -707,7 +707,7 @@ pub fn get_builtin_op_assignment_fn(op: &Token, x: &Dynamic, y: &Dynamic) -> Opt
|
|||||||
Token::DivideAssign => Some(impl_op!(from $x => divide($xx, $yy))),
|
Token::DivideAssign => Some(impl_op!(from $x => divide($xx, $yy))),
|
||||||
Token::ModuloAssign => Some(impl_op!(from $x => modulo($xx, $yy))),
|
Token::ModuloAssign => Some(impl_op!(from $x => modulo($xx, $yy))),
|
||||||
Token::PowerOfAssign => Some(impl_op!(from $x => power($xx, $yy))),
|
Token::PowerOfAssign => Some(impl_op!(from $x => power($xx, $yy))),
|
||||||
_ => None,
|
_ => None,
|
||||||
};
|
};
|
||||||
|
|
||||||
#[cfg(feature = "unchecked")]
|
#[cfg(feature = "unchecked")]
|
||||||
@ -715,13 +715,13 @@ pub fn get_builtin_op_assignment_fn(op: &Token, x: &Dynamic, y: &Dynamic) -> Opt
|
|||||||
|
|
||||||
#[cfg(feature = "unchecked")]
|
#[cfg(feature = "unchecked")]
|
||||||
return match op {
|
return match op {
|
||||||
Token::PlusAssign => Some(impl_op!(from $x += $yy)),
|
Token::PlusAssign => Some(impl_op!(from $x += $yy)),
|
||||||
Token::MinusAssign => Some(impl_op!(from $x -= $yy)),
|
Token::MinusAssign => Some(impl_op!(from $x -= $yy)),
|
||||||
Token::MultiplyAssign => Some(impl_op!(from $x *= $yy)),
|
Token::MultiplyAssign => Some(impl_op!(from $x *= $yy)),
|
||||||
Token::DivideAssign => Some(impl_op!(from $x /= $yy)),
|
Token::DivideAssign => Some(impl_op!(from $x /= $yy)),
|
||||||
Token::ModuloAssign => Some(impl_op!(from $x %= $yy)),
|
Token::ModuloAssign => Some(impl_op!(from $x %= $yy)),
|
||||||
Token::PowerOfAssign => Some(impl_op!(from $x => $xx.powd($yy))),
|
Token::PowerOfAssign => Some(impl_op!(from $x => $xx.powd($yy))),
|
||||||
_ => None,
|
_ => None,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -254,7 +254,7 @@ fn optimize_stmt_block(
|
|||||||
});
|
});
|
||||||
|
|
||||||
// Optimize each statement in the block
|
// Optimize each statement in the block
|
||||||
for stmt in statements.iter_mut() {
|
for stmt in &mut statements {
|
||||||
match stmt {
|
match stmt {
|
||||||
Stmt::Var(x, options, ..) => {
|
Stmt::Var(x, options, ..) => {
|
||||||
if options.contains(ASTFlags::CONSTANT) {
|
if options.contains(ASTFlags::CONSTANT) {
|
||||||
@ -688,7 +688,7 @@ fn optimize_stmt(stmt: &mut Stmt, state: &mut OptimizerState, preserve_result: b
|
|||||||
optimize_expr(match_expr, state, false);
|
optimize_expr(match_expr, state, false);
|
||||||
|
|
||||||
// Optimize blocks
|
// Optimize blocks
|
||||||
for b in expressions.iter_mut() {
|
for b in expressions.as_mut() {
|
||||||
optimize_expr(&mut b.condition, state, false);
|
optimize_expr(&mut b.condition, state, false);
|
||||||
optimize_expr(&mut b.expr, state, false);
|
optimize_expr(&mut b.expr, state, false);
|
||||||
|
|
||||||
@ -1204,7 +1204,7 @@ fn optimize_expr(expr: &mut Expr, state: &mut OptimizerState, _chaining: bool) {
|
|||||||
x.args.iter_mut().for_each(|a| optimize_expr(a, state, false));
|
x.args.iter_mut().for_each(|a| optimize_expr(a, state, false));
|
||||||
|
|
||||||
// Move constant arguments
|
// Move constant arguments
|
||||||
for arg in x.args.iter_mut() {
|
for arg in &mut x.args {
|
||||||
match arg {
|
match arg {
|
||||||
Expr::DynamicConstant(..) | Expr::Unit(..)
|
Expr::DynamicConstant(..) | Expr::Unit(..)
|
||||||
| Expr::StringConstant(..) | Expr::CharConstant(..)
|
| Expr::StringConstant(..) | Expr::CharConstant(..)
|
||||||
@ -1254,7 +1254,7 @@ fn optimize_expr(expr: &mut Expr, state: &mut OptimizerState, _chaining: bool) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// id(args ..) or xxx.id(args ..) -> optimize function call arguments
|
// id(args ..) or xxx.id(args ..) -> optimize function call arguments
|
||||||
Expr::FnCall(x, ..) | Expr::MethodCall(x, ..) => for arg in x.args.iter_mut() {
|
Expr::FnCall(x, ..) | Expr::MethodCall(x, ..) => for arg in &mut x.args {
|
||||||
optimize_expr(arg, state, false);
|
optimize_expr(arg, state, false);
|
||||||
|
|
||||||
// Move constant arguments
|
// Move constant arguments
|
||||||
|
@ -834,7 +834,7 @@ pub mod array_functions {
|
|||||||
return Ok(false);
|
return Ok(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
for item in array.iter_mut() {
|
for item in array {
|
||||||
if ctx
|
if ctx
|
||||||
.call_fn_raw(OP_EQUALS, true, false, &mut [item, &mut value.clone()])
|
.call_fn_raw(OP_EQUALS, true, false, &mut [item, &mut value.clone()])
|
||||||
.or_else(|err| match *err {
|
.or_else(|err| match *err {
|
||||||
|
@ -928,7 +928,7 @@ impl Dynamic {
|
|||||||
#[cfg(not(feature = "no_index"))]
|
#[cfg(not(feature = "no_index"))]
|
||||||
Union::Array(ref mut a, _, ref mut access) => {
|
Union::Array(ref mut a, _, ref mut access) => {
|
||||||
*access = typ;
|
*access = typ;
|
||||||
for v in a.iter_mut() {
|
for v in a.as_mut() {
|
||||||
v.set_access_mode(typ);
|
v.set_access_mode(typ);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user