From 85db3823b45ea8a562a8ebfd18f8f3990d7b9736 Mon Sep 17 00:00:00 2001 From: HalidOdat Date: Sun, 9 Aug 2020 05:54:30 +0200 Subject: [PATCH 1/2] Removed Value::as_num_to_pow() --- boa/src/builtins/value/mod.rs | 8 -------- 1 file changed, 8 deletions(-) diff --git a/boa/src/builtins/value/mod.rs b/boa/src/builtins/value/mod.rs index 494d4b7aeb6..498b019bbc3 100644 --- a/boa/src/builtins/value/mod.rs +++ b/boa/src/builtins/value/mod.rs @@ -155,14 +155,6 @@ impl Value { Self::Symbol(RcSymbol::from(symbol)) } - /// Helper function to convert the `Value` to a number and compute its power. - pub fn as_num_to_power(&self, other: Self) -> Self { - match (self, other) { - (Self::BigInt(ref a), Self::BigInt(ref b)) => Self::bigint(a.as_inner().clone().pow(b)), - (a, b) => Self::rational(a.to_number().powf(b.to_number())), - } - } - /// Returns a new empty object pub fn new_object(global: Option<&Value>) -> Self { let _timer = BoaProfiler::global().start_event("new_object", "value"); From 5793a2392cbe91f732d4464b2d71301bdc777d2a Mon Sep 17 00:00:00 2001 From: HalidOdat Date: Sun, 9 Aug 2020 06:06:32 +0200 Subject: [PATCH 2/2] Added some pow operator tests --- boa/src/builtins/value/tests.rs | 38 +++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/boa/src/builtins/value/tests.rs b/boa/src/builtins/value/tests.rs index 8a55700d21c..dbc65962335 100644 --- a/boa/src/builtins/value/tests.rs +++ b/boa/src/builtins/value/tests.rs @@ -358,6 +358,44 @@ fn bitand_rational_and_rational() { assert_eq!(value, 255); } +#[test] +fn pow_number_and_number() { + let realm = Realm::create(); + let mut engine = Interpreter::new(realm); + + let value = forward_val(&mut engine, "3 ** 3").unwrap(); + let value = engine.to_number(&value).unwrap(); + assert_eq!(value, 27.0); +} + +#[test] +fn pow_number_and_string() { + let realm = Realm::create(); + let mut engine = Interpreter::new(realm); + + let value = forward_val(&mut engine, "3 ** 'Hello'").unwrap(); + let value = engine.to_number(&value).unwrap(); + assert!(value.is_nan()); +} + +#[test] +fn assign_pow_number_and_string() { + let realm = Realm::create(); + let mut engine = Interpreter::new(realm); + + let value = forward_val( + &mut engine, + r" + let a = 3; + a **= 'Hello' + a + ", + ) + .unwrap(); + let value = engine.to_number(&value).unwrap(); + assert!(value.is_nan()); +} + #[test] fn display_string() { let s = String::from("Hello");