mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/jpexs-decompiler.git
synced 2026-07-17 21:38:10 +00:00
AS3: Incorrect handling of strict equals operator in if vs switch resulting in §§pop
This commit is contained in:
@@ -6,6 +6,7 @@ All notable changes to this project will be documented in this file.
|
||||
- Using new FFDec icon on Mac
|
||||
- AS3: get/set slot for global scope
|
||||
- Better continue in for / goto detection
|
||||
- AS3: Incorrect handling of strict equals operator in if vs switch resulting in §§pop
|
||||
|
||||
### Changed
|
||||
- AS3 test methods separated to classes
|
||||
|
||||
@@ -537,9 +537,7 @@ public class AVM2Graph extends Graph {
|
||||
switchedObject = new LocalRegAVM2Item(null, null, rightReg, null);
|
||||
}
|
||||
|
||||
if(leftReg < 0 && rightReg < 0){
|
||||
|
||||
} else if (cnt == 1) {
|
||||
if ((leftReg < 0 && rightReg < 0) || (cnt == 1)) {
|
||||
stack.push(set);
|
||||
} else {
|
||||
part = part.nextParts.get(1);
|
||||
|
||||
@@ -910,6 +910,16 @@ public class ActionScript3Test extends ActionScriptTestBase {
|
||||
false);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testStrictEquals() {
|
||||
decompileMethod("testStrictEquals", "var k:int = 6;\r\n"
|
||||
+ "if(this.f() !== this.f())\r\n"
|
||||
+ "{\r\n"
|
||||
+ "trace(\"is eight\");\r\n"
|
||||
+ "}\r\n",
|
||||
false);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testStringConcat() {
|
||||
decompileMethod("testStringConcat", "var k:int = 8;\r\n"
|
||||
|
||||
Binary file not shown.
@@ -59,6 +59,7 @@ package
|
||||
TestProperty;
|
||||
TestRegExp;
|
||||
TestRest;
|
||||
TestStrictEquals;
|
||||
TestStringConcat;
|
||||
TestStrings;
|
||||
TestSwitch;
|
||||
|
||||
21
libsrc/ffdec_lib/testdata/flashdevelop/src/tests/TestStrictEquals.as
vendored
Normal file
21
libsrc/ffdec_lib/testdata/flashdevelop/src/tests/TestStrictEquals.as
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
package tests
|
||||
{
|
||||
|
||||
public class TestStrictEquals
|
||||
{
|
||||
|
||||
public function run() : void
|
||||
{
|
||||
var k:int = 6;
|
||||
if (this.f() !== this.f()){
|
||||
trace("is eight");
|
||||
}
|
||||
}
|
||||
|
||||
private function f():String {
|
||||
return "x";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user