List of usage examples for org.eclipse.jdt.internal.compiler.ast ForeachStatement ForeachStatement
public ForeachStatement(LocalDeclaration elementVariable, int start)
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; }