Example usage for org.eclipse.jdt.core.dom ForStatement ForStatement

List of usage examples for org.eclipse.jdt.core.dom ForStatement ForStatement

Introduction

In this page you can find the example usage for org.eclipse.jdt.core.dom ForStatement ForStatement.

Prototype

ForStatement(AST ast) 

Source Link

Document

Creates a new AST node for a for statement owned by the given AST.

Usage

From source file:org.eclipse.jdt.core.dom.ASTConverter.java

License:Open Source License

public ForStatement convert(org.eclipse.jdt.internal.compiler.ast.ForStatement statement) {
    ForStatement forStatement = new ForStatement(this.ast);
    forStatement.setSourceRange(statement.sourceStart, statement.sourceEnd - statement.sourceStart + 1);
    org.eclipse.jdt.internal.compiler.ast.Statement[] initializations = statement.initializations;
    if (initializations != null) {
        // we know that we have at least one initialization
        if (initializations[0] instanceof org.eclipse.jdt.internal.compiler.ast.LocalDeclaration) {
            org.eclipse.jdt.internal.compiler.ast.LocalDeclaration initialization = (org.eclipse.jdt.internal.compiler.ast.LocalDeclaration) initializations[0];
            VariableDeclarationExpression variableDeclarationExpression = convertToVariableDeclarationExpression(
                    initialization);//  w  ww. j a  va 2  s . c o m
            int initializationsLength = initializations.length;
            for (int i = 1; i < initializationsLength; i++) {
                initialization = (org.eclipse.jdt.internal.compiler.ast.LocalDeclaration) initializations[i];
                variableDeclarationExpression.fragments()
                        .add(convertToVariableDeclarationFragment(initialization));
            }
            if (initializationsLength != 1) {
                int start = variableDeclarationExpression.getStartPosition();
                int end = ((org.eclipse.jdt.internal.compiler.ast.LocalDeclaration) initializations[initializationsLength
                        - 1]).declarationSourceEnd;
                variableDeclarationExpression.setSourceRange(start, end - start + 1);
            }
            forStatement.initializers().add(variableDeclarationExpression);
        } else {
            int initializationsLength = initializations.length;
            for (int i = 0; i < initializationsLength; i++) {
                Expression initializer = convertToExpression(initializations[i]);
                if (initializer != null) {
                    forStatement.initializers().add(initializer);
                } else {
                    forStatement.setFlags(forStatement.getFlags() | ASTNode.MALFORMED);
                }
            }
        }
    }
    if (statement.condition != null) {
        forStatement.setExpression(convert(statement.condition));
    }
    org.eclipse.jdt.internal.compiler.ast.Statement[] increments = statement.increments;
    if (increments != null) {
        int incrementsLength = increments.length;
        for (int i = 0; i < incrementsLength; i++) {
            forStatement.updaters().add(convertToExpression(increments[i]));
        }
    }
    final Statement action = convert(statement.action);
    if (action == null)
        return null;
    forStatement.setBody(action);
    return forStatement;
}