public class ReturnStatementToIterationConverter
extends Object
Translates all return statements into an invocation of the next iteration. This can be either - "continue LOOP_LABEL": Outside closures - "throw LOOP_EXCEPTION": Inside closures
Moreover, before adding the recur statement the iteration parameters (originally the method args) are set to their new value. To prevent variable aliasing parameters will be copied into temp vars before they are changes so that their current iteration value can be used when setting other params.
There's probably place for optimizing the amount of variable copying being done, e.g. parameters that are only handed through must not be copied at all.
| Constructor and description |
|---|
ReturnStatementToIterationConverter()Creates a converter that uses the default recurrence statement. |
ReturnStatementToIterationConverter(Statement recurStatement)Creates a converter that uses the supplied recurrence statement. |
| Type Params | Return Type | Name and description |
|---|---|---|
|
public Statement |
convert(ReturnStatement statement, Map<Integer, Map<String, Object>> positionMapping)Converts a recursive return statement into iterative assignments followed by the recur statement. |
|
public Statement |
getRecurStatement()Returns the statement used to trigger the next iteration. |
|
public void |
setRecurStatement(Statement recurStatement)Sets the statement used to trigger the next iteration. |
Creates a converter that uses the default recurrence statement.
Creates a converter that uses the supplied recurrence statement.
recurStatement - the statement that advances to the next iterationConverts a recursive return statement into iterative assignments followed by the recur statement.
statement - the return statement to convertpositionMapping - the parameter mapping keyed by argument positionReturns the statement used to trigger the next iteration.
Sets the statement used to trigger the next iteration.
recurStatement - the recurrence statement to useCopyright © 2003-2026 The Apache Software Foundation. All rights reserved.