while true fix

This commit is contained in:
Jindra Petk
2013-04-06 20:24:46 +02:00
parent 52da977020
commit 175ccd07e0

View File

@@ -917,7 +917,7 @@ public class Graph {
}
}
if (loop && (part.nextParts.size() > 1) && (!doWhile)) {
if ((!whileTrue) && loop && (part.nextParts.size() > 1) && (!doWhile)) {
currentLoop.loopBreak = part.nextParts.get(reversed ? 0 : 1);
}
@@ -992,7 +992,12 @@ public class Graph {
if (debugMode) {
System.err.println("ONFALSE: (inside " + part + ")");
}
onFalse = (((next == part.nextParts.get(0)) || (part.nextParts.get(0).path.equals(part.path) || part.nextParts.get(0).path.length() < part.path.length())) ? new ArrayList<GraphTargetItem>() : printGraph(prepareBranchLocalData(localData), falseStack, allParts, part, part.nextParts.get(0), next == null ? stopPart : next, loops, forFinalCommands));
if((next == part.nextParts.get(0)) || (part.nextParts.get(0).path.equals(part.path) || part.nextParts.get(0).path.length() < part.path.length()))
{
onFalse=new ArrayList<GraphTargetItem>();
}else{
onFalse = (printGraph(prepareBranchLocalData(localData), falseStack, allParts, part, part.nextParts.get(0), next == null ? stopPart : next, loops, forFinalCommands));
}
if (debugMode) {
System.err.println("/ONFALSE (inside " + part + ")");
}
@@ -1004,7 +1009,15 @@ public class Graph {
if (whileTrue) {
retw = new ArrayList<GraphTargetItem>();
retw.add(new IfItem(null, expr, onTrue, onFalse));
List<GraphTargetItem> body = new ArrayList<GraphTargetItem>();
if(next!=null){
body=printGraph(prepareBranchLocalData(localData), stack, allParts, part,next, stopPart, loops, forFinalCommands);
}
retw.addAll(body);
retx.add(new WhileItem(null, whileTrueLoop, new TrueItem(null), retw));
next = null;
} else {
retx.add(new IfItem(null, expr, onTrue, onFalse));
}
@@ -1043,6 +1056,9 @@ public class Graph {
if (doWhile) {
loopBodyStart = next;
}
if(whileTrue){
loopBodyStart = part;
}
}
if (loop) { // && (!doWhile)) {
List<GraphTargetItem> loopBody = new ArrayList<GraphTargetItem>();