mirror of
https://github.com/moparisthebest/fernflower
synced 2024-11-23 09:42:18 -05:00
Handling of certain loop types in a finally block
This commit is contained in:
parent
b668038ed9
commit
b3a1c41244
@ -165,6 +165,7 @@ public class ClassesProcessor {
|
||||
|
||||
HashSet<String> setNestedClasses = mapNestedClassReferences.get(superClass);
|
||||
if(setNestedClasses != null) {
|
||||
|
||||
StructClass scl = supernode.classStruct;
|
||||
StructInnerClassesAttribute inner = (StructInnerClassesAttribute) scl.getAttributes().getWithKey("InnerClasses");
|
||||
for(int i = 0; i < inner.getStringentries().size(); i++) {
|
||||
|
@ -131,7 +131,9 @@ public class ExprProcessor implements CodeConstants {
|
||||
|
||||
// try {
|
||||
// DotExporter.toDotFile(dgraph, new File("c:\\Temp\\gr12_my.dot"));
|
||||
// } catch(Exception ex) {ex.printStackTrace();}
|
||||
// } catch (Exception ex) {
|
||||
// ex.printStackTrace();
|
||||
// }
|
||||
|
||||
// collect finally entry points
|
||||
Set<String> setFinallyShortRangeEntryPoints = new HashSet<String>();
|
||||
@ -212,6 +214,14 @@ public class ExprProcessor implements CodeConstants {
|
||||
// not be null at this point
|
||||
}
|
||||
|
||||
// handling of entry point loops
|
||||
int succ_entry_index = ndentrypoints.indexOf(nd.id);
|
||||
if(succ_entry_index >= 0) { // we are in a loop (e.g. continue in a finally block), drop all entry points in the list beginning with succ_entry_index
|
||||
for(int elements_to_remove = ndentrypoints.size() - succ_entry_index; elements_to_remove > 0; elements_to_remove--) {
|
||||
ndentrypoints.removeLast();
|
||||
}
|
||||
}
|
||||
|
||||
String ndentrykey = buildEntryPointKey(ndentrypoints);
|
||||
if (!mapSucc.containsKey(ndentrykey)) {
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user