@NotNull public final <T extends AstNode> AstNodeCollection<T> getChildrenByRole(final Role<T> role) { return new AstNodeCollection<>(this, role); }
static void applyTypeArguments(final AstType baseType, final List<AstType> typeArguments) { if (baseType instanceof SimpleType) { final SimpleType st = (SimpleType) baseType; st.getTypeArguments().addAll(typeArguments); } }
public final void setName(final String name) { if (name == null) { getChildrenByRole(Roles.IDENTIFIER).clear(); return; } final String[] parts = name.split("\\."); final Identifier[] identifiers = new Identifier[parts.length]; for (int i = 0; i < identifiers.length; i++) { identifiers[i] = Identifier.create(parts[i]); } getChildrenByRole(Roles.IDENTIFIER).replaceWith(ArrayUtilities.asUnmodifiableList(identifiers)); }
private static boolean lambdaNeedsParenthesis(final LambdaExpression lambda) { return lambda.getParameters().size() != 1 || !lambda.getParameters().firstOrNullObject().getType().isNull(); }
itemDeclaration.getVariables().firstOrNullObject().getUserData(Keys.VARIABLE) ); ((BlockStatement) node.getParent()).getStatements().insertBefore(loop, forEach); ((BlockStatement) forEach.getParent()).getStatements().insertBefore(forEach, node); forEach.replaceWith(loop); return null; bodyStatements.clear(); bodyStatements.add(itemStatement); bodyStatements.add(statement);
final AstNodeCollection<CaseLabel> caseLabels = section.getCaseLabels(); if (caseLabels.isEmpty() || caseLabels.hasSingleElement() && caseLabels.firstOrNullObject().isNull()) { final Match m3 = CASE_BODY_PATTERN.match(section.getStatements().firstOrNullObject()); caseLabels.clear(); test.remove(); caseLabels.add(new CaseLabel(stringValue)); defaultSection.getCaseLabels().add(new CaseLabel()); defaultSection.getStatements().add(defaultBreak); sections.add(defaultSection);
parentSwitch.getSwitchSections().insertBefore(targetSection, fallThroughSection); label.remove(); if (fallThroughBlock.getStatements().isEmpty()) { fallThroughBlock.remove(); if (parentBlock.getStatements().isEmpty()) { parentBlock.remove(); blockStatements.add((Statement) node); newBlock.getStatements().add(new BreakStatement(Expression.MYSTERY_OFFSET)); if (newBlock.getStatements().hasSingleElement() && AstNode.isLoop(newBlock.getStatements().firstOrNullObject())) { final Statement loop = newBlock.getStatements().firstOrNullObject(); parent.getStatements().add(insertedStatement);
@Override public Void visitObjectCreationExpression(final ObjectCreationExpression node, final Void data) { final AstNodeCollection<Expression> arguments = node.getArguments(); if (arguments.isEmpty() || arguments.hasSingleElement()) { final Expression firstArgument; if (arguments.hasSingleElement()) { final Match m = _stringBuilderArgumentPattern.match(arguments.firstOrNullObject()); if (!m.success()) { return super.visitObjectCreationExpression(node, data); } firstArgument = firstOrDefault(m.<Expression>get("firstArgument")); } else { firstArgument = null; } final TypeReference typeReference = node.getType().toTypeReference(); if (typeReference != null && isStringBuilder(typeReference)) { convertStringBuilderToConcatenation(node, firstArgument); } } return super.visitObjectCreationExpression(node, data); }
@Override public final boolean matches(final INode other, final Match match) { if (other instanceof AstNode) { final INode lastInGroup = lastOrDefault(match.get(_referencedGroupName)); if (lastInGroup instanceof VariableDeclarationStatement) { final VariableDeclarationStatement referenced = (VariableDeclarationStatement) lastInGroup; final AstNodeCollection<VariableInitializer> variables = referenced.getVariables(); return variables.hasSingleElement() && matchString( variables.firstOrNullObject().getName(), ((AstNode) other).getChildByRole(Roles.IDENTIFIER).getName() ); } } return false; } }
private ConstructorDeclaration createConstructor(final MethodDefinition method) { final ConstructorDeclaration astMethod = new ConstructorDeclaration(); EntityDeclaration.setModifiers( astMethod, Flags.asModifierSet(scrubAccessModifiers(method.getFlags() & Flags.ConstructorFlags)) ); astMethod.setName(method.getDeclaringType().getName()); astMethod.getParameters().addAll(createParameters(method.getParameters())); astMethod.getTypeParameters().addAll(createTypeParameters(method.getGenericParameters())); astMethod.setBody(createMethodBody(method, astMethod.getParameters())); astMethod.putUserData(Keys.METHOD_DEFINITION, method); astMethod.putUserData(Keys.MEMBER_REFERENCE, method); for (final CustomAnnotation annotation : method.getAnnotations()) { astMethod.getAnnotations().add(createAnnotation(annotation)); } for (final TypeReference thrownType : method.getThrownTypes()) { astMethod.addChild(convertType(thrownType), Roles.THROWN_TYPE); } return astMethod; }
declaration.getVariables().firstOrNullObject().putUserData(Keys.VARIABLE, variable); declaration.getVariables().firstOrNullObject().setInitializer( AstBuilder.makeDefaultValue(variable.getType()) ); block.getStatements().insertBefore(insertionPoint, declaration); declaration.getVariables().add(initializer);
@NotNull protected List<TypeReference> getTypes(final AstNodeCollection<? extends AstNode> nodes) { if (nodes == null || nodes.isEmpty()) { return Collections.emptyList(); } final List<TypeReference> types = new ArrayList<>(); for (final AstNode node : nodes) { final TypeReference nodeType = getType(node); if (nodeType == null) { return Collections.emptyList(); } types.add(nodeType); } return types; }
final Match m3 = CASE_BODY_PATTERN.match(section.getStatements().firstOrNullObject()); s.getCaseLabels().insertAfter(insertionPoint, newLabel); insertionPoint = newLabel;
public T firstOrNullObject() { return firstOrNullObject(null); }
public BlockStatement(final Iterable<Statement> statements) { super(Expression.MYSTERY_OFFSET); if (statements != null) { for (final Statement statement : statements) { getStatements().add(statement); } } }
@Override public boolean remove(final Object o) { if (contains(o)) { ((AstNode) o).remove(); return true; } return false; }
statements.insertBefore(insertionPoint, declaration);
@Override public Void visitArrayInitializerExpression(final ArrayInitializerExpression node, final Void data) { super.visitArrayInitializerExpression(node, data); final ArrayCreationExpression creation = firstOrDefault(ofType(node.getAncestors(), ArrayCreationExpression.class)); if (creation == null || !creation.getAdditionalArraySpecifiers().hasSingleElement()) { return null; } for (final Expression element : node.getElements()) { addCastForAssignment(creation.getType(), element); } return null; }
itemDeclaration.getVariables().firstOrNullObject().getUserData(Keys.VARIABLE) ); ((BlockStatement) node.getParent()).getStatements().insertBefore(loop, forEach); ((BlockStatement) forEach.getParent()).getStatements().insertBefore(forEach, node); forEach.replaceWith(loop); return null; bodyStatements.clear(); bodyStatements.add(itemStatement); bodyStatements.add(statement);