Skip to content

Commit 455fb4d

Browse files
avm2: Add make_error_1050 function and use it
1 parent aa373d4 commit 455fb4d

File tree

2 files changed

+19
-15
lines changed

2 files changed

+19
-15
lines changed

core/src/avm2/error.rs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -484,6 +484,22 @@ pub fn make_error_1047<'gc>(activation: &mut Activation<'_, 'gc>) -> Error<'gc>
484484
}
485485
}
486486

487+
#[inline(never)]
488+
#[cold]
489+
pub fn make_error_1050<'gc>(activation: &mut Activation<'_, 'gc>, value: Value<'gc>) -> Error<'gc> {
490+
let class_name = value.instance_of_class_name(activation);
491+
492+
let err = type_error(
493+
activation,
494+
&format!("Error #1050: Cannot convert {class_name} to primitive."),
495+
1050,
496+
);
497+
match err {
498+
Ok(err) => Error::avm_error(err),
499+
Err(err) => err,
500+
}
501+
}
502+
487503
#[inline(never)]
488504
#[cold]
489505
pub fn make_error_1051<'gc>(activation: &mut Activation<'_, 'gc>) -> Error<'gc> {

core/src/avm2/value.rs

Lines changed: 3 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
33
use crate::avm2::activation::Activation;
44
use crate::avm2::error::{self};
5-
use crate::avm2::error::{make_error_1006, make_error_1034, type_error};
5+
use crate::avm2::error::{make_error_1006, make_error_1034, make_error_1050, type_error};
66
use crate::avm2::function::{exec, FunctionArgs};
77
use crate::avm2::object::{NamespaceObject, Object, TObject};
88
use crate::avm2::property::Property;
@@ -695,13 +695,7 @@ impl<'gc> Value<'gc> {
695695
return Ok(prim);
696696
}
697697

698-
let class_name = self.instance_of_class_name(activation);
699-
700-
Err(Error::avm_error(type_error(
701-
activation,
702-
&format!("Error #1050: Cannot convert {class_name} to primitive."),
703-
1050,
704-
)?))
698+
Err(make_error_1050(activation, *self))
705699
}
706700
Value::Object(_) if hint == Hint::Number => {
707701
let prim =
@@ -719,13 +713,7 @@ impl<'gc> Value<'gc> {
719713
return Ok(prim);
720714
}
721715

722-
let class_name = self.instance_of_class_name(activation);
723-
724-
Err(Error::avm_error(type_error(
725-
activation,
726-
&format!("Error #1050: Cannot convert {class_name} to primitive."),
727-
1050,
728-
)?))
716+
Err(make_error_1050(activation, *self))
729717
}
730718
_ => Ok(*self),
731719
}

0 commit comments

Comments
 (0)