Example usage for org.eclipse.jdt.internal.compiler.ast ForeachStatement ForeachStatement

List of usage examples for org.eclipse.jdt.internal.compiler.ast ForeachStatement ForeachStatement

Introduction

In this page you can find the example usage for org.eclipse.jdt.internal.compiler.ast ForeachStatement ForeachStatement.

Prototype

public ForeachStatement(LocalDeclaration elementVariable, int start) 

Source Link

Usage

From source file:lombok.eclipse.handlers.ast.EclipseASTMaker.java

License:Open Source License

@Override
public ASTNode visitForeach(final lombok.ast.Foreach node, final Void p) {
    final ForeachStatement forEach = new ForeachStatement(
            build(node.getElementVariable(), LocalDeclaration.class), 0);
    setGeneratedByAndCopyPos(forEach, source, posHintOf(node));
    forEach.collection = build(node.getCollection());
    forEach.action = build(node.getAction());
    return forEach;
}

From source file:lombok.eclipse.handlers.singulars.EclipseJavaUtilMapSingularizer.java

License:Open Source License

private void generatePluralMethod(TypeReference returnType, Statement returnStatement, SingularData data,
        EclipseNode builderType, boolean fluent) {
    MethodDeclaration md = new MethodDeclaration(
            ((CompilationUnitDeclaration) builderType.top().get()).compilationResult);
    md.bits |= ECLIPSE_DO_NOT_TOUCH_FLAG;
    md.modifiers = ClassFileConstants.AccPublic;

    String pN = new String(data.getPluralName());
    char[] keyFieldName = (pN + "$key").toCharArray();
    char[] valueFieldName = (pN + "$value").toCharArray();

    List<Statement> statements = new ArrayList<Statement>();
    statements.add(createConstructBuilderVarIfNeeded(data, builderType, true));

    char[] entryName = "$lombokEntry".toCharArray();

    TypeReference forEachType = new QualifiedTypeReference(JAVA_UTIL_MAP_ENTRY, NULL_POSS);
    forEachType = addTypeArgs(2, true, builderType, forEachType, data.getTypeArgs());

    MessageSend keyArg = new MessageSend();
    keyArg.receiver = new SingleNameReference(entryName, 0L);
    keyArg.selector = "getKey".toCharArray();
    MessageSend addKey = new MessageSend();
    FieldReference thisDotKeyField = new FieldReference(keyFieldName, 0L);
    thisDotKeyField.receiver = new ThisReference(0, 0);
    addKey.receiver = thisDotKeyField;//from   w  ww.jav a2  s .  c o m
    addKey.selector = new char[] { 'a', 'd', 'd' };
    addKey.arguments = new Expression[] { keyArg };

    MessageSend valueArg = new MessageSend();
    valueArg.receiver = new SingleNameReference(entryName, 0L);
    valueArg.selector = "getValue".toCharArray();
    MessageSend addValue = new MessageSend();
    FieldReference thisDotValueField = new FieldReference(valueFieldName, 0L);
    thisDotValueField.receiver = new ThisReference(0, 0);
    addValue.receiver = thisDotValueField;
    addValue.selector = new char[] { 'a', 'd', 'd' };
    addValue.arguments = new Expression[] { valueArg };

    LocalDeclaration elementVariable = new LocalDeclaration(entryName, 0, 0);
    elementVariable.type = forEachType;
    ForeachStatement forEach = new ForeachStatement(elementVariable, 0);
    MessageSend invokeEntrySet = new MessageSend();
    invokeEntrySet.selector = new char[] { 'e', 'n', 't', 'r', 'y', 'S', 'e', 't' };
    invokeEntrySet.receiver = new SingleNameReference(data.getPluralName(), 0L);
    forEach.collection = invokeEntrySet;
    Block forEachContent = new Block(0);
    forEachContent.statements = new Statement[] { addKey, addValue };
    forEach.action = forEachContent;
    statements.add(forEach);
    if (returnStatement != null)
        statements.add(returnStatement);

    md.statements = statements.toArray(new Statement[statements.size()]);

    TypeReference paramType = new QualifiedTypeReference(JAVA_UTIL_MAP, NULL_POSS);
    paramType = addTypeArgs(2, true, builderType, paramType, data.getTypeArgs());
    Argument param = new Argument(data.getPluralName(), 0, paramType, 0);
    md.arguments = new Argument[] { param };
    md.returnType = returnType;
    md.selector = fluent ? data.getPluralName()
            : HandlerUtil.buildAccessorName("putAll", new String(data.getPluralName())).toCharArray();

    data.setGeneratedByRecursive(md);
    injectMethod(builderType, md);
}

From source file:org.eclipse.jdt.internal.compiler.parser.Parser.java

License:Open Source License

protected void consumeEnhancedForStatementHeaderInit(boolean hasModifiers) {
    TypeReference type;/* w  ww.  j  a  v  a  2  s  . co m*/

    char[] identifierName = this.identifierStack[this.identifierPtr];
    long namePosition = this.identifierPositionStack[this.identifierPtr];

    LocalDeclaration localDeclaration = createLocalDeclaration(identifierName, (int) (namePosition >>> 32),
            (int) namePosition);
    localDeclaration.declarationSourceEnd = localDeclaration.declarationEnd;

    int extraDims = this.intStack[this.intPtr--];
    this.identifierPtr--;
    this.identifierLengthPtr--;
    // remove fake modifiers/modifiers start
    int declarationSourceStart = 0;
    int modifiersValue = 0;
    if (hasModifiers) {
        declarationSourceStart = this.intStack[this.intPtr--];
        modifiersValue = this.intStack[this.intPtr--];
    } else {
        this.intPtr -= 2;
    }

    type = getTypeReference(this.intStack[this.intPtr--] + extraDims); // type dimension

    // consume annotations
    int length;
    if ((length = this.expressionLengthStack[this.expressionLengthPtr--]) != 0) {
        System.arraycopy(this.expressionStack, (this.expressionPtr -= length) + 1,
                localDeclaration.annotations = new Annotation[length], 0, length);
    }
    if (hasModifiers) {
        localDeclaration.declarationSourceStart = declarationSourceStart;
        localDeclaration.modifiers = modifiersValue;
    } else {
        localDeclaration.declarationSourceStart = type.sourceStart;
    }
    localDeclaration.type = type;

    ForeachStatement iteratorForStatement = new ForeachStatement(localDeclaration,
            this.intStack[this.intPtr--]);
    pushOnAstStack(iteratorForStatement);

    iteratorForStatement.sourceEnd = localDeclaration.declarationSourceEnd;
}

From source file:org.eclipse.objectteams.otdt.internal.core.compiler.util.AstGenerator.java

License:Open Source License

public ForeachStatement foreach(LocalDeclaration variable, Expression collection, Statement body) {
    ForeachStatement foreach = new ForeachStatement(variable, this.sourceStart);
    foreach.collection = collection;//  w  w  w .j av a  2 s .com
    foreach.action = body;
    if (this.sourceLevel < ClassFileConstants.JDK1_5)
        foreach.markRaw();
    return foreach;
}

From source file:org.nabucco.framework.mda.template.java.extract.statement.JavaAstStatementExtractorVisitor.java

License:Open Source License

@Override
public boolean visit(ForeachStatement forStatement, BlockScope scope) {

    LocalDeclaration elementVariable = copy(forStatement.elementVariable, scope);

    ForeachStatement foreachCopy = new ForeachStatement(elementVariable, forStatement.sourceStart);

    foreachCopy.action = copy(forStatement.action, scope);
    foreachCopy.collection = copy(forStatement.collection, scope);

    this.statement = foreachCopy;

    return false;
}