package org.jetbrains.plugins.groovy.editor.actions.joinLines; import com.intellij.psi.PsiElement; import com.intellij.util.ArrayUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.plugins.groovy.lang.psi.api.statements.GrStatement; import org.jetbrains.plugins.groovy.lang.psi.api.statements.GrVariable; import org.jetbrains.plugins.groovy.lang.psi.api.statements.GrVariableDeclaration; import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrAssignmentExpression; import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrExpression; import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrReferenceExpression; public class GrVariableJoinLinesHandler extends GrJoinLinesHandlerBase { @Override public int tryJoinStatements(@NotNull GrStatement first, @NotNull GrStatement second) { if (first instanceof GrVariableDeclaration && !((GrVariableDeclaration)first).isTuple() && second instanceof GrAssignmentExpression) { final GrExpression lvalue = ((GrAssignmentExpression)second).getLValue(); final GrExpression rValue = ((GrAssignmentExpression)second).getRValue(); if (lvalue instanceof GrReferenceExpression && rValue != null) { final PsiElement resolved = ((GrReferenceExpression)lvalue).resolve(); if (ArrayUtil.contains(resolved, ((GrVariableDeclaration)first).getVariables())) { assert resolved instanceof GrVariable; if (((GrVariable)resolved).getInitializerGroovy() == null) { ((GrVariable)resolved).setInitializerGroovy(rValue); second.delete(); GrExpression newInitializer = ((GrVariable)resolved).getInitializerGroovy(); assert newInitializer != null; return newInitializer.getTextRange().getEndOffset(); } } } } return CANNOT_JOIN; } }