Fixed #1888 String casts - ConvertS on XML, XMLList

This commit is contained in:
Jindra Petřík
2023-01-27 21:51:05 +01:00
parent 0469170810
commit 7822ec078d
8 changed files with 43 additions and 42 deletions

View File

@@ -245,18 +245,14 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile
@Test
public void testConvert() {
decompileMethod("classic_air", "testConvert", "var a:*;\r\n"
+ "var o:Object;\r\n"
+ "var v:Vector.<String>;\r\n"
+ "var x:XML;\r\n"
+ "var xlist:XMLList;\r\n"
+ "var lc:LocalClass;\r\n"
+ "var f:Function;\r\n"
+ "var d:Number;\r\n"
+ "var s:String = \"a\";\r\n"
+ "var i:int = int(s);\r\n"
+ "var j:int = n;\r\n"
+ "s = String(j);\r\n"
decompileMethod("classic_air", "testConvert", "var s:String = null;\r\n"
+ "var i:int = 0;\r\n"
+ "var a:* = undefined;\r\n"
+ "var dict:Dictionary = new Dictionary();\r\n"
+ "s = \"a\";\r\n"
+ "i = int(s);\r\n"
+ "var j:int;\r\n"
+ "s = String(j = n);\r\n"
+ "s = ns;\r\n"
+ "s = String(i == 4 ? \"\" : i);\r\n"
+ "s = i == 4 ? \"\" : String(i);\r\n"
@@ -265,14 +261,14 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile
+ "i = 4 * 5;\r\n"
+ "i = a * 6;\r\n"
+ "i = a;\r\n"
+ "o = {\r\n"
+ "var o:Object = {\r\n"
+ "0:\"A\",\r\n"
+ "1:\"B\",\r\n"
+ "2:\"C\"\r\n"
+ "};\r\n"
+ "i = int(s.charAt(10));\r\n"
+ "v = new Vector.<String>();\r\n"
+ "v.push(\"A\");\r\n"
+ "var v:Vector.<String>;\r\n"
+ "(v = new Vector.<String>()).push(\"A\");\r\n"
+ "v.push(\"B\");\r\n"
+ "i = int(v[0]);\r\n"
+ "s = v[1];\r\n"
@@ -283,25 +279,24 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile
+ "i = sprot;\r\n"
+ "s = String(sprot);\r\n"
+ "s = String(getTimer());\r\n"
+ "x = <list>\r\n"
+ "var x:XML;\r\n"
+ "s = x = <list>\r\n"
+ "<item id=\"1\">1</item>\r\n"
+ "<item id=\"2\">2</item>\r\n"
+ "<item id=\"3\">3</item>\r\n"
+ "</list>;\r\n"
+ "s = x;\r\n"
+ "trace(\"a\");\r\n"
+ "xlist = x.item;\r\n"
+ "var xlist:XMLList = x.item;\r\n"
+ "trace(\"b\");\r\n"
+ "i = int(xlist[i].@id);\r\n"
+ "trace(\"c\");\r\n"
+ "i = int(x.item[i].@id);\r\n"
+ "lc = new LocalClass();\r\n"
+ "i = lc.attr;\r\n"
+ "dict[String(x.item[i].@id)] = \"Hello\";\r\n"
+ "var lc:LocalClass;\r\n"
+ "i = (lc = new LocalClass()).attr;\r\n"
+ "s = String(lc.attr);\r\n"
+ "f = function():void\r\n"
+ "{\r\n"
+ "};\r\n"
+ "if(Boolean(f))\r\n"
+ "var f:Function;\r\n"
+ "if(Boolean(f = this.f))\r\n"
+ "{\r\n"
+ "trace(\"OK\");\r\n"
+ "}\r\n"
@@ -318,7 +313,7 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile
+ "trace(\"obj\");\r\n"
+ "}\r\n"
+ "s = xlist;\r\n"
+ "d = 0;\r\n"
+ "var d:Number = 0;\r\n"
+ "d = 1;\r\n"
+ "d = 1.5;\r\n"
+ "i = 1;\r\n"

View File

@@ -244,14 +244,10 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes
@Test
public void testConvert() {
decompileMethod("classic", "testConvert", "var x:XML;\r\n"
+ "var xlist:XMLList;\r\n"
+ "var lc:LocalClass;\r\n"
+ "var f:Function;\r\n"
+ "var d:Number;\r\n"
+ "var s:String = null;\r\n"
decompileMethod("classic", "testConvert", "var s:String = null;\r\n"
+ "var i:int = 0;\r\n"
+ "var a:* = undefined;\r\n"
+ "var dict:Dictionary = new Dictionary();\r\n"
+ "s = \"a\";\r\n"
+ "i = int(s);\r\n"
+ "var j:int = this.n;\r\n"
@@ -282,24 +278,23 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes
+ "i = sprot;\r\n"
+ "s = String(sprot);\r\n"
+ "s = String(getTimer());\r\n"
+ "x = <list>\r\n"
+ "var x:XML = <list>\r\n"
+ "<item id=\"1\">1</item>\r\n"
+ "<item id=\"2\">2</item>\r\n"
+ "<item id=\"3\">3</item>\r\n"
+ "</list>;\r\n"
+ "s = x;\r\n"
+ "trace(\"a\");\r\n"
+ "xlist = x.item;\r\n"
+ "var xlist:XMLList = x.item;\r\n"
+ "trace(\"b\");\r\n"
+ "i = int(xlist[i].@id);\r\n"
+ "trace(\"c\");\r\n"
+ "i = int(x.item[i].@id);\r\n"
+ "lc = new LocalClass();\r\n"
+ "dict[String(x.item[i].@id)] = \"Hello\";\r\n"
+ "var lc:LocalClass = new LocalClass();\r\n"
+ "i = lc.attr;\r\n"
+ "s = String(lc.attr);\r\n"
+ "f = function():void\r\n"
+ "{\r\n"
+ "};\r\n"
+ "var f:Function = this.f;\r\n"
+ "if(Boolean(f))\r\n"
+ "{\r\n"
+ "trace(\"OK\");\r\n"
@@ -317,7 +312,7 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes
+ "trace(\"obj\");\r\n"
+ "}\r\n"
+ "s = xlist;\r\n"
+ "d = 0;\r\n"
+ "var d:Number = 0;\r\n"
+ "d = 1;\r\n"
+ "d = 1.5;\r\n"
+ "i = 1;\r\n"