diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-04-17 17:17:34 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-04-17 17:17:34 +0100 |
| commit | 936968730c0f882f2ba8dfa91164abb901ac3c95 (patch) | |
| tree | f611b3cbf582c9a3cdb876da3910c12ceb3c6e4f /src/main/java/org/zwobble/couscous/frontends | |
| parent | 188051b4be316db4de8b6f48d634f249dd2e4986 (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.java | 6 | ||||
| -rw-r--r-- | src/main/java/org/zwobble/couscous/frontends/java/JavaStatementReader.java | 3 |
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) { |
