use of org.jetbrains.plugins.groovy.lang.psi.api.statements.params.GrParameterList in project intellij-community by JetBrains.
the class GroovyCompletionUtil method isInPossibleClosureParameter.
public static boolean isInPossibleClosureParameter(PsiElement position) {
//Closure cl={String x, <caret>...
if (position == null)
return false;
if (position instanceof PsiWhiteSpace || position.getNode().getElementType() == GroovyTokenTypes.mNLS) {
position = FilterPositionUtil.searchNonSpaceNonCommentBack(position);
}
boolean hasCommas = false;
while (position != null) {
PsiElement parent = position.getParent();
if (parent instanceof GrVariable) {
PsiElement prev = FilterPositionUtil.searchNonSpaceNonCommentBack(parent);
hasCommas = prev != null && prev.getNode().getElementType() == GroovyTokenTypes.mCOMMA;
}
if (parent instanceof GrClosableBlock) {
PsiElement sibling = position.getPrevSibling();
while (sibling != null) {
if (sibling instanceof GrParameterList) {
return hasCommas;
}
boolean isComma = sibling instanceof LeafPsiElement && GroovyTokenTypes.mCOMMA == ((LeafPsiElement) sibling).getElementType();
hasCommas |= isComma;
if (isComma || sibling instanceof PsiWhiteSpace || sibling instanceof PsiErrorElement || sibling instanceof GrVariableDeclaration || sibling instanceof GrReferenceExpression && !((GrReferenceExpression) sibling).isQualified()) {
sibling = sibling.getPrevSibling();
} else {
return false;
}
}
return false;
}
position = parent;
}
return false;
}
use of org.jetbrains.plugins.groovy.lang.psi.api.statements.params.GrParameterList in project intellij-community by JetBrains.
the class GrMethodParametersFixer method apply.
@Override
public void apply(@NotNull Editor editor, @NotNull GroovySmartEnterProcessor processor, @NotNull PsiElement psiElement) {
if (psiElement instanceof GrParameterList && psiElement.getParent() instanceof GrMethod) {
PsiElement rParenth = psiElement.getNextSibling();
if (rParenth == null)
return;
// [todo] ends with comma
if (!")".equals(rParenth.getText())) {
int offset;
GrParameterList list = (GrParameterList) psiElement;
final GrParameter[] params = list.getParameters();
if (params == null || params.length == 0) {
offset = list.getTextRange().getStartOffset() + 1;
} else {
offset = params[params.length - 1].getTextRange().getEndOffset();
}
editor.getDocument().insertString(offset, ")");
}
}
}
Aggregations