diff --git a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/api/GrArrayInitializer.java b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/api/GrArrayInitializer.java index 497cad84775e..4b496c77b255 100644 --- a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/api/GrArrayInitializer.java +++ b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/api/GrArrayInitializer.java @@ -5,6 +5,9 @@ import com.intellij.psi.PsiElement; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.plugins.groovy.lang.psi.GroovyPsiElement; +import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrExpression; + +import java.util.List; public interface GrArrayInitializer extends GroovyPsiElement { @@ -13,6 +16,9 @@ public interface GrArrayInitializer extends GroovyPsiElement { boolean isEmpty(); + @NotNull + List getExpressions(); + @Nullable PsiElement getRBrace(); } diff --git a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/GrArrayInitializerImpl.kt b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/GrArrayInitializerImpl.kt index 43391ed7b9fe..7c966afb2bfe 100644 --- a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/GrArrayInitializerImpl.kt +++ b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/GrArrayInitializerImpl.kt @@ -9,6 +9,7 @@ import org.jetbrains.plugins.groovy.lang.psi.GroovyElementTypes.T_LBRACE import org.jetbrains.plugins.groovy.lang.psi.GroovyElementVisitor import org.jetbrains.plugins.groovy.lang.psi.api.GrArrayInitializer import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrExpression +import org.jetbrains.plugins.groovy.lang.psi.util.childrenOfType class GrArrayInitializerImpl(node: ASTNode) : GroovyPsiElementImpl(node), GrArrayInitializer { @@ -20,5 +21,7 @@ class GrArrayInitializerImpl(node: ASTNode) : GroovyPsiElementImpl(node), GrArra override fun isEmpty(): Boolean = node.getChildren(TokenSet.ANY).none { it.psi is GrExpression } + override fun getExpressions(): List = childrenOfType() + override fun getRBrace(): PsiElement? = findChildByType(GroovyElementTypes.T_RBRACE) } diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/codeInsight/editorActions/GroovyMoveLeftRightHandler.kt b/plugins/groovy/src/org/jetbrains/plugins/groovy/codeInsight/editorActions/GroovyMoveLeftRightHandler.kt index f7d173ffeb7b..272a978f869c 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/codeInsight/editorActions/GroovyMoveLeftRightHandler.kt +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/codeInsight/editorActions/GroovyMoveLeftRightHandler.kt @@ -4,6 +4,7 @@ package org.jetbrains.plugins.groovy.codeInsight.editorActions import com.intellij.codeInsight.editorActions.moveLeftRight.MoveElementLeftRightHandler import com.intellij.psi.PsiElement import com.intellij.psi.util.PsiTreeUtil.getChildrenOfAnyType +import org.jetbrains.plugins.groovy.lang.psi.api.GrArrayInitializer import org.jetbrains.plugins.groovy.lang.psi.api.GrExpressionList import org.jetbrains.plugins.groovy.lang.psi.api.auxiliary.GrListOrMap import org.jetbrains.plugins.groovy.lang.psi.api.auxiliary.modifiers.GrModifierList @@ -34,6 +35,7 @@ class GroovyMoveLeftRightHandler : MoveElementLeftRightHandler() { is GrTypeParameterList -> element.typeParameters is GrVariableDeclaration -> element.variables is GrExpressionList -> element.expressions.toTypedArray() + is GrArrayInitializer -> element.expressions.toTypedArray() else -> PsiElement.EMPTY_ARRAY } } diff --git a/plugins/groovy/test/org/jetbrains/plugins/groovy/codeInsight/editorActions/GroovyMoveLeftRightHandlerTest.groovy b/plugins/groovy/test/org/jetbrains/plugins/groovy/codeInsight/editorActions/GroovyMoveLeftRightHandlerTest.groovy index f1c96d88499b..6a0c3d459f1f 100644 --- a/plugins/groovy/test/org/jetbrains/plugins/groovy/codeInsight/editorActions/GroovyMoveLeftRightHandlerTest.groovy +++ b/plugins/groovy/test/org/jetbrains/plugins/groovy/codeInsight/editorActions/GroovyMoveLeftRightHandlerTest.groovy @@ -118,4 +118,8 @@ class GroovyMoveLeftRightHandlerTest extends LightGroovyTestCase { void 'test for update'() { doTest 'for (;; 1, 2, 3) {}', 'for (;; 2, 1, 3) {}' } + + void 'test array initializer'() { + doTest 'new int[]{1, 2, 3}', 'new int[]{2, 1, 3}' + } }