Refactoring: Represent call-site default value of JetParameterInfo as JetExpression

This commit is contained in:
Alexey Sedunov
2015-04-21 21:17:31 +03:00
parent 8918ddbb0a
commit 720e696f6b
12 changed files with 114 additions and 41 deletions
@@ -151,7 +151,7 @@ public class AddFunctionParametersFix extends ChangeFunctionSignatureFix {
typesToShorten.add(parameterInfo.getOriginalType()); typesToShorten.add(parameterInfo.getOriginalType());
if (expression != null) { if (expression != null) {
parameterInfo.setDefaultValueForCall(expression.getText()); parameterInfo.setDefaultValueForCall(expression);
} }
descriptor.addParameter(parameterInfo); descriptor.addParameter(parameterInfo);
@@ -72,7 +72,7 @@ public class ChangeFunctionLiteralSignatureFix extends ChangeFunctionSignatureFi
descriptor.clearNonReceiverParameters(); descriptor.clearNonReceiverParameters();
for (JetType type : parameterTypes) { for (JetType type : parameterTypes) {
String name = JetNameSuggester.suggestNames(type, validator, "param")[0]; String name = JetNameSuggester.suggestNames(type, validator, "param")[0];
descriptor.addParameter(new JetParameterInfo(-1, name, type, null, "", JetValVar.None, null)); descriptor.addParameter(new JetParameterInfo(-1, name, type, null, null, JetValVar.None, null));
} }
return null; return null;
} }
@@ -120,7 +120,7 @@ public abstract class ChangeFunctionSignatureFix extends JetIntentionAction<PsiE
JetExpression expression = argument.getArgumentExpression(); JetExpression expression = argument.getArgumentExpression();
JetType type = expression != null ? bindingContext.getType(expression) : null; JetType type = expression != null ? bindingContext.getType(expression) : null;
type = type != null ? type : KotlinBuiltIns.getInstance().getNullableAnyType(); type = type != null ? type : KotlinBuiltIns.getInstance().getNullableAnyType();
JetParameterInfo parameterInfo = new JetParameterInfo(-1, name, type, null, "", JetValVar.None, null); JetParameterInfo parameterInfo = new JetParameterInfo(-1, name, type, null, null, JetValVar.None, null);
parameterInfo.setCurrentTypeText(IdeDescriptorRenderers.SOURCE_CODE.renderType(type)); parameterInfo.setCurrentTypeText(IdeDescriptorRenderers.SOURCE_CODE.renderType(type));
return parameterInfo; return parameterInfo;
@@ -62,7 +62,7 @@ public object CreateParameterByNamedArgumentActionFactory: JetSingleIntentionAct
val parameterInfo = JetParameterInfo( val parameterInfo = JetParameterInfo(
name = name, name = name,
type = paramType, type = paramType,
defaultValueForCall = argumentExpression.getText() ?: "" defaultValueForCall = argumentExpression
) )
return CreateParameterFromUsageFix(functionDescriptor, context, parameterInfo, argument) return CreateParameterFromUsageFix(functionDescriptor, context, parameterInfo, argument)
} }
@@ -23,6 +23,7 @@ import com.intellij.refactoring.changeSignature.ParameterTableModelBase;
import com.intellij.refactoring.changeSignature.ParameterTableModelItemBase; import com.intellij.refactoring.changeSignature.ParameterTableModelItemBase;
import com.intellij.util.ui.ColumnInfo; import com.intellij.util.ui.ColumnInfo;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import org.jetbrains.kotlin.psi.JetExpression;
import org.jetbrains.kotlin.psi.JetPsiFactory; import org.jetbrains.kotlin.psi.JetPsiFactory;
import static org.jetbrains.kotlin.psi.PsiPackage.JetPsiFactory; import static org.jetbrains.kotlin.psi.PsiPackage.JetPsiFactory;
@@ -43,11 +44,15 @@ public abstract class JetCallableParameterTableModel extends ParameterTableModel
@Override @Override
protected ParameterTableModelItemBase<JetParameterInfo> createRowItem(@Nullable JetParameterInfo parameterInfo) { protected ParameterTableModelItemBase<JetParameterInfo> createRowItem(@Nullable JetParameterInfo parameterInfo) {
if (parameterInfo == null) { if (parameterInfo == null) {
parameterInfo = new JetParameterInfo(-1, "", null, null, "", JetValVar.None, null); parameterInfo = new JetParameterInfo(-1, "", null, null, null, JetValVar.None, null);
} }
JetPsiFactory psiFactory = JetPsiFactory(project); JetPsiFactory psiFactory = JetPsiFactory(project);
PsiCodeFragment paramTypeCodeFragment = psiFactory.createTypeCodeFragment(parameterInfo.getTypeText(), myTypeContext); PsiCodeFragment paramTypeCodeFragment = psiFactory.createTypeCodeFragment(parameterInfo.getTypeText(), myTypeContext);
PsiCodeFragment defaultValueCodeFragment = psiFactory.createExpressionCodeFragment(parameterInfo.getDefaultValueForCall(), myDefaultValueContext); JetExpression defaultValueForCall = parameterInfo.getDefaultValueForCall();
PsiCodeFragment defaultValueCodeFragment = psiFactory.createExpressionCodeFragment(
defaultValueForCall != null ? defaultValueForCall.getText() : "",
myDefaultValueContext
);
return new ParameterTableModelItemBase<JetParameterInfo>(parameterInfo, paramTypeCodeFragment, defaultValueCodeFragment) { return new ParameterTableModelItemBase<JetParameterInfo>(parameterInfo, paramTypeCodeFragment, defaultValueCodeFragment) {
@Override @Override
public boolean isEllipsisType() { public boolean isEllipsisType() {
@@ -17,10 +17,8 @@
package org.jetbrains.kotlin.idea.refactoring.changeSignature package org.jetbrains.kotlin.idea.refactoring.changeSignature
import com.intellij.lang.Language import com.intellij.lang.Language
import com.intellij.psi.PsiElement import com.intellij.lang.java.JavaLanguage
import com.intellij.psi.PsiMethod import com.intellij.psi.*
import com.intellij.psi.PsiModifier
import com.intellij.psi.PsiType
import com.intellij.refactoring.changeSignature.* import com.intellij.refactoring.changeSignature.*
import com.intellij.usageView.UsageInfo import com.intellij.usageView.UsageInfo
import com.intellij.util.VisibilityUtil import com.intellij.util.VisibilityUtil
@@ -34,6 +32,7 @@ import org.jetbrains.kotlin.builtins.KotlinBuiltIns
import org.jetbrains.kotlin.lexer.JetTokens import org.jetbrains.kotlin.lexer.JetTokens
import org.jetbrains.kotlin.idea.JetLanguage import org.jetbrains.kotlin.idea.JetLanguage
import org.jetbrains.kotlin.idea.caches.resolve.* import org.jetbrains.kotlin.idea.caches.resolve.*
import org.jetbrains.kotlin.idea.core.refactoring.j2k
import org.jetbrains.kotlin.idea.refactoring.changeSignature.usages.JetFunctionDefinitionUsage import org.jetbrains.kotlin.idea.refactoring.changeSignature.usages.JetFunctionDefinitionUsage
import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers
import java.util.HashMap import java.util.HashMap
@@ -255,7 +254,7 @@ public class JetChangeInfo(
else -> -1 else -> -1
} }
ParameterInfoImpl(javaOldIndex, info.getName(), type, info.defaultValueForCall) ParameterInfoImpl(javaOldIndex, info.getName(), type, info.defaultValueForCall?.getText() ?: "")
}.copyToArray() }.copyToArray()
val returnType = if (isPrimaryMethodUpdated) currentPsiMethod.getReturnType() else PsiType.VOID val returnType = if (isPrimaryMethodUpdated) currentPsiMethod.getReturnType() else PsiType.VOID
@@ -298,10 +297,18 @@ public fun ChangeInfo.toJetChangeInfo(originalChangeSignatureDescriptor: JetMeth
val oldIndex = info.getOldIndex() val oldIndex = info.getOldIndex()
val currentType = parameterDescriptors[i].getType() val currentType = parameterDescriptors[i].getType()
val defaultValueText = info.getDefaultValue()
val defaultValueExpr = if (getLanguage().`is`(JavaLanguage.INSTANCE) && !defaultValueText.isNullOrEmpty()) {
PsiElementFactory.SERVICE.getInstance(method.getProject())
.createExpressionFromText(defaultValueText!!, null)
.j2k(originalChangeSignatureDescriptor.baseDeclaration)
}
else null
with(JetParameterInfo(originalIndex = oldIndex, with(JetParameterInfo(originalIndex = oldIndex,
name = info.getName(), name = info.getName(),
type = if (oldIndex >= 0) originalParameterDescriptors[oldIndex].getType() else currentType, type = if (oldIndex >= 0) originalParameterDescriptors[oldIndex].getType() else currentType,
defaultValueForCall = info.getDefaultValue() ?: "")) { defaultValueForCall = defaultValueExpr)) {
currentTypeText = IdeDescriptorRenderers.SOURCE_CODE.renderType(currentType) currentTypeText = IdeDescriptorRenderers.SOURCE_CODE.renderType(currentType)
this this
} }
@@ -54,6 +54,7 @@ import org.jetbrains.kotlin.descriptors.Visibilities;
import org.jetbrains.kotlin.descriptors.Visibility; import org.jetbrains.kotlin.descriptors.Visibility;
import org.jetbrains.kotlin.idea.JetFileType; import org.jetbrains.kotlin.idea.JetFileType;
import org.jetbrains.kotlin.idea.refactoring.JetRefactoringBundle; import org.jetbrains.kotlin.idea.refactoring.JetRefactoringBundle;
import org.jetbrains.kotlin.psi.JetExpressionCodeFragment;
import org.jetbrains.kotlin.psi.JetTypeCodeFragment; import org.jetbrains.kotlin.psi.JetTypeCodeFragment;
import org.jetbrains.kotlin.types.JetType; import org.jetbrains.kotlin.types.JetType;
import org.jetbrains.kotlin.idea.refactoring.changeSignature.JetMethodDescriptor.Kind; import org.jetbrains.kotlin.idea.refactoring.changeSignature.JetMethodDescriptor.Kind;
@@ -456,7 +457,9 @@ public class JetChangeSignatureDialog extends ChangeSignatureDialogBase<
for (int i = 0; i < parameters.size(); i++) { for (int i = 0; i < parameters.size(); i++) {
JetParameterInfo parameter = parameters.get(i); JetParameterInfo parameter = parameters.get(i);
parameter.setCurrentTypeText(myParametersTableModel.getItems().get(i).typeCodeFragment.getText().trim()); parameter.setCurrentTypeText(myParametersTableModel.getItems().get(i).typeCodeFragment.getText().trim());
parameter.setDefaultValueForCall(myParametersTableModel.getItems().get(i).defaultValueCodeFragment.getText().trim()); JetExpressionCodeFragment codeFragment =
(JetExpressionCodeFragment) myParametersTableModel.getItems().get(i).defaultValueCodeFragment;
parameter.setDefaultValueForCall(codeFragment.getContentElement());
} }
String returnTypeText = myReturnTypeCodeFragment != null ? myReturnTypeCodeFragment.getText().trim() : ""; String returnTypeText = myReturnTypeCodeFragment != null ? myReturnTypeCodeFragment.getText().trim() : "";
@@ -33,7 +33,7 @@ public class JetParameterInfo(
private var name: String, private var name: String,
type: JetType? = null, type: JetType? = null,
var defaultValueForParameter: JetExpression? = null, var defaultValueForParameter: JetExpression? = null,
var defaultValueForCall: String = "", var defaultValueForCall: JetExpression? = null,
var valOrVar: JetValVar = JetValVar.None, var valOrVar: JetValVar = JetValVar.None,
val modifierList: JetModifierList? = null val modifierList: JetModifierList? = null
): ParameterInfo { ): ParameterInfo {
@@ -100,7 +100,8 @@ public class JetFunctionCallUsage extends JetUsageInfo<JetCallElement> {
else else
parametersBuilder.append(','); parametersBuilder.append(',');
String defaultValueText = parameterInfo.getDefaultValueForCall(); JetExpression defaultValueForCall = parameterInfo.getDefaultValueForCall();
String defaultValueText = defaultValueForCall != null ? defaultValueForCall.getText() : "";
if (isNamedCall) { if (isNamedCall) {
String newName = parameterInfo.getInheritedName(callee); String newName = parameterInfo.getInheritedName(callee);
@@ -157,7 +158,7 @@ public class JetFunctionCallUsage extends JetUsageInfo<JetCallElement> {
: oldArgument.asElement()); : oldArgument.asElement());
} }
// TODO: process default arguments in the middle // TODO: process default arguments in the middle
else if (parameterInfo.getDefaultValueForCall().isEmpty()) { else if (parameterInfo.getDefaultValueForCall() == null) {
if (parameterInfo.getDefaultValueForParameter() != null) { if (parameterInfo.getDefaultValueForParameter() != null) {
JetPsiUtil.deleteElementWithDelimiters(newArgument); JetPsiUtil.deleteElementWithDelimiters(newArgument);
} }
@@ -183,9 +184,10 @@ public class JetFunctionCallUsage extends JetUsageInfo<JetCallElement> {
if (newReceiverInfo != null) { if (newReceiverInfo != null) {
ValueArgument receiverArgument = argumentMap.get(newReceiverInfo.getOldIndex()); ValueArgument receiverArgument = argumentMap.get(newReceiverInfo.getOldIndex());
JetExpression extensionReceiverExpression = receiverArgument != null ? receiverArgument.getArgumentExpression() : null; JetExpression extensionReceiverExpression = receiverArgument != null ? receiverArgument.getArgumentExpression() : null;
JetExpression defaultValueForCall = newReceiverInfo.getDefaultValueForCall();
String receiverText = extensionReceiverExpression != null String receiverText = extensionReceiverExpression != null
? extensionReceiverExpression.getText() ? extensionReceiverExpression.getText()
: newReceiverInfo.getDefaultValueForCall(); : defaultValueForCall != null ? defaultValueForCall.getText() : "";
if (receiverText.isEmpty()) { if (receiverText.isEmpty()) {
receiverText = "_"; receiverText = "_";
} }
@@ -125,7 +125,7 @@ fun IntroduceParameterDescriptor.performRefactoring() {
} }
val parameterInfo = JetParameterInfo(name = newParameterName, val parameterInfo = JetParameterInfo(name = newParameterName,
defaultValueForCall = if (withDefaultValue) "" else newArgumentValue.getText(), defaultValueForCall = if (withDefaultValue) null else newArgumentValue,
defaultValueForParameter = if (withDefaultValue) newArgumentValue else null, defaultValueForParameter = if (withDefaultValue) newArgumentValue else null,
valOrVar = valVar) valOrVar = valVar)
parameterInfo.currentTypeText = newParameterTypeText parameterInfo.currentTypeText = newParameterTypeText
@@ -80,6 +80,11 @@ import com.intellij.lang.java.JavaLanguage
import com.intellij.codeInsight.daemon.impl.quickfix.CreateFromUsageUtils import com.intellij.codeInsight.daemon.impl.quickfix.CreateFromUsageUtils
import com.intellij.psi.* import com.intellij.psi.*
import org.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIde import org.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIde
import org.jetbrains.kotlin.idea.j2k.IdeaResolverForConverter
import org.jetbrains.kotlin.idea.j2k.J2kPostProcessor
import org.jetbrains.kotlin.j2k.ConverterSettings
import org.jetbrains.kotlin.j2k.IdeaReferenceSearcher
import org.jetbrains.kotlin.j2k.JavaToKotlinConverter
import org.jetbrains.kotlin.psi.psiUtil.* import org.jetbrains.kotlin.psi.psiUtil.*
fun <T: Any> PsiElement.getAndRemoveCopyableUserData(key: Key<T>): T? { fun <T: Any> PsiElement.getAndRemoveCopyableUserData(key: Key<T>): T? {
@@ -552,3 +557,17 @@ fun createJavaClass(klass: JetClass, targetClass: PsiClass): PsiMember {
return javaClass return javaClass
} }
fun PsiExpression.j2k(postProcessingContext: PsiElement): JetExpression? {
if (getLanguage() != JavaLanguage.INSTANCE) return null
val project = getProject()
val j2kConverter = JavaToKotlinConverter(project,
ConverterSettings.defaultSettings,
IdeaReferenceSearcher,
IdeaResolverForConverter,
J2kPostProcessor(true))
val inputElements = Collections.singletonList(JavaToKotlinConverter.InputElement(this, postProcessingContext))
val text = j2kConverter.elementsToKotlin(inputElements).results.singleOrNull()?.text ?: return null
return JetPsiFactory(getProject()).createExpression(text)
}
@@ -41,6 +41,7 @@ import org.jetbrains.kotlin.idea.test.PluginTestCaseBase;
import org.jetbrains.kotlin.idea.caches.resolve.ResolvePackage; import org.jetbrains.kotlin.idea.caches.resolve.ResolvePackage;
import org.jetbrains.kotlin.idea.refactoring.JetRefactoringBundle; import org.jetbrains.kotlin.idea.refactoring.JetRefactoringBundle;
import org.jetbrains.kotlin.psi.JetElement; import org.jetbrains.kotlin.psi.JetElement;
import org.jetbrains.kotlin.psi.JetPsiFactory;
import org.jetbrains.kotlin.resolve.BindingContext; import org.jetbrains.kotlin.resolve.BindingContext;
import org.jetbrains.kotlin.resolve.dataClassUtils.DataClassUtilsPackage; import org.jetbrains.kotlin.resolve.dataClassUtils.DataClassUtilsPackage;
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode; import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode;
@@ -107,8 +108,9 @@ public class JetChangeSignatureTest extends KotlinCodeInsightTestCase {
public void testAddConstructorVisibility() throws Exception { public void testAddConstructorVisibility() throws Exception {
JetChangeInfo changeInfo = getChangeInfo(); JetChangeInfo changeInfo = getChangeInfo();
changeInfo.setNewVisibility(Visibilities.PROTECTED); changeInfo.setNewVisibility(Visibilities.PROTECTED);
JetPsiFactory psiFactory = new JetPsiFactory(getProject());
JetParameterInfo newParameter = new JetParameterInfo(-1, "x", KotlinBuiltIns.getInstance().getAnyType(), JetParameterInfo newParameter = new JetParameterInfo(-1, "x", KotlinBuiltIns.getInstance().getAnyType(),
null, "12", JetValVar.Val, null); null, psiFactory.createExpression("12"), JetValVar.Val, null);
changeInfo.addParameter(newParameter); changeInfo.addParameter(newParameter);
doTest(changeInfo); doTest(changeInfo);
} }
@@ -172,7 +174,7 @@ public class JetChangeSignatureTest extends KotlinCodeInsightTestCase {
public void testExpressionFunction() throws Exception { public void testExpressionFunction() throws Exception {
JetChangeInfo changeInfo = getChangeInfo(); JetChangeInfo changeInfo = getChangeInfo();
changeInfo.getNewParameters()[0].setName("x1"); changeInfo.getNewParameters()[0].setName("x1");
changeInfo.addParameter(new JetParameterInfo(-1, "y1", KotlinBuiltIns.getInstance().getIntType(), null, "", JetValVar.None, null)); changeInfo.addParameter(new JetParameterInfo(-1, "y1", KotlinBuiltIns.getInstance().getIntType(), null, null, JetValVar.None, null));
doTest(changeInfo); doTest(changeInfo);
} }
@@ -181,14 +183,16 @@ public class JetChangeSignatureTest extends KotlinCodeInsightTestCase {
changeInfo.setNewVisibility(Visibilities.INTERNAL); changeInfo.setNewVisibility(Visibilities.INTERNAL);
changeInfo.setNewParameter(2, changeInfo.getNewParameters()[1]); changeInfo.setNewParameter(2, changeInfo.getNewParameters()[1]);
changeInfo.setNewParameter(1, changeInfo.getNewParameters()[0]); changeInfo.setNewParameter(1, changeInfo.getNewParameters()[0]);
JetParameterInfo newParameter = new JetParameterInfo(-1, "x0", KotlinBuiltIns.getInstance().getNullableAnyType(), null, "null", JetValVar.None, null); JetPsiFactory psiFactory = new JetPsiFactory(getProject());
JetParameterInfo newParameter =
new JetParameterInfo(-1, "x0", KotlinBuiltIns.getInstance().getNullableAnyType(), null, psiFactory.createExpression("null"), JetValVar.None, null);
changeInfo.setNewParameter(0, newParameter); changeInfo.setNewParameter(0, newParameter);
doTest(changeInfo); doTest(changeInfo);
} }
public void testFakeOverride() throws Exception { public void testFakeOverride() throws Exception {
JetChangeInfo changeInfo = getChangeInfo(); JetChangeInfo changeInfo = getChangeInfo();
JetParameterInfo newParameter = new JetParameterInfo(-1, "i", KotlinBuiltIns.getInstance().getIntType(), null, "", JetValVar.None, null); JetParameterInfo newParameter = new JetParameterInfo(-1, "i", KotlinBuiltIns.getInstance().getIntType(), null, null, JetValVar.None, null);
changeInfo.addParameter(newParameter); changeInfo.addParameter(newParameter);
doTest(changeInfo); doTest(changeInfo);
} }
@@ -196,7 +200,7 @@ public class JetChangeSignatureTest extends KotlinCodeInsightTestCase {
public void testFunctionLiteral() throws Exception { public void testFunctionLiteral() throws Exception {
JetChangeInfo changeInfo = getChangeInfo(); JetChangeInfo changeInfo = getChangeInfo();
changeInfo.getNewParameters()[1].setName("y1"); changeInfo.getNewParameters()[1].setName("y1");
changeInfo.addParameter(new JetParameterInfo(-1, "x", KotlinBuiltIns.getInstance().getAnyType(), null, "", JetValVar.None, null)); changeInfo.addParameter(new JetParameterInfo(-1, "x", KotlinBuiltIns.getInstance().getAnyType(), null, null, JetValVar.None, null));
changeInfo.setNewReturnTypeText("Int"); changeInfo.setNewReturnTypeText("Int");
doTest(changeInfo); doTest(changeInfo);
} }
@@ -288,14 +292,16 @@ public class JetChangeSignatureTest extends KotlinCodeInsightTestCase {
public void testOverridesInEnumEntries() throws Exception { public void testOverridesInEnumEntries() throws Exception {
JetChangeInfo changeInfo = getChangeInfo(); JetChangeInfo changeInfo = getChangeInfo();
JetParameterInfo newParameter = new JetParameterInfo(-1, "s", KotlinBuiltIns.getInstance().getStringType(), null, "", JetValVar.None, null); JetParameterInfo newParameter = new JetParameterInfo(-1, "s", KotlinBuiltIns.getInstance().getStringType(), null, null, JetValVar.None, null);
changeInfo.addParameter(newParameter); changeInfo.addParameter(newParameter);
doTest(changeInfo); doTest(changeInfo);
} }
public void testEnumEntriesWithoutSuperCalls() throws Exception { public void testEnumEntriesWithoutSuperCalls() throws Exception {
JetChangeInfo changeInfo = getChangeInfo(); JetChangeInfo changeInfo = getChangeInfo();
JetParameterInfo newParameter = new JetParameterInfo(-1, "n", KotlinBuiltIns.getInstance().getIntType(), null, "1", JetValVar.None, null); JetPsiFactory psiFactory = new JetPsiFactory(getProject());
JetParameterInfo newParameter =
new JetParameterInfo(-1, "n", KotlinBuiltIns.getInstance().getIntType(), null, psiFactory.createExpression("1"), JetValVar.None, null);
changeInfo.addParameter(newParameter); changeInfo.addParameter(newParameter);
doTest(changeInfo); doTest(changeInfo);
} }
@@ -310,16 +316,22 @@ public class JetChangeSignatureTest extends KotlinCodeInsightTestCase {
public void testConstructorJavaUsages() throws Exception { public void testConstructorJavaUsages() throws Exception {
JetChangeInfo changeInfo = getChangeInfo(); JetChangeInfo changeInfo = getChangeInfo();
JetParameterInfo newParameter = new JetParameterInfo(-1, "s", KotlinBuiltIns.getInstance().getStringType(), null, "\"abc\"", JetValVar.None, null); JetPsiFactory psiFactory = new JetPsiFactory(getProject());
JetParameterInfo newParameter =
new JetParameterInfo(-1, "s", KotlinBuiltIns.getInstance().getStringType(), null, psiFactory.createExpression("\"abc\""), JetValVar.None, null);
changeInfo.addParameter(newParameter); changeInfo.addParameter(newParameter);
doTest(changeInfo); doTest(changeInfo);
} }
public void testFunctionJavaUsagesAndOverridesAddParam() throws Exception { public void testFunctionJavaUsagesAndOverridesAddParam() throws Exception {
JetChangeInfo changeInfo = getChangeInfo(); JetChangeInfo changeInfo = getChangeInfo();
changeInfo.addParameter(new JetParameterInfo(-1, "s", KotlinBuiltIns.getInstance().getStringType(), null, "\"abc\"", JetValVar.None, null)); JetPsiFactory psiFactory = new JetPsiFactory(getProject());
changeInfo.addParameter( changeInfo.addParameter(
new JetParameterInfo(-1, "o", KotlinBuiltIns.getInstance().getNullableAnyType(), null, "\"def\"", JetValVar.None, null)); new JetParameterInfo(-1, "s", KotlinBuiltIns.getInstance().getStringType(), null, psiFactory.createExpression("\"abc\""), JetValVar.None, null)
);
changeInfo.addParameter(
new JetParameterInfo(-1, "o", KotlinBuiltIns.getInstance().getNullableAnyType(), null, psiFactory.createExpression("\"def\""), JetValVar.None, null)
);
doTest(changeInfo); doTest(changeInfo);
} }
@@ -555,13 +567,13 @@ public class JetChangeSignatureTest extends KotlinCodeInsightTestCase {
public void testParameterModifiers() throws Exception { public void testParameterModifiers() throws Exception {
JetChangeInfo changeInfo = getChangeInfo(); JetChangeInfo changeInfo = getChangeInfo();
changeInfo.addParameter(new JetParameterInfo(-1, "n", KotlinBuiltIns.getInstance().getIntType(), null, "", JetValVar.None, null)); changeInfo.addParameter(new JetParameterInfo(-1, "n", KotlinBuiltIns.getInstance().getIntType(), null, null, JetValVar.None, null));
doTest(changeInfo); doTest(changeInfo);
} }
public void testFqNameShortening() throws Exception { public void testFqNameShortening() throws Exception {
JetChangeInfo changeInfo = getChangeInfo(); JetChangeInfo changeInfo = getChangeInfo();
JetParameterInfo parameterInfo = new JetParameterInfo(-1, "s", KotlinBuiltIns.getInstance().getAnyType(), null, "", JetValVar.None, null); JetParameterInfo parameterInfo = new JetParameterInfo(-1, "s", KotlinBuiltIns.getInstance().getAnyType(), null, null, JetValVar.None, null);
parameterInfo.setCurrentTypeText("kotlin.String"); parameterInfo.setCurrentTypeText("kotlin.String");
changeInfo.addParameter(parameterInfo); changeInfo.addParameter(parameterInfo);
doTest(changeInfo); doTest(changeInfo);
@@ -575,7 +587,7 @@ public class JetChangeSignatureTest extends KotlinCodeInsightTestCase {
public void testParameterListAddParam() throws Exception { public void testParameterListAddParam() throws Exception {
JetChangeInfo changeInfo = getChangeInfo(); JetChangeInfo changeInfo = getChangeInfo();
changeInfo.addParameter(new JetParameterInfo(-1, "l", KotlinBuiltIns.getInstance().getLongType(), null, "", JetValVar.None, null)); changeInfo.addParameter(new JetParameterInfo(-1, "l", KotlinBuiltIns.getInstance().getLongType(), null, null, JetValVar.None, null));
doTest(changeInfo); doTest(changeInfo);
} }
@@ -595,7 +607,9 @@ public class JetChangeSignatureTest extends KotlinCodeInsightTestCase {
public void testAddNewReceiver() throws Exception { public void testAddNewReceiver() throws Exception {
JetChangeInfo changeInfo = getChangeInfo(); JetChangeInfo changeInfo = getChangeInfo();
JetParameterInfo parameterInfo = new JetParameterInfo(-1, "_", KotlinBuiltIns.getInstance().getAnyType(), null, "X(0)", JetValVar.None, null); JetPsiFactory psiFactory = new JetPsiFactory(getProject());
JetParameterInfo parameterInfo =
new JetParameterInfo(-1, "_", KotlinBuiltIns.getInstance().getAnyType(), null, psiFactory.createExpression("X(0)"), JetValVar.None, null);
parameterInfo.setCurrentTypeText("X"); parameterInfo.setCurrentTypeText("X");
changeInfo.setReceiverParameterInfo(parameterInfo); changeInfo.setReceiverParameterInfo(parameterInfo);
doTest(changeInfo); doTest(changeInfo);
@@ -603,7 +617,9 @@ public class JetChangeSignatureTest extends KotlinCodeInsightTestCase {
public void testAddNewReceiverForMember() throws Exception { public void testAddNewReceiverForMember() throws Exception {
JetChangeInfo changeInfo = getChangeInfo(); JetChangeInfo changeInfo = getChangeInfo();
JetParameterInfo parameterInfo = new JetParameterInfo(-1, "_", KotlinBuiltIns.getInstance().getAnyType(), null, "X(0)", JetValVar.None, null); JetPsiFactory psiFactory = new JetPsiFactory(getProject());
JetParameterInfo parameterInfo =
new JetParameterInfo(-1, "_", KotlinBuiltIns.getInstance().getAnyType(), null, psiFactory.createExpression("X(0)"), JetValVar.None, null);
parameterInfo.setCurrentTypeText("X"); parameterInfo.setCurrentTypeText("X");
changeInfo.setReceiverParameterInfo(parameterInfo); changeInfo.setReceiverParameterInfo(parameterInfo);
doTest(changeInfo); doTest(changeInfo);
@@ -611,7 +627,9 @@ public class JetChangeSignatureTest extends KotlinCodeInsightTestCase {
public void testAddNewReceiverForMemberConflict() throws Exception { public void testAddNewReceiverForMemberConflict() throws Exception {
JetChangeInfo changeInfo = getChangeInfo(); JetChangeInfo changeInfo = getChangeInfo();
JetParameterInfo parameterInfo = new JetParameterInfo(-1, "_", KotlinBuiltIns.getInstance().getAnyType(), null, "X(0)", JetValVar.None, null); JetPsiFactory psiFactory = new JetPsiFactory(getProject());
JetParameterInfo parameterInfo =
new JetParameterInfo(-1, "_", KotlinBuiltIns.getInstance().getAnyType(), null, psiFactory.createExpression("X(0)"), JetValVar.None, null);
parameterInfo.setCurrentTypeText("X"); parameterInfo.setCurrentTypeText("X");
changeInfo.setReceiverParameterInfo(parameterInfo); changeInfo.setReceiverParameterInfo(parameterInfo);
doTestConflict(changeInfo); doTestConflict(changeInfo);
@@ -619,7 +637,9 @@ public class JetChangeSignatureTest extends KotlinCodeInsightTestCase {
public void testAddNewReceiverConflict() throws Exception { public void testAddNewReceiverConflict() throws Exception {
JetChangeInfo changeInfo = getChangeInfo(); JetChangeInfo changeInfo = getChangeInfo();
JetParameterInfo parameterInfo = new JetParameterInfo(-1, "_", KotlinBuiltIns.getInstance().getAnyType(), null, "X(0)", JetValVar.None, null); JetPsiFactory psiFactory = new JetPsiFactory(getProject());
JetParameterInfo parameterInfo =
new JetParameterInfo(-1, "_", KotlinBuiltIns.getInstance().getAnyType(), null, psiFactory.createExpression("X(0)"), JetValVar.None, null);
parameterInfo.setCurrentTypeText("X"); parameterInfo.setCurrentTypeText("X");
changeInfo.setReceiverParameterInfo(parameterInfo); changeInfo.setReceiverParameterInfo(parameterInfo);
doTestConflict(changeInfo); doTestConflict(changeInfo);
@@ -730,7 +750,9 @@ public class JetChangeSignatureTest extends KotlinCodeInsightTestCase {
public void testSecondaryConstructor() throws Exception { public void testSecondaryConstructor() throws Exception {
JetChangeInfo changeInfo = getChangeInfo(); JetChangeInfo changeInfo = getChangeInfo();
changeInfo.addParameter(new JetParameterInfo(-1, "s", KotlinBuiltIns.getInstance().getStringType(), null, "\"foo\"", JetValVar.None, null)); JetPsiFactory psiFactory = new JetPsiFactory(getProject());
changeInfo.addParameter(
new JetParameterInfo(-1, "s", KotlinBuiltIns.getInstance().getStringType(), null, psiFactory.createExpression("\"foo\""), JetValVar.None, null));
doTest(changeInfo); doTest(changeInfo);
} }
@@ -754,25 +776,37 @@ public class JetChangeSignatureTest extends KotlinCodeInsightTestCase {
public void testPrimaryConstructorByThisRef() throws Exception { public void testPrimaryConstructorByThisRef() throws Exception {
JetChangeInfo changeInfo = getChangeInfo(); JetChangeInfo changeInfo = getChangeInfo();
changeInfo.addParameter(new JetParameterInfo(-1, "s", KotlinBuiltIns.getInstance().getStringType(), null, "\"foo\"", JetValVar.None, null)); JetPsiFactory psiFactory = new JetPsiFactory(getProject());
changeInfo.addParameter(
new JetParameterInfo(-1, "s", KotlinBuiltIns.getInstance().getStringType(), null, psiFactory.createExpression("\"foo\""), JetValVar.None, null)
);
doTest(changeInfo); doTest(changeInfo);
} }
public void testPrimaryConstructorBySuperRef() throws Exception { public void testPrimaryConstructorBySuperRef() throws Exception {
JetChangeInfo changeInfo = getChangeInfo(); JetChangeInfo changeInfo = getChangeInfo();
changeInfo.addParameter(new JetParameterInfo(-1, "s", KotlinBuiltIns.getInstance().getStringType(), null, "\"foo\"", JetValVar.None, null)); JetPsiFactory psiFactory = new JetPsiFactory(getProject());
changeInfo.addParameter(
new JetParameterInfo(-1, "s", KotlinBuiltIns.getInstance().getStringType(), null, psiFactory.createExpression("\"foo\""), JetValVar.None, null)
);
doTest(changeInfo); doTest(changeInfo);
} }
public void testSecondaryConstructorByThisRef() throws Exception { public void testSecondaryConstructorByThisRef() throws Exception {
JetChangeInfo changeInfo = getChangeInfo(); JetChangeInfo changeInfo = getChangeInfo();
changeInfo.addParameter(new JetParameterInfo(-1, "s", KotlinBuiltIns.getInstance().getStringType(), null, "\"foo\"", JetValVar.None, null)); JetPsiFactory psiFactory = new JetPsiFactory(getProject());
changeInfo.addParameter(
new JetParameterInfo(-1, "s", KotlinBuiltIns.getInstance().getStringType(), null, psiFactory.createExpression("\"foo\""), JetValVar.None, null)
);
doTest(changeInfo); doTest(changeInfo);
} }
public void testSecondaryConstructorBySuperRef() throws Exception { public void testSecondaryConstructorBySuperRef() throws Exception {
JetChangeInfo changeInfo = getChangeInfo(); JetChangeInfo changeInfo = getChangeInfo();
changeInfo.addParameter(new JetParameterInfo(-1, "s", KotlinBuiltIns.getInstance().getStringType(), null, "\"foo\"", JetValVar.None, null)); JetPsiFactory psiFactory = new JetPsiFactory(getProject());
changeInfo.addParameter(
new JetParameterInfo(-1, "s", KotlinBuiltIns.getInstance().getStringType(), null, psiFactory.createExpression("\"foo\""), JetValVar.None, null)
);
doTest(changeInfo); doTest(changeInfo);
} }
@@ -796,7 +830,10 @@ public class JetChangeSignatureTest extends KotlinCodeInsightTestCase {
public void testNoConflictWithReceiverName() throws Exception { public void testNoConflictWithReceiverName() throws Exception {
JetChangeInfo changeInfo = getChangeInfo(); JetChangeInfo changeInfo = getChangeInfo();
changeInfo.addParameter(new JetParameterInfo(-1, "i", KotlinBuiltIns.getInstance().getIntType(), null, "0", JetValVar.None, null)); JetPsiFactory psiFactory = new JetPsiFactory(getProject());
changeInfo.addParameter(
new JetParameterInfo(-1, "i", KotlinBuiltIns.getInstance().getIntType(), null, psiFactory.createExpression("0"), JetValVar.None, null)
);
doTest(changeInfo); doTest(changeInfo);
} }