avm2: Add make_error_2008() function and use it
This commit is contained in:
parent
24dfb82d12
commit
4a50f9f31e
|
@ -133,6 +133,23 @@ pub fn make_reference_error<'gc>(
|
|||
}
|
||||
}
|
||||
|
||||
#[inline(never)]
|
||||
#[cold]
|
||||
pub fn make_error_2008<'gc>(activation: &mut Activation<'_, 'gc>, param_name: &str) -> Error<'gc> {
|
||||
let err = argument_error(
|
||||
activation,
|
||||
&format!(
|
||||
"Error #2008: Parameter {} must be one of the accepted values.",
|
||||
param_name
|
||||
),
|
||||
2008,
|
||||
);
|
||||
match err {
|
||||
Ok(err) => Error::AvmError(err),
|
||||
Err(err) => err,
|
||||
}
|
||||
}
|
||||
|
||||
#[inline(never)]
|
||||
#[cold]
|
||||
pub fn range_error<'gc>(
|
||||
|
|
|
@ -5,7 +5,7 @@ use swf::{
|
|||
Fixed8, GlowFilter, GlowFilterFlags, GradientFilter, GradientFilterFlags, GradientRecord,
|
||||
};
|
||||
|
||||
use crate::avm2::error::{argument_error, type_error};
|
||||
use crate::avm2::error::{make_error_2008, type_error};
|
||||
use crate::avm2::{Activation, ArrayObject, ClassObject, Error, Object, TObject, Value};
|
||||
|
||||
pub trait FilterAvm2Ext {
|
||||
|
@ -77,7 +77,7 @@ impl FilterAvm2Ext for Filter {
|
|||
Err(Error::AvmError(type_error(
|
||||
activation,
|
||||
&format!(
|
||||
"Type Coercion failed: cannot convert {object:?} to flash.filters.BitmapFilter."
|
||||
"Error #1034: Type Coercion failed: cannot convert {object:?} to flash.filters.BitmapFilter."
|
||||
),
|
||||
1034,
|
||||
)?))
|
||||
|
@ -396,11 +396,7 @@ fn avm2_to_displacement_map_filter<'gc>(
|
|||
} else if &mode == b"wrap" {
|
||||
DisplacementMapFilterMode::Wrap
|
||||
} else {
|
||||
return Err(Error::AvmError(argument_error(
|
||||
activation,
|
||||
"Parameter mode must be one of the accepted values.",
|
||||
2008,
|
||||
)?));
|
||||
return Err(make_error_2008(activation, "mode"));
|
||||
}
|
||||
} else {
|
||||
DisplacementMapFilterMode::Wrap
|
||||
|
@ -420,7 +416,7 @@ fn avm2_to_displacement_map_filter<'gc>(
|
|||
return Err(Error::AvmError(type_error(
|
||||
activation,
|
||||
&format!(
|
||||
"Type Coercion failed: cannot convert {bitmap:?} to flash.display.BitmapData."
|
||||
"Error #1034: Type Coercion failed: cannot convert {bitmap:?} to flash.display.BitmapData."
|
||||
),
|
||||
1034,
|
||||
)?));
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
//! `flash.display.BitmapData` builtin/prototype
|
||||
|
||||
use crate::avm2::activation::Activation;
|
||||
use crate::avm2::error::argument_error;
|
||||
use crate::avm2::error::{argument_error, make_error_2008};
|
||||
use crate::avm2::filters::FilterAvm2Ext;
|
||||
use crate::avm2::object::{BitmapDataObject, ByteArrayObject, Object, TObject, VectorObject};
|
||||
use crate::avm2::value::Value;
|
||||
|
@ -812,7 +812,7 @@ pub fn draw<'gc>(
|
|||
blend_mode = mode;
|
||||
} else {
|
||||
tracing::error!("Unknown blend mode {:?}", mode);
|
||||
return Err("ArgumentError: Error #2008: Parameter blendMode must be one of the accepted values.".into());
|
||||
return Err(make_error_2008(activation, "blendMode"));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -891,7 +891,7 @@ pub fn draw_with_quality<'gc>(
|
|||
blend_mode = mode;
|
||||
} else {
|
||||
tracing::error!("Unknown blend mode {:?}", mode);
|
||||
return Err("ArgumentError: Error #2008: Parameter blendMode must be one of the accepted values.".into());
|
||||
return Err(make_error_2008(activation, "blendMode"));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
//! `flash.display.DisplayObject` builtin/prototype
|
||||
|
||||
use crate::avm2::activation::Activation;
|
||||
use crate::avm2::error::make_error_2008;
|
||||
use crate::avm2::filters::FilterAvm2Ext;
|
||||
use crate::avm2::object::{Object, TObject};
|
||||
use crate::avm2::value::Value;
|
||||
|
@ -765,7 +766,7 @@ pub fn set_blend_mode<'gc>(
|
|||
dobj.set_blend_mode(activation.context.gc_context, mode);
|
||||
} else {
|
||||
tracing::error!("Unknown blend mode {}", mode);
|
||||
return Err("ArgumentError: Error #2008: Parameter blendMode must be one of the accepted values.".into());
|
||||
return Err(make_error_2008(activation, "blendMode"));
|
||||
}
|
||||
}
|
||||
Ok(Value::Undefined)
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
//! `flash.display.Graphics` builtin/prototype
|
||||
|
||||
use crate::avm2::activation::Activation;
|
||||
use crate::avm2::error::argument_error;
|
||||
use crate::avm2::error::make_error_2008;
|
||||
use crate::avm2::globals::flash::geom::transform::object_to_matrix;
|
||||
use crate::avm2::object::{Object, TObject, VectorObject};
|
||||
use crate::avm2::parameters::ParametersExt;
|
||||
|
@ -191,11 +191,7 @@ fn parse_gradient_type<'gc>(
|
|||
} else if &gradient_type == b"radial" {
|
||||
Ok(GradientType::Radial)
|
||||
} else {
|
||||
Err(Error::AvmError(argument_error(
|
||||
activation,
|
||||
"Parameter type must be one of the accepted values.",
|
||||
2008,
|
||||
)?))
|
||||
Err(make_error_2008(activation, "type"))
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
//! `flash.display.Stage` builtin/prototype
|
||||
|
||||
use crate::avm2::activation::Activation;
|
||||
use crate::avm2::error::argument_error;
|
||||
use crate::avm2::error::make_error_2008;
|
||||
use crate::avm2::object::{Object, TObject};
|
||||
use crate::avm2::parameters::ParametersExt;
|
||||
use crate::avm2::value::Value;
|
||||
|
@ -176,11 +176,7 @@ pub fn set_display_state<'gc>(
|
|||
.stage
|
||||
.set_display_state(&mut activation.context, display_state);
|
||||
} else {
|
||||
return Err(Error::AvmError(argument_error(
|
||||
activation,
|
||||
"Error #2008: Parameter displayState must be one of the accepted values.",
|
||||
2008,
|
||||
)?));
|
||||
return Err(make_error_2008(activation, "displayState"));
|
||||
}
|
||||
Ok(Value::Undefined)
|
||||
}
|
||||
|
@ -290,11 +286,7 @@ pub fn set_scale_mode<'gc>(
|
|||
.stage
|
||||
.set_scale_mode(&mut activation.context, scale_mode);
|
||||
} else {
|
||||
return Err(Error::AvmError(argument_error(
|
||||
activation,
|
||||
"Error #2008: Parameter scaleMode must be one of the accepted values.",
|
||||
2008,
|
||||
)?));
|
||||
return Err(make_error_2008(activation, "scaleMode"));
|
||||
}
|
||||
Ok(Value::Undefined)
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
use crate::avm2::error::argument_error;
|
||||
use crate::avm2::error::make_error_2008;
|
||||
use crate::avm2::parameters::ParametersExt;
|
||||
use crate::avm2::Activation;
|
||||
use crate::avm2::TObject;
|
||||
|
@ -618,27 +618,11 @@ pub fn set_sampler_state_at<'gc>(
|
|||
let filter = args[2].coerce_to_string(activation)?;
|
||||
let mip_filter = args[3].coerce_to_string(activation)?;
|
||||
|
||||
let wrap = Context3DWrapMode::from_wstr(&wrap).ok_or_else(|| {
|
||||
Error::AvmError(
|
||||
argument_error(
|
||||
activation,
|
||||
"Error #2008: Parameter wrap must be one of the accepted values.",
|
||||
2008,
|
||||
)
|
||||
.expect("Failed to construct error"),
|
||||
)
|
||||
})?;
|
||||
let wrap = Context3DWrapMode::from_wstr(&wrap)
|
||||
.ok_or_else(|| make_error_2008(activation, "wrap"))?;
|
||||
|
||||
let filter = Context3DTextureFilter::from_wstr(&filter).ok_or_else(|| {
|
||||
Error::AvmError(
|
||||
argument_error(
|
||||
activation,
|
||||
"Error #2008: Parameter filter must be one of the accepted values.",
|
||||
2008,
|
||||
)
|
||||
.expect("Failed to construct error"),
|
||||
)
|
||||
})?;
|
||||
let filter = Context3DTextureFilter::from_wstr(&filter)
|
||||
.ok_or_else(|| make_error_2008(activation, "filter"))?;
|
||||
|
||||
if matches!(
|
||||
filter,
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
use crate::avm2::activation::Activation;
|
||||
use crate::avm2::error::make_error_2008;
|
||||
use crate::avm2::object::{ArrayObject, Object, TObject};
|
||||
use crate::avm2::value::Value;
|
||||
use crate::avm2::Error;
|
||||
|
@ -54,10 +55,7 @@ pub fn set_align<'gc>(
|
|||
} else if value == WStr::from_units(b"justify") {
|
||||
Some(swf::TextAlign::Justify)
|
||||
} else {
|
||||
return Err(
|
||||
"ArgumentError: Error #2008: Parameter align must be one of the accepted values."
|
||||
.into(),
|
||||
);
|
||||
return Err(make_error_2008(activation, "align"));
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue