Skip to content

Commit 9f6a276

Browse files
avm2: Rename make_mismatch_error to make_error_1063
Also make it consistent with the rest of the error creation functions
1 parent 11fa149 commit 9f6a276

File tree

3 files changed

+37
-51
lines changed

3 files changed

+37
-51
lines changed

core/src/avm2/activation.rs

Lines changed: 5 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ use crate::avm2::class::Class;
55
use crate::avm2::domain::Domain;
66
use crate::avm2::e4x::{escape_attribute_value, escape_element_value};
77
use crate::avm2::error::{
8-
make_error_1040, make_error_1041, make_error_1065, make_error_1127, make_error_1506,
9-
make_null_or_undefined_error, type_error, verify_error,
8+
make_error_1040, make_error_1041, make_error_1063, make_error_1065, make_error_1127,
9+
make_error_1506, make_null_or_undefined_error, type_error, verify_error,
1010
};
1111
use crate::avm2::function::FunctionArgs;
1212
use crate::avm2::method::{Method, NativeMethodImpl, ResolvedParamConfig};
@@ -32,8 +32,6 @@ use std::cmp::{min, Ordering};
3232
use std::sync::Arc;
3333
use swf::avm2::types::MethodFlags as AbcMethodFlags;
3434

35-
use super::error::make_mismatch_error;
36-
3735
/// Represents a single activation of a given AVM2 function or keyframe.
3836
pub struct Activation<'a, 'gc: 'a> {
3937
/// The number of locals this method uses.
@@ -214,11 +212,7 @@ impl<'a, 'gc> Activation<'a, 'gc> {
214212
let arg = if let Some(default_value) = &param_config.default_value {
215213
*default_value
216214
} else {
217-
return Err(Error::avm_error(make_mismatch_error(
218-
self,
219-
method,
220-
user_arguments.len(),
221-
)?));
215+
return Err(make_error_1063(self, method, user_arguments.len()));
222216
};
223217

224218
let coerced_arg = if let Some(param_class) = param_config.param_type {
@@ -344,11 +338,7 @@ impl<'a, 'gc> Activation<'a, 'gc> {
344338
let signature = method.resolved_param_config();
345339

346340
if user_arguments.len() > signature.len() && !has_rest_or_args && !method.is_unchecked() {
347-
return Err(Error::avm_error(make_mismatch_error(
348-
self,
349-
method,
350-
user_arguments.len(),
351-
)?));
341+
return Err(make_error_1063(self, method, user_arguments.len()));
352342
}
353343

354344
// Create locals
@@ -377,11 +367,7 @@ impl<'a, 'gc> Activation<'a, 'gc> {
377367
} else if method.is_unchecked() {
378368
Value::Undefined
379369
} else {
380-
return Err(Error::avm_error(make_mismatch_error(
381-
self,
382-
method,
383-
user_arguments.len(),
384-
)?));
370+
return Err(make_error_1063(self, method, user_arguments.len()));
385371
};
386372

387373
let coerced_arg = if let Some(param_class) = param_config.param_type {

core/src/avm2/error.rs

Lines changed: 30 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -554,6 +554,36 @@ pub fn make_error_1058<'gc>(activation: &mut Activation<'_, 'gc>) -> Error<'gc>
554554
}
555555
}
556556

557+
#[inline(never)]
558+
#[cold]
559+
pub fn make_error_1063<'gc>(
560+
activation: &mut Activation<'_, 'gc>,
561+
method: Method<'gc>,
562+
passed_arg_count: usize,
563+
) -> Error<'gc> {
564+
let expected_num_params = method
565+
.signature()
566+
.iter()
567+
.filter(|param| param.default_value.is_none())
568+
.count();
569+
570+
let mut function_name = WString::new();
571+
572+
display_function(&mut function_name, method);
573+
574+
let err = argument_error(
575+
activation,
576+
&format!(
577+
"Error #1063: Argument count mismatch on {function_name}. Expected {expected_num_params}, got {passed_arg_count}.",
578+
),
579+
1063,
580+
);
581+
match err {
582+
Ok(err) => Error::avm_error(err),
583+
Err(err) => err,
584+
}
585+
}
586+
557587
#[inline(never)]
558588
#[cold]
559589
pub fn make_error_1065<'gc>(
@@ -1260,32 +1290,6 @@ pub fn error<'gc>(
12601290
error_constructor(activation, class, message, code)
12611291
}
12621292

1263-
#[inline(never)]
1264-
#[cold]
1265-
pub fn make_mismatch_error<'gc>(
1266-
activation: &mut Activation<'_, 'gc>,
1267-
method: Method<'gc>,
1268-
passed_arg_count: usize,
1269-
) -> Result<Value<'gc>, Error<'gc>> {
1270-
let expected_num_params = method
1271-
.signature()
1272-
.iter()
1273-
.filter(|param| param.default_value.is_none())
1274-
.count();
1275-
1276-
let mut function_name = WString::new();
1277-
1278-
display_function(&mut function_name, method);
1279-
1280-
return Err(Error::avm_error(argument_error(
1281-
activation,
1282-
&format!(
1283-
"Error #1063: Argument count mismatch on {function_name}. Expected {expected_num_params}, got {passed_arg_count}.",
1284-
),
1285-
1063,
1286-
)?));
1287-
}
1288-
12891293
fn error_constructor<'gc>(
12901294
activation: &mut Activation<'_, 'gc>,
12911295
class: ClassObject<'gc>,

core/src/avm2/function.rs

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use crate::avm2::activation::Activation;
2-
use crate::avm2::error::{make_mismatch_error, Error};
2+
use crate::avm2::error::{make_error_1063, Error};
33
use crate::avm2::method::{Method, MethodKind, ParamConfig};
44
use crate::avm2::object::{ClassObject, FunctionObject};
55
use crate::avm2::scope::ScopeChain;
@@ -217,11 +217,7 @@ pub fn exec<'gc>(
217217
// Check for too many arguments
218218
if arguments.len() > signature.len() && !method.is_variadic() && !method.is_unchecked()
219219
{
220-
return Err(Error::avm_error(make_mismatch_error(
221-
&mut activation,
222-
method,
223-
arguments.len(),
224-
)?));
220+
return Err(make_error_1063(&mut activation, method, arguments.len()));
225221
}
226222

227223
let arguments = activation.resolve_parameters(method, arguments, signature)?;

0 commit comments

Comments
 (0)