1 package net.sourceforge.jenesis4java.impl.util;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 import java.util.List;
26
27 import net.sourceforge.jenesis4java.ElseIf;
28 import net.sourceforge.jenesis4java.If;
29 import net.sourceforge.jenesis4java.LocalBlock;
30 import net.sourceforge.jenesis4java.Statement;
31
32 public class BlockUtil {
33
34 public static boolean isBlockWithAbruptCompletion(List<Statement> stmts) {
35 Statement last;
36 if (stmts.size() > 0) {
37 last = stmts.get(stmts.size() - 1);
38 } else {
39 return false;
40 }
41
42 if (last instanceof LocalBlock) {
43 return last.isBlockWithAbruptCompletion();
44
45 }
46 if (last instanceof If) {
47 If ifStmt = (If) last;
48 List<Statement> subStatements = ifStmt.getStatements();
49 boolean result = isBlockWithAbruptCompletion(subStatements);
50 if (result) {
51 if (ifStmt.getElse() != null) {
52 result = isBlockWithAbruptCompletion(ifStmt.getElse().getStatements());
53 }
54 }
55 if (ifStmt.getElseIfs() != null) {
56 for (ElseIf elseif : ifStmt.getElseIfs()) {
57 if (result) {
58 result = isBlockWithAbruptCompletion(elseif.getStatements());
59 }
60 }
61 }
62 return result;
63 }
64 return last.isAbruptCompletionStatement();
65 }
66 }