Fixed AS1/2 - nested tellTarget

This commit is contained in:
Jindra Petřík
2021-11-27 19:34:10 +01:00
parent 44da53dfab
commit 0122db9446
2 changed files with 27 additions and 1 deletions

View File

@@ -26,6 +26,7 @@ All notable changes to this project will be documented in this file.
- Ternar visit (can cause invalid reg declarations)
- AS1/2 - typeof precedence / parenthesis
- AS1/2 - switch detection
- AS1/2 - nested tellTarget
## [14.6.0] - 2021-11-22
### Added

View File

@@ -27,11 +27,13 @@ import com.jpexs.decompiler.flash.action.swf4.ActionPush;
import com.jpexs.decompiler.flash.action.swf4.ActionSetTarget2;
import com.jpexs.decompiler.flash.action.swf4.ConstantIndex;
import com.jpexs.decompiler.flash.helpers.GraphTextWriter;
import com.jpexs.decompiler.graph.Block;
import com.jpexs.decompiler.graph.CompilationException;
import com.jpexs.decompiler.graph.GraphSourceItem;
import com.jpexs.decompiler.graph.GraphSourceItemPos;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SourceGenerator;
import com.jpexs.decompiler.graph.model.ContinueItem;
import com.jpexs.decompiler.graph.model.LocalData;
import java.util.ArrayList;
import java.util.List;
@@ -40,7 +42,7 @@ import java.util.List;
*
* @author JPEXS
*/
public class TellTargetActionItem extends ActionItem {
public class TellTargetActionItem extends ActionItem implements Block {
public List<GraphTargetItem> commands;
@@ -110,4 +112,27 @@ public class TellTargetActionItem extends ActionItem {
public boolean hasReturnValue() {
return false;
}
@Override
public List<ContinueItem> getContinues() {
List<ContinueItem> ret = new ArrayList<>();
for (GraphTargetItem ti : commands) {
if (ti instanceof ContinueItem) {
ret.add((ContinueItem) ti);
}
if (ti instanceof Block) {
ret.addAll(((Block) ti).getContinues());
}
}
return ret;
}
@Override
public List<List<GraphTargetItem>> getSubs() {
List<List<GraphTargetItem>> ret = new ArrayList<>();
if (commands != null) {
ret.add(commands);
}
return ret;
}
}