One more test case. Also related to nested labelled continues.
public class Main2 {
void f() {
l1:
while(true){
//Note: putting in l2 makes the thing compile properly
//It seems that the inner do is trying to use the label of
//the outer while
//l2:
do {
} while(true);
}
}
}
Soot started on Wed Dec 07 16:09:26 GMT 2005
java.lang.RuntimeException: Chain already contains object: nop
at soot.util.HashChain.addLast(HashChain.java:256)
at soot.util.HashChain.add(HashChain.java:60)
at soot.PatchingChain.add(PatchingChain.java:60)
at soot.javaToJimple.JimpleBodyBuilder.createDo(JimpleBodyBuilder.java:810)
at soot.javaToJimple.JimpleBodyBuilder.createStmt(JimpleBodyBuilder.java:566)
at soot.javaToJimple.JimpleBodyBuilder.createBlock(JimpleBodyBuilder.java:345)
at soot.javaToJimple.JimpleBodyBuilder.createStmt(JimpleBodyBuilder.java:560)
at soot.javaToJimple.JimpleBodyBuilder.createWhile(JimpleBodyBuilder.java:742)
at soot.javaToJimple.JimpleBodyBuilder.createStmt(JimpleBodyBuilder.java:563)
at soot.javaToJimple.JimpleBodyBuilder.createLabeled(JimpleBodyBuilder.java:1272)
at soot.javaToJimple.JimpleBodyBuilder.createStmt(JimpleBodyBuilder.java:593)
at soot.javaToJimple.JimpleBodyBuilder.createBlock(JimpleBodyBuilder.java:345)
at soot.javaToJimple.JimpleBodyBuilder.createJimpleBody(JimpleBodyBuilder.java:135)
at soot.javaToJimple.PolyglotMethodSource.getBody(PolyglotMethodSource.java:51)
at soot.SootMethod.getBodyFromMethodSource(SootMethod.java:80)
at soot.SootMethod.retrieveActiveBody(SootMethod.java:304)
at soot.PackManager.retrieveAllBodies(PackManager.java:727)
at soot.PackManager.runPacks(PackManager.java:306)
at soot.Main.run(Main.java:179)
at soot.Main.main(Main.java:153)
Exception in thread "main"
Received on Wed Dec 7 16:27:59 2005
This archive was generated by hypermail 2.1.8 : Thu Dec 08 2005 - 03:20:06 GMT