diff --git a/core/src/avm2/error.rs b/core/src/avm2/error.rs index 07a75f6ff..ea7c29a82 100644 --- a/core/src/avm2/error.rs +++ b/core/src/avm2/error.rs @@ -200,6 +200,20 @@ pub fn make_error_1087<'gc>(activation: &mut Activation<'_, 'gc>) -> Error<'gc> } } +#[inline(never)] +#[cold] +pub fn make_error_1089<'gc>(activation: &mut Activation<'_, 'gc>) -> Error<'gc> { + let err = type_error( + activation, + "Error #1089: Assignment to lists with more than one item is not supported.", + 1089, + ); + match err { + Ok(err) => Error::AvmError(err), + Err(err) => err, + } +} + #[inline(never)] #[cold] pub fn make_error_1118<'gc>(activation: &mut Activation<'_, 'gc>) -> Error<'gc> { diff --git a/core/src/avm2/object/xml_list_object.rs b/core/src/avm2/object/xml_list_object.rs index 93da55c53..c4961bbb4 100644 --- a/core/src/avm2/object/xml_list_object.rs +++ b/core/src/avm2/object/xml_list_object.rs @@ -1,5 +1,6 @@ use crate::avm2::activation::Activation; use crate::avm2::e4x::{E4XNode, E4XNodeKind}; +use crate::avm2::error::make_error_1089; use crate::avm2::object::script_object::ScriptObjectData; use crate::avm2::object::{Object, ObjectPtr, TObject}; use crate::avm2::value::Value; @@ -417,7 +418,7 @@ impl<'gc> TObject<'gc> for XmlListObject<'gc> { } // 4. Return - Ok(()) + Err(make_error_1089(activation)) } fn get_next_enumerant( diff --git a/tests/tests/swfs/from_avmplus/as3/RuntimeErrors/Error1089XmlAssignToMoreThanOneItemList/test.toml b/tests/tests/swfs/from_avmplus/as3/RuntimeErrors/Error1089XmlAssignToMoreThanOneItemList/test.toml index 29f3cef79..cf6123969 100644 --- a/tests/tests/swfs/from_avmplus/as3/RuntimeErrors/Error1089XmlAssignToMoreThanOneItemList/test.toml +++ b/tests/tests/swfs/from_avmplus/as3/RuntimeErrors/Error1089XmlAssignToMoreThanOneItemList/test.toml @@ -1,2 +1 @@ num_ticks = 1 -known_failure = true