diff --git a/core/src/avm2/e4x.rs b/core/src/avm2/e4x.rs index fcd6cf805..d02879ccc 100644 --- a/core/src/avm2/e4x.rs +++ b/core/src/avm2/e4x.rs @@ -649,7 +649,9 @@ impl<'gc> E4XNode<'gc> { return Ok(to_xml_string(E4XOrXml::E4X(*self), activation)); } - other => Err(format!("XML.toString(): Not yet implemented for {other:?}").into()), + E4XNodeKind::Comment(_) | E4XNodeKind::ProcessingInstruction(_) => { + return Ok(to_xml_string(E4XOrXml::E4X(*self), activation)); + } } } diff --git a/tests/tests/swfs/avm2/xml_tostring/Test.as b/tests/tests/swfs/avm2/xml_tostring/Test.as index 540ab27c6..34c51cd43 100644 --- a/tests/tests/swfs/avm2/xml_tostring/Test.as +++ b/tests/tests/swfs/avm2/xml_tostring/Test.as @@ -1,10 +1,12 @@ -package { +package { import flash.display.Sprite; public class Test extends Sprite { } } // FIXME: Implement indentation. XML.prettyPrinting = false; +XML.ignoreComments = false; +XML.ignoreProcessingInstructions = false; var xml = Cow trace("xml.toString(): " + xml.toString()); @@ -20,3 +22,9 @@ trace("xml.toString(): " + xml.toString()); xml = >&<; trace("xml.toString(): " + xml.toString()); + +xml = ; +trace("xml.toString(): " + xml.toString()); + +xml = ; +trace("xml.toString(): " + xml.toString()); diff --git a/tests/tests/swfs/avm2/xml_tostring/output.txt b/tests/tests/swfs/avm2/xml_tostring/output.txt index 72dc939c0..b81f80206 100644 --- a/tests/tests/swfs/avm2/xml_tostring/output.txt +++ b/tests/tests/swfs/avm2/xml_tostring/output.txt @@ -2,3 +2,5 @@ xml.toString(): Cow xml.toString(): CowPig xml.toString(): xml.toString(): >&< +xml.toString(): +xml.toString(): diff --git a/tests/tests/swfs/avm2/xml_tostring/test.swf b/tests/tests/swfs/avm2/xml_tostring/test.swf index ff83d136d..1e5c22767 100644 Binary files a/tests/tests/swfs/avm2/xml_tostring/test.swf and b/tests/tests/swfs/avm2/xml_tostring/test.swf differ