< prev index next >

src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/ir/CatchNode.java

Print this page

        

*** 33,44 **** */ @Immutable public final class CatchNode extends Statement { private static final long serialVersionUID = 1L; ! /** Exception identifier. */ ! private final IdentNode exception; /** Exception condition. */ private final Expression exceptionCondition; /** Catch body. */ --- 33,44 ---- */ @Immutable public final class CatchNode extends Statement { private static final long serialVersionUID = 1L; ! /** Exception identifier or pattern. */ ! private final Expression exception; /** Exception condition. */ private final Expression exceptionCondition; /** Catch body. */
*** 50,74 **** * Constructors * * @param lineNumber lineNumber * @param token token * @param finish finish ! * @param exception variable name of exception * @param exceptionCondition exception condition * @param body catch body * @param isSyntheticRethrow true if this node is a synthetically generated rethrow node. */ ! public CatchNode(final int lineNumber, final long token, final int finish, final IdentNode exception, final Expression exceptionCondition, final Block body, final boolean isSyntheticRethrow) { super(lineNumber, token, finish); ! this.exception = exception == null ? null : exception.setIsInitializedHere(); this.exceptionCondition = exceptionCondition; this.body = body; this.isSyntheticRethrow = isSyntheticRethrow; } ! private CatchNode(final CatchNode catchNode, final IdentNode exception, final Expression exceptionCondition, final Block body, final boolean isSyntheticRethrow) { super(catchNode); this.exception = exception; this.exceptionCondition = exceptionCondition; this.body = body; --- 50,79 ---- * Constructors * * @param lineNumber lineNumber * @param token token * @param finish finish ! * @param exception variable name or pattern of exception * @param exceptionCondition exception condition * @param body catch body * @param isSyntheticRethrow true if this node is a synthetically generated rethrow node. */ ! public CatchNode(final int lineNumber, final long token, final int finish, final Expression exception, final Expression exceptionCondition, final Block body, final boolean isSyntheticRethrow) { super(lineNumber, token, finish); ! if (exception instanceof IdentNode) { ! this.exception = ((IdentNode) exception).setIsInitializedHere(); ! } else { ! this.exception = exception; ! } ! this.exceptionCondition = exceptionCondition; this.body = body; this.isSyntheticRethrow = isSyntheticRethrow; } ! private CatchNode(final CatchNode catchNode, final Expression exception, final Expression exceptionCondition, final Block body, final boolean isSyntheticRethrow) { super(catchNode); this.exception = exception; this.exceptionCondition = exceptionCondition; this.body = body;
*** 81,95 **** */ @Override public Node accept(final NodeVisitor<? extends LexicalContext> visitor) { if (visitor.enterCatchNode(this)) { return visitor.leaveCatchNode( ! setException((IdentNode)exception.accept(visitor)). ! setExceptionCondition(exceptionCondition == null ? null : (Expression)exceptionCondition.accept(visitor)). ! setBody((Block)body.accept(visitor))); } - return this; } @Override public boolean isTerminal() { --- 86,99 ---- */ @Override public Node accept(final NodeVisitor<? extends LexicalContext> visitor) { if (visitor.enterCatchNode(this)) { return visitor.leaveCatchNode( ! setException((Expression) exception.accept(visitor)). ! setExceptionCondition(exceptionCondition == null ? null : (Expression) exceptionCondition.accept(visitor)). ! setBody((Block) body.accept(visitor))); } return this; } @Override public boolean isTerminal() {
*** 110,120 **** /** * Get the identifier representing the exception thrown * @return the exception identifier */ ! public IdentNode getException() { return exception; } /** * Get the exception condition for this catch block --- 114,124 ---- /** * Get the identifier representing the exception thrown * @return the exception identifier */ ! public Expression getException() { return exception; } /** * Get the exception condition for this catch block
*** 147,157 **** /** * Resets the exception of a catch block * @param exception new exception * @return new catch node if changed, same otherwise */ ! public CatchNode setException(final IdentNode exception) { if (this.exception == exception) { return this; } return new CatchNode(this, exception, exceptionCondition, body, isSyntheticRethrow); } --- 151,161 ---- /** * Resets the exception of a catch block * @param exception new exception * @return new catch node if changed, same otherwise */ ! public CatchNode setException(final Expression exception) { if (this.exception == exception) { return this; } return new CatchNode(this, exception, exceptionCondition, body, isSyntheticRethrow); }
< prev index next >