Merge branch 'master' into plugins

This commit is contained in:
Stephen Chung
2020-07-29 14:17:40 +08:00
11 changed files with 192 additions and 108 deletions

View File

@@ -931,8 +931,8 @@ pub fn run_builtin_binary_op(
}
if args_type == TypeId::of::<INT>() {
let x = *x.downcast_ref::<INT>().unwrap();
let y = *y.downcast_ref::<INT>().unwrap();
let x = x.clone().cast::<INT>();
let y = y.clone().cast::<INT>();
#[cfg(not(feature = "unchecked"))]
match op {
@@ -973,8 +973,8 @@ pub fn run_builtin_binary_op(
_ => (),
}
} else if args_type == TypeId::of::<bool>() {
let x = *x.downcast_ref::<bool>().unwrap();
let y = *y.downcast_ref::<bool>().unwrap();
let x = x.clone().cast::<bool>();
let y = y.clone().cast::<bool>();
match op {
"&" => return Ok(Some((x && y).into())),
@@ -999,8 +999,8 @@ pub fn run_builtin_binary_op(
_ => (),
}
} else if args_type == TypeId::of::<char>() {
let x = *x.downcast_ref::<char>().unwrap();
let y = *y.downcast_ref::<char>().unwrap();
let x = x.clone().cast::<char>();
let y = y.clone().cast::<char>();
match op {
"==" => return Ok(Some((x == y).into())),
@@ -1021,8 +1021,8 @@ pub fn run_builtin_binary_op(
#[cfg(not(feature = "no_float"))]
if args_type == TypeId::of::<FLOAT>() {
let x = *x.downcast_ref::<FLOAT>().unwrap();
let y = *y.downcast_ref::<FLOAT>().unwrap();
let x = x.clone().cast::<FLOAT>();
let y = y.clone().cast::<FLOAT>();
match op {
"+" => return Ok(Some((x + y).into())),
@@ -1060,7 +1060,7 @@ pub fn run_builtin_op_assignment(
if args_type == TypeId::of::<INT>() {
let x = x.downcast_mut::<INT>().unwrap();
let y = *y.downcast_ref::<INT>().unwrap();
let y = y.clone().cast::<INT>();
#[cfg(not(feature = "unchecked"))]
match op {
@@ -1096,7 +1096,7 @@ pub fn run_builtin_op_assignment(
}
} else if args_type == TypeId::of::<bool>() {
let x = x.downcast_mut::<bool>().unwrap();
let y = *y.downcast_ref::<bool>().unwrap();
let y = y.clone().cast::<bool>();
match op {
"&=" => return Ok(Some(*x = *x && y)),
@@ -1116,7 +1116,7 @@ pub fn run_builtin_op_assignment(
#[cfg(not(feature = "no_float"))]
if args_type == TypeId::of::<FLOAT>() {
let x = x.downcast_mut::<FLOAT>().unwrap();
let y = *y.downcast_ref::<FLOAT>().unwrap();
let y = y.clone().cast::<FLOAT>();
match op {
"+=" => return Ok(Some(*x += y)),