public static void deleteStatementTail(PsiElement container, @NotNull PsiElement statement) { PsiElement next = statement.getNextSibling(); while (next != null) { final ASTNode node = next.getNode(); final IElementType type = node.getElementType(); if (type == mSEMI) { final PsiElement nnext = next.getNextSibling(); container.deleteChildRange(next, next); next = nnext; } else if (type == mNLS || type == TokenType.WHITE_SPACE && next.getText().contains("\n")) { final String text = next.getText(); final int first = text.indexOf("\n"); final int second = text.indexOf("\n", first + 1); if (second < 0) { container.deleteChildRange(next, next); return; } final String substring = text.substring(second); container .getNode() .replaceChild( node, createSingleLeafElement( type, substring, 0, substring.length(), null, container.getManager())); return; } else { break; } } }
public static boolean hasNamedArguments(@Nullable GrNamedArgumentsOwner list) { if (list == null) return false; for (PsiElement child = list.getFirstChild(); child != null; child = child.getNextSibling()) { if (child instanceof GrNamedArgument) return true; } return false; }
public static void removeVariable(GrVariable variable) { final GrVariableDeclaration varDecl = (GrVariableDeclaration) variable.getParent(); final List<GrVariable> variables = Arrays.asList(varDecl.getVariables()); if (!variables.contains(variable)) { throw new IllegalArgumentException(); } final PsiElement parent = varDecl.getParent(); final ASTNode owner = parent.getNode(); if (variables.size() == 1 && owner != null) { PsiElement next = varDecl.getNextSibling(); // remove redundant semicolons //noinspection ConstantConditions while (next != null && next.getNode() != null && next.getNode().getElementType() == mSEMI) { PsiElement tmpNext = next.getNextSibling(); //noinspection ConstantConditions next.delete(); next = tmpNext; } removeNewLineAfter(varDecl); varDecl.delete(); return; } variable.delete(); }
public static boolean hasClosureArguments(@Nullable GrCall call) { if (call == null) return false; for (PsiElement child = call.getFirstChild(); child != null; child = child.getNextSibling()) { if (child instanceof GrClosableBlock) return true; } return false; }
public static boolean hasExpressionArguments(@Nullable GrArgumentList list) { if (list == null) return false; for (PsiElement child = list.getFirstChild(); child != null; child = child.getNextSibling()) { if (child instanceof GrExpression) return true; } return false; }
public static GrStatement[] getStatements(final GrStatementOwner statementOwner) { List<GrStatement> result = new ArrayList<GrStatement>(); for (PsiElement cur = statementOwner.getFirstChild(); cur != null; cur = cur.getNextSibling()) { if (cur instanceof GrStatement) { result.add((GrStatement) cur); } } return result.toArray(new GrStatement[result.size()]); }
private void buildFlowForClosure(final GrClosableBlock closure) { for (GrParameter parameter : closure.getAllParameters()) { if (myPolicy.isVariableInitialized(parameter)) { addNode(new ReadWriteVariableInstruction(parameter.getName(), parameter, WRITE)); } } addNode(new ReadWriteVariableInstruction("owner", closure.getLBrace(), WRITE)); PsiElement child = closure.getFirstChild(); while (child != null) { if (child instanceof GroovyPsiElement) { ((GroovyPsiElement) child).accept(this); } child = child.getNextSibling(); } final GrStatement[] statements = closure.getStatements(); if (statements.length > 0) { handlePossibleReturn(statements[statements.length - 1]); } }