get rid of GrParameter.getDefaultInitializer(). Use getInitializerGroovy() instead.

move setInitializer into base GrVariable
This commit is contained in:
Max Medvedev
2012-10-26 10:25:24 +04:00
parent 6bc1732c6b
commit a3b370f46f
21 changed files with 65 additions and 58 deletions
@@ -449,7 +449,7 @@ public class GroovyParameterInfoHandler implements ParameterInfoHandlerWithTabAc
GrParameter grParam = (GrParameter)param;
GroovyPresentationUtil.appendParameterPresentation(grParam, substitutor, true, buffer);
final GrExpression initializer = grParam.getDefaultInitializer();
final GrExpression initializer = grParam.getInitializerGroovy();
if (initializer != null) {
buffer.append(" = ").append(initializer.getText());
}
@@ -20,7 +20,6 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.plugins.groovy.extensions.NamedArgumentDescriptor;
import org.jetbrains.plugins.groovy.lang.groovydoc.psi.api.GrDocCommentOwner;
import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrExpression;
import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.members.GrAccessorMethod;
import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.members.GrMember;
@@ -44,7 +43,5 @@ public interface GrField extends GrVariable, GrMember, PsiField, GrTopLevelDefin
Map<String, NamedArgumentDescriptor> getNamedParameters();
void clearCaches();
void setInitializerGroovy(GrExpression initializer);
}
@@ -59,4 +59,6 @@ public interface GrVariable extends PsiVariable, GrNamedElement {
@Nullable
GrModifierList getModifierList();
void setInitializerGroovy(GrExpression initializer);
}
@@ -43,7 +43,7 @@ public interface GrParameter extends PsiParameter, GrVariable, GrCondition {
GrTypeElement getTypeElementGroovy();
@Nullable
GrExpression getDefaultInitializer();
GrExpression getInitializerGroovy();
@NotNull
GrModifierList getModifierList();
@@ -461,10 +461,10 @@ public class PsiImplUtil {
for (GrParameter p : parameters) {
final GrTypeElement declaredType = p.getTypeElementGroovy();
if ((declaredType == null || declaredType.getType().equalsToText(CommonClassNames.JAVA_LANG_STRING + "[]")) &&
p.getDefaultInitializer() == null) {
p.getInitializerGroovy() == null) {
args_count++;
}
if (p.getDefaultInitializer() != null) optional_count++;
if (p.getInitializerGroovy() != null) optional_count++;
}
return optional_count == parameters.length - 1 && args_count == 1;
@@ -192,30 +192,6 @@ public class GrFieldImpl extends GrVariableBaseImpl<GrFieldStub> implements GrFi
myGetters = null;
}
@Override
public void setInitializerGroovy(GrExpression initializer) {
GrExpression oldInitializer = getInitializerGroovy();
if (initializer == null) {
if (oldInitializer != null) {
oldInitializer.delete();
PsiElement assign = findChildByType(GroovyTokenTypes.mASSIGN);
if (assign != null) {
assign.delete();
}
}
return;
}
if (oldInitializer != null) {
oldInitializer.replaceWithExpression(initializer, true);
}
else {
getNode().addLeaf(GroovyTokenTypes.mASSIGN, "=", getNode().getLastChildNode());
addAfter(initializer, getLastChild());
}
}
@NotNull
public GrAccessorMethod[] getGetters() {
if (myGetters == null) {
@@ -321,4 +321,32 @@ public abstract class GrVariableBaseImpl<T extends StubElement> extends GrStubEl
}
super.deleteChildInternal(child);
}
@Override
public void setInitializerGroovy(GrExpression initializer) {
if (getParent() instanceof GrTupleDeclaration) {
throw new UnsupportedOperationException("don't invoke 'setInitializer()' for tuple declaration");
}
GrExpression oldInitializer = getInitializerGroovy();
if (initializer == null) {
if (oldInitializer != null) {
oldInitializer.delete();
PsiElement assign = findChildByType(GroovyTokenTypes.mASSIGN);
if (assign != null) {
assign.delete();
}
}
return;
}
if (oldInitializer != null) {
oldInitializer.replaceWithExpression(initializer, true);
}
else {
getNode().addLeaf(GroovyTokenTypes.mASSIGN, "=", getNode().getLastChildNode());
addAfter(initializer, getLastChild());
}
}
}
@@ -42,7 +42,6 @@ import org.jetbrains.plugins.groovy.lang.psi.api.statements.params.GrParameter;
import org.jetbrains.plugins.groovy.lang.psi.api.statements.params.GrParameterList;
import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.members.GrMethod;
import org.jetbrains.plugins.groovy.lang.psi.api.types.GrTypeElement;
import org.jetbrains.plugins.groovy.lang.psi.impl.GroovyPsiElementImpl;
import org.jetbrains.plugins.groovy.lang.psi.impl.PsiImplUtil;
import org.jetbrains.plugins.groovy.lang.psi.impl.statements.GrVariableBaseImpl;
import org.jetbrains.plugins.groovy.lang.psi.impl.statements.expressions.TypesUtil;
@@ -131,7 +130,7 @@ public class GrParameterImpl extends GrVariableBaseImpl<GrParameterStub> impleme
private boolean isMainMethodFirstUntypedParameter() {
if (getTypeElementGroovy() != null) return false;
if (!(getParent() instanceof GrParameterList)) return false;
if (getDefaultInitializer() != null) return false;
if (getInitializerGroovy() != null) return false;
GrParameterList parameterList = (GrParameterList)getParent();
if (!(parameterList.getParent() instanceof GrMethod)) return false;
@@ -172,13 +171,8 @@ public class GrParameterImpl extends GrVariableBaseImpl<GrParameterStub> impleme
return findChildByClass(GrTypeElement.class);
}
@Nullable
public GrExpression getDefaultInitializer() {
return GroovyPsiElementImpl.findExpressionChild(this);
}
public boolean isOptional() {
return getDefaultInitializer() != null;
return getInitializerGroovy() != null;
}
@NotNull
@@ -80,7 +80,7 @@ public class ClosureSyntheticParameter extends GrLightParameter implements Navig
}
@Override
public GrExpression getDefaultInitializer() {
public GrExpression getInitializerGroovy() {
return GroovyPsiElementFactory.getInstance(getProject()).createExpressionFromText("null");
}
}
@@ -75,6 +75,12 @@ public class GrLightLocalVariable extends GrLightVariable implements GrVariable
return null;
}
@Override
public void setInitializerGroovy(GrExpression initializer) {
//todo?
throw new UnsupportedOperationException();
}
@NotNull
@Override
public PsiElement getNameIdentifierGroovy() {
@@ -15,7 +15,10 @@
*/
package org.jetbrains.plugins.groovy.lang.psi.impl.synthetic;
import com.intellij.psi.*;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiEllipsisType;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiType;
import com.intellij.psi.impl.light.LightVariableBuilder;
import com.intellij.util.IncorrectOperationException;
import org.jetbrains.annotations.NotNull;
@@ -59,7 +62,7 @@ public class GrLightParameter extends LightVariableBuilder<GrLightParameter> imp
}
@Override
public GrExpression getDefaultInitializer() {
public GrExpression getInitializerGroovy() {
return null;
}
@@ -83,11 +86,6 @@ public class GrLightParameter extends LightVariableBuilder<GrLightParameter> imp
return myOptional;
}
@Override
public GrExpression getInitializerGroovy() {
return null;
}
@Override
public void setType(@Nullable PsiType type) throws IncorrectOperationException {
throw new IncorrectOperationException();
@@ -129,6 +127,12 @@ public class GrLightParameter extends LightVariableBuilder<GrLightParameter> imp
return myModifierList;
}
@Override
public void setInitializerGroovy(GrExpression initializer) {
//todo?
throw new UnsupportedOperationException();
}
@Override
public GrLightParameter setModifiers(String... modifiers) {
GrLightModifierList modifiersList = new GrLightModifierList(getContext());
@@ -45,7 +45,7 @@ public class GrClosureParameterImpl implements GrClosureParameter {
@Nullable
public static GrExpression getDefaultInitializer(PsiParameter parameter) {
return parameter instanceof GrParameter ? ((GrParameter)parameter).getDefaultInitializer() : null;
return parameter instanceof GrParameter ? ((GrParameter)parameter).getInitializerGroovy() : null;
}
public static boolean isParameterOptional(PsiParameter parameter) {
@@ -47,7 +47,7 @@ public class GrMethodDescriptor implements MethodDescriptor<GrParameterInfo, Str
final GrParameter[] parameters = myMethod.getParameters();
for (int i = 0; i < parameters.length; i++) {
GrParameter parameter = parameters[i];
GrExpression initializer = parameter.getDefaultInitializer();
GrExpression initializer = parameter.getInitializerGroovy();
String initializerText = initializer != null ? initializer.getText() : null;
GrParameterInfo info = new GrParameterInfo(parameter.getName(), "", initializerText, parameter.getType(), i, false);
result.add(info);
@@ -46,7 +46,7 @@ public class GrParameterInfo implements JavaParameterInfo {
else {
myTypeWrapper = null;
}
final GrExpression defaultInitializer = parameter.getDefaultInitializer();
final GrExpression defaultInitializer = parameter.getInitializerGroovy();
if (defaultInitializer != null) {
myDefaultInitializer = defaultInitializer.getText();
}
@@ -49,7 +49,7 @@ public class GrTableParameterInfo {
else {
myType = factory.createTypeCodeFragment("", parameter, true, JavaCodeFragmentFactory.ALLOW_VOID | JavaCodeFragmentFactory.ALLOW_ELLIPSIS);
}
final GrExpression defaultInitializer = parameter.getDefaultInitializer();
final GrExpression defaultInitializer = parameter.getInitializerGroovy();
if (defaultInitializer != null) {
myDefaultInitializer = new GroovyCodeFragment(project, defaultInitializer.getText());
}
@@ -83,7 +83,7 @@ public class AnonymousFromMapGenerator {
if (param < allParameters.length) {
final GrParameter opt = actual.remove(param);
args[param] = opt.getDefaultInitializer();
args[param] = opt.getInitializerGroovy();
}
final GrParameter[] parameters = actual.toArray(new GrParameter[actual.size()]);
@@ -108,7 +108,7 @@ class ArgumentListGenerator {
return true;
}
else {
/*final GrExpression initializer = param.getDefaultInitializer();
/*final GrExpression initializer = param.getInitializerGroovy();
if (initializer != null) {
initializer.accept(myExpressionGenerator);
}
@@ -201,7 +201,7 @@ public class ClassItemGeneratorImpl implements ClassItemGenerator {
}
else {
LOG.assertTrue(parameter.isOptional());
final GrExpression initializer = parameter.getDefaultInitializer();
final GrExpression initializer = parameter.getInitializerGroovy();
LOG.assertTrue(initializer != null);
builder.append(initializer.getText());
}
@@ -369,7 +369,7 @@ public class CodeBlockGenerator extends Generator {
if (initialization instanceof GrParameter) {
StringBuilder partBuilder = new StringBuilder();
writeVariableWithoutSemicolonAndInitializer(partBuilder, (GrParameter)initialization, context);
final GrExpression initializer = ((GrParameter)initialization).getDefaultInitializer();
final GrExpression initializer = ((GrParameter)initialization).getInitializerGroovy();
if (initializer != null) {
final ExpressionContext partContext = forContext.copy();
partBuilder.append(" = ");
@@ -495,7 +495,7 @@ public class GroovyInlineMethodUtil {
return (GrExpression)arg;
}
else { //arg is skipped. Parameter is optional
return parameter.getDefaultInitializer();
return parameter.getInitializerGroovy();
}
}
}
@@ -520,7 +520,7 @@ public class GroovyInlineMethodUtil {
}
GrParameter[] parameters = method.getParameters();
for (GrParameter parameter : parameters) {
GrExpression initializer = parameter.getDefaultInitializer();
GrExpression initializer = parameter.getInitializerGroovy();
if (nameFilter.contains(parameter.getName()) && initializer != null) {
replaceAllOccurrencesWithExpression(method, call, initializer, parameter);
}
@@ -52,7 +52,7 @@ class SimpleParameterGen implements ChangeSignatureTestCase.GenParams {
if (oldIndex > -1) {
final GrParameter p = params[oldIndex];
name = p.getName();
final GrExpression initializer = p.getDefaultInitializer();
final GrExpression initializer = p.getInitializerGroovy();
defInitializer = initializer != null ? initializer.getText() : null;
type = p.getDeclaredType();
}