blob: 4f8dadf784232c033d1ab46982af952006881f14 [file] [log] [blame]
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;
}
}