Exemplo n.º 1
0
  protected void consumeStatementReturn() {
    // ReturnStatement ::= 'return' Expressionopt ';'

    // returned value intercepted by code snippet
    // support have to be defined at toplevel only
    if ((this.hasRecoveredOnExpression
            || (this.scanner.startPosition >= this.codeSnippetStart
                && this.scanner.startPosition
                    <= this.codeSnippetEnd + 1 + this.lineSeparatorLength /* 14838*/))
        && this.expressionLengthStack[this.expressionLengthPtr] != 0
        && isTopLevelType()) {
      this.expressionLengthPtr--;
      Expression expression = this.expressionStack[this.expressionPtr--];
      pushOnAstStack(
          new CodeSnippetReturnStatement(expression, expression.sourceStart, expression.sourceEnd));
    } else {
      super.consumeStatementReturn();
    }
    /* recovery */
    recordLastStatementIfNeeded();
  }