Fixed 'IDEA-128593: Wrong order of switch cases'

This commit is contained in:
Stiver 2014-08-13 22:04:51 +02:00
parent de249340fc
commit 53ad2b920e
1 changed files with 11 additions and 6 deletions

View File

@ -266,15 +266,20 @@ public class SwitchStatement extends Statement {
setPreds.remove(first);
if(!setPreds.isEmpty()) {
Statement pred = setPreds.iterator().next(); // at most one predecessor node besides the head
for(int j=index+1;j<nodes.size();j++) {
if(nodes.get(j) == pred) {
Statement pred = setPreds.iterator().next(); // assumption: at most one predecessor node besides the head. May not hold true for obfuscated code.
for(int j=0;j<nodes.size();j++) {
if(j != (index - 1) && nodes.get(j) == pred) {
nodes.add(j+1, stat);
edges.add(j+1, edges.get(index));
nodes.remove(index);
edges.remove(index);
index--;
if(j > index) {
nodes.remove(index);
edges.remove(index);
index--;
} else {
nodes.remove(index + 1);
edges.remove(index + 1);
}
break;
}
}