1 package net.sourceforge.jenesis4java.impl.util;
2
3 /*
4 * #%L
5 * Jenesis 4 Java Code Generator
6 * %%
7 * Copyright (C) 2000 - 2015 jenesis4java
8 * %%
9 * This program is free software: you can redistribute it and/or modify
10 * it under the terms of the GNU Lesser General Public License as
11 * published by the Free Software Foundation, either version 3 of the
12 * License, or (at your option) any later version.
13 *
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Lesser Public License for more details.
18 *
19 * You should have received a copy of the GNU General Lesser Public
20 * License along with this program. If not, see
21 * <http://www.gnu.org/licenses/lgpl-3.0.html>.
22 * #L%
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 }