mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/jpexs-decompiler.git
synced 2026-07-19 02:28:08 +00:00
Improved for continue / goto detection
This commit is contained in:
@@ -12,22 +12,28 @@
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library.
|
||||
* License along with this library.
|
||||
*/
|
||||
package com.jpexs.decompiler.graph.model;
|
||||
|
||||
import com.jpexs.decompiler.flash.helpers.GraphTextWriter;
|
||||
import com.jpexs.decompiler.graph.Block;
|
||||
import com.jpexs.decompiler.graph.GraphSourceItem;
|
||||
import com.jpexs.decompiler.graph.GraphTargetItem;
|
||||
import com.jpexs.decompiler.graph.TypeItem;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author JPEXS
|
||||
*/
|
||||
*/
|
||||
public class GotoItem extends GraphTargetItem implements Block {
|
||||
|
||||
public String labelName;
|
||||
|
||||
public List<GraphTargetItem> targetCommands = null;
|
||||
|
||||
public GotoItem(GraphSourceItem src, GraphSourceItem lineStartIns, String labelName) {
|
||||
super(src, lineStartIns, PRECEDENCE_PRIMARY);
|
||||
this.labelName = labelName;
|
||||
@@ -35,10 +41,35 @@ public class GotoItem extends GraphTargetItem {
|
||||
|
||||
@Override
|
||||
public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) throws InterruptedException {
|
||||
public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) throws InterruptedException {
|
||||
if (targetCommands != null) {
|
||||
if (labelName != null) {
|
||||
writer.append(labelName);
|
||||
writer.append(":");
|
||||
writer.newLine();
|
||||
}
|
||||
appendCommands(value, writer, localData, targetCommands, false);
|
||||
} else {
|
||||
writer.append("§§goto(").append(labelName).append(")");
|
||||
}
|
||||
return writer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean needsSemicolon() {
|
||||
if (targetCommands != null) {
|
||||
return false;
|
||||
}
|
||||
return super.needsSemicolon();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean needsNewLine() {
|
||||
if (targetCommands != null) {
|
||||
return false;
|
||||
}
|
||||
return super.needsNewLine();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasReturnValue() {
|
||||
return false;
|
||||
@@ -53,4 +84,27 @@ public class GotoItem extends GraphTargetItem {
|
||||
public Object getResult() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ContinueItem> getContinues() {
|
||||
List<ContinueItem> ret = new ArrayList<>();
|
||||
if (targetCommands == null) {
|
||||
return ret;
|
||||
}
|
||||
for (GraphTargetItem c : targetCommands) {
|
||||
if (c instanceof ContinueItem) {
|
||||
ret.add((ContinueItem) c);
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<List<GraphTargetItem>> getSubs() {
|
||||
List<List<GraphTargetItem>> ret = new ArrayList<>();
|
||||
if (targetCommands != null) {
|
||||
ret.add(targetCommands);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user