avm2: Enable Vector.<ObjectSubclass> serialization tests

This also fixes a minor bug (we should always deserialize
to a `Vector.<Object>`, not a `Vector.<*>`)
This commit is contained in:
Aaron Hill 2023-07-29 14:35:25 -04:00
parent 86ba4fef9b
commit 4406a70fc9
4 changed files with 15 additions and 5 deletions

View File

@ -287,7 +287,7 @@ pub fn deserialize_value<'gc>(
.map(|v| deserialize_value(activation, v))
.collect::<Result<Vec<_>, _>>()?,
*is_fixed,
None,
Some(activation.avm2().classes().object),
);
VectorObject::from_vector(storage, activation)?.into()
}

View File

@ -13,9 +13,7 @@
roundtrip(Vector.<Number>([-0.0, 0.0, -1, Infinity, 5, NaN]));
// FIXME - enable these once Ruffle correctly handles Vector.<Object>
/*roundtrip(Vector.<Object>([new Object(), 30, null, undefined, true, "Hello"]));
roundtrip(Vector.<Object>([new Object(), 30, null, undefined, true, "Hello"]));
roundtrip(Vector.<*>([new Object(), 30, null, undefined, true, "Hello"]));
@ -25,7 +23,7 @@
roundtrip(vec);
roundtrip(Vector.<String>(["First string", "Second string"])); */
roundtrip(Vector.<String>(["First string", "Second string"]));
}
private function fixed(vec: Object): Object {

View File

@ -16,3 +16,15 @@ Deserialized: [-100] fixed: true class: __AS3__.vec::Vector.<int>
Original: [0,0,-1,Infinity,5,NaN] fixed: false class: __AS3__.vec::Vector.<Number>
Serialized: 15,13,0,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,240,0,0,0,0,0,0,127,240,0,0,0,0,0,0,64,20,0,0,0,0,0,0,255,248,0,0,0,0,0,0
Deserialized: [0,0,-1,Infinity,5,NaN] fixed: false class: __AS3__.vec::Vector.<Number>
Original: [[object Object],30,null,null,true,Hello] fixed: false class: __AS3__.vec::Vector.<Object>
Serialized: 16,13,0,1,10,11,1,1,4,30,1,1,3,6,11,72,101,108,108,111
Deserialized: [[object Object],30,null,null,true,Hello] fixed: false class: __AS3__.vec::Vector.<Object>
Original: [[object Object],30,null,null,true,Hello] fixed: false class: __AS3__.vec::Vector.<*>
Serialized: 16,13,0,1,10,11,1,1,4,30,1,1,3,6,11,72,101,108,108,111
Deserialized: [[object Object],30,null,null,true,Hello] fixed: false class: __AS3__.vec::Vector.<Object>
Original: [One,Two,Three,Four] fixed: false class: __AS3__.vec::Vector.<__AS3__.vec::Vector.<String>>
Serialized: 16,5,0,1,16,5,0,1,6,7,79,110,101,6,7,84,119,111,16,5,0,1,6,11,84,104,114,101,101,6,9,70,111,117,114
Deserialized: [One,Two,Three,Four] fixed: false class: __AS3__.vec::Vector.<Object>
Original: [First string,Second string] fixed: false class: __AS3__.vec::Vector.<String>
Serialized: 16,5,0,1,6,25,70,105,114,115,116,32,115,116,114,105,110,103,6,27,83,101,99,111,110,100,32,115,116,114,105,110,103
Deserialized: [First string,Second string] fixed: false class: __AS3__.vec::Vector.<Object>