mirror of
https://github.com/moparisthebest/fernflower
synced 2024-11-27 03:32:14 -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);
|
HashSet<String> setNestedClasses = mapNestedClassReferences.get(superClass);
|
||||||
if(setNestedClasses != null) {
|
if(setNestedClasses != null) {
|
||||||
|
|
||||||
StructClass scl = supernode.classStruct;
|
StructClass scl = supernode.classStruct;
|
||||||
StructInnerClassesAttribute inner = (StructInnerClassesAttribute) scl.getAttributes().getWithKey("InnerClasses");
|
StructInnerClassesAttribute inner = (StructInnerClassesAttribute) scl.getAttributes().getWithKey("InnerClasses");
|
||||||
for(int i = 0; i < inner.getStringentries().size(); i++) {
|
for(int i = 0; i < inner.getStringentries().size(); i++) {
|
||||||
|
@ -131,7 +131,9 @@ public class ExprProcessor implements CodeConstants {
|
|||||||
|
|
||||||
// try {
|
// try {
|
||||||
// DotExporter.toDotFile(dgraph, new File("c:\\Temp\\gr12_my.dot"));
|
// DotExporter.toDotFile(dgraph, new File("c:\\Temp\\gr12_my.dot"));
|
||||||
// } catch(Exception ex) {ex.printStackTrace();}
|
// } catch (Exception ex) {
|
||||||
|
// ex.printStackTrace();
|
||||||
|
// }
|
||||||
|
|
||||||
// collect finally entry points
|
// collect finally entry points
|
||||||
Set<String> setFinallyShortRangeEntryPoints = new HashSet<String>();
|
Set<String> setFinallyShortRangeEntryPoints = new HashSet<String>();
|
||||||
@ -212,6 +214,14 @@ public class ExprProcessor implements CodeConstants {
|
|||||||
// not be null at this point
|
// 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);
|
String ndentrykey = buildEntryPointKey(ndentrypoints);
|
||||||
if (!mapSucc.containsKey(ndentrykey)) {
|
if (!mapSucc.containsKey(ndentrykey)) {
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user