From 13423227270f96e875bfe2ff99638c14f06f1439 Mon Sep 17 00:00:00 2001 From: Jeff Williams Date: Sat, 22 Jun 2013 12:21:22 -0700 Subject: [PATCH] follow the spec for try statement handlers --- src/org/jsdoc/AstBuilder.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/org/jsdoc/AstBuilder.java b/src/org/jsdoc/AstBuilder.java index 9f67bea06c..1c363f3351 100644 --- a/src/org/jsdoc/AstBuilder.java +++ b/src/org/jsdoc/AstBuilder.java @@ -871,7 +871,7 @@ private void processTryStatement(TryStatement rhinoNode, Entry info) CatchClause current; AstNode finalizer = rhinoNode.getFinallyBlock(); - List handlers = new ArrayList(); + AstNode handler = null; List catchClauses = rhinoNode.getCatchClauses(); List guardedHandlers = new ArrayList(); Iterator iterator = catchClauses.iterator(); @@ -879,7 +879,7 @@ private void processTryStatement(TryStatement rhinoNode, Entry info) while (iterator.hasNext()) { current = iterator.next(); if (current.getIfPosition() == -1) { - handlers.add(current); + handler = current; iterator.remove(); } else { guardedHandlers.add(current); @@ -889,8 +889,7 @@ private void processTryStatement(TryStatement rhinoNode, Entry info) info.put(TYPE, JsDocNode.TRY_STATEMENT); info.put("block", processNode(rhinoNode.getTryBlock())); - // Esprima uses an array, so we do too - info.put("handlers", processNodeList(handlers)); + info.put("handler", handler == null ? handler : processNode(handler)); info.put("guardedHandlers", processNodeList(guardedHandlers)); info.put("finalizer", finalizer == null ? finalizer : processNode(finalizer)); }