aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/couscous/frontends
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-04-17 17:17:34 +0100
committerMichael Williamson <mike@zwobble.org>2016-04-17 17:17:34 +0100
commit936968730c0f882f2ba8dfa91164abb901ac3c95 (patch)
treef611b3cbf582c9a3cdb876da3910c12ceb3c6e4f /src/main/java/org/zwobble/couscous/frontends
parent188051b4be316db4de8b6f48d634f249dd2e4986 (diff)
Read finally clauses of try statements
Diffstat (limited to 'src/main/java/org/zwobble/couscous/frontends')
-rw-r--r--src/main/java/org/zwobble/couscous/frontends/java/FreeVariables.java6
-rw-r--r--src/main/java/org/zwobble/couscous/frontends/java/JavaStatementReader.java3
2 files changed, 7 insertions, 2 deletions
diff --git a/src/main/java/org/zwobble/couscous/frontends/java/FreeVariables.java b/src/main/java/org/zwobble/couscous/frontends/java/FreeVariables.java
index dc68db8..9fcec11 100644
--- a/src/main/java/org/zwobble/couscous/frontends/java/FreeVariables.java
+++ b/src/main/java/org/zwobble/couscous/frontends/java/FreeVariables.java
@@ -95,6 +95,10 @@ public class FreeVariables {
private static Stream<VariableDeclaration> findDeclarations(Node root) {
Stream<VariableNode> declarations = descendantNodesAndSelf(root).flatMap(node ->
toStream(tryCast(VariableNode.class, node)));
- return declarations.map(VariableNode::getDeclaration);
+ Stream<TryNode> tryStatements = descendantNodesAndSelf(root).flatMap(node -> toStream(tryCast(TryNode.class, node)));
+ Stream<ExceptionHandlerNode> handlers = tryStatements.flatMap(statement -> statement.getExceptionHandlers().stream());
+ return Stream.concat(
+ declarations.map(VariableNode::getDeclaration),
+ handlers.map(ExceptionHandlerNode::getDeclaration));
}
}
diff --git a/src/main/java/org/zwobble/couscous/frontends/java/JavaStatementReader.java b/src/main/java/org/zwobble/couscous/frontends/java/JavaStatementReader.java
index e8483f0..c3c4f21 100644
--- a/src/main/java/org/zwobble/couscous/frontends/java/JavaStatementReader.java
+++ b/src/main/java/org/zwobble/couscous/frontends/java/JavaStatementReader.java
@@ -170,7 +170,8 @@ class JavaStatementReader {
List<CatchClause> catchClauses = statement.catchClauses();
return list(tryStatement(
readStatement(statement.getBody()),
- eagerMap(catchClauses, this::readCatchClause)));
+ eagerMap(catchClauses, this::readCatchClause),
+ statement.getFinally() == null ? list() : readStatement(statement.getFinally())));
}
private ExceptionHandlerNode readCatchClause(CatchClause clause) {