diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/ValueParameterDescriptor.java b/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/ValueParameterDescriptor.java index 8b01d2f35e7..262a44541d3 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/ValueParameterDescriptor.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/ValueParameterDescriptor.java @@ -19,6 +19,7 @@ package org.jetbrains.jet.lang.descriptors; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.lang.descriptors.annotations.Annotated; +import org.jetbrains.jet.lang.resolve.name.Name; import org.jetbrains.jet.lang.types.JetType; import java.util.Set; @@ -57,7 +58,7 @@ public interface ValueParameterDescriptor extends VariableDescriptor, Annotated ValueParameterDescriptor getOriginal(); @NotNull - ValueParameterDescriptor copy(DeclarationDescriptor newOwner); + ValueParameterDescriptor copy(DeclarationDescriptor newOwner, Name newName); /** * Parameter p1 overrides p2 iff diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/impl/ValueParameterDescriptorImpl.java b/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/impl/ValueParameterDescriptorImpl.java index 2e52abd0de7..464f1bad64c 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/impl/ValueParameterDescriptorImpl.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/impl/ValueParameterDescriptorImpl.java @@ -111,6 +111,7 @@ public class ValueParameterDescriptorImpl extends VariableDescriptorImpl impleme } @Nullable + @Override public JetType getVarargElementType() { return varargElementType; } @@ -139,8 +140,8 @@ public class ValueParameterDescriptorImpl extends VariableDescriptorImpl impleme @NotNull @Override - public ValueParameterDescriptor copy(@NotNull DeclarationDescriptor newOwner) { - return new ValueParameterDescriptorImpl(newOwner, index, Lists.newArrayList(getAnnotations()), getName(), getType(), hasDefaultValue, varargElementType); + public ValueParameterDescriptor copy(@NotNull DeclarationDescriptor newOwner, @NotNull Name newName) { + return new ValueParameterDescriptorImpl(newOwner, index, Lists.newArrayList(getAnnotations()), newName, getType(), declaresDefaultValue(), varargElementType); } @NotNull diff --git a/idea/src/org/jetbrains/jet/plugin/quickfix/ChangeMemberFunctionSignatureFix.java b/idea/src/org/jetbrains/jet/plugin/quickfix/ChangeMemberFunctionSignatureFix.java index 21e14bf9684..92baa0490f1 100644 --- a/idea/src/org/jetbrains/jet/plugin/quickfix/ChangeMemberFunctionSignatureFix.java +++ b/idea/src/org/jetbrains/jet/plugin/quickfix/ChangeMemberFunctionSignatureFix.java @@ -34,11 +34,11 @@ import org.jetbrains.jet.lang.diagnostics.Diagnostic; import org.jetbrains.jet.lang.psi.JetFile; import org.jetbrains.jet.lang.psi.JetNamedFunction; import org.jetbrains.jet.lang.resolve.BindingContext; -import org.jetbrains.jet.lang.resolve.DescriptorUtils; import org.jetbrains.jet.lang.resolve.VisibilityUtil; import org.jetbrains.jet.lang.resolve.name.Name; import org.jetbrains.jet.lang.resolve.scopes.JetScope; import org.jetbrains.jet.lang.types.JetType; +import org.jetbrains.jet.lang.types.TypeUtils; import org.jetbrains.jet.lang.types.checker.JetTypeChecker; import org.jetbrains.jet.plugin.JetBundle; import org.jetbrains.jet.plugin.actions.JetChangeFunctionSignatureAction; @@ -187,7 +187,13 @@ public class ChangeMemberFunctionSignatureFix extends JetHintAction { + fun f(a: Int, b: R) +} + +class B : A { + override fun f(a: Int, x: T) {} +} diff --git a/idea/testData/quickfix/override/nothingToOverride/afterSwapParametersGenericClass.kt b/idea/testData/quickfix/override/nothingToOverride/afterSwapParametersGenericClass.kt new file mode 100644 index 00000000000..285b28cb7a3 --- /dev/null +++ b/idea/testData/quickfix/override/nothingToOverride/afterSwapParametersGenericClass.kt @@ -0,0 +1,8 @@ +// "Change function signature to 'override fun f(y: S, x: List>)'" "true" +trait A { + fun f(a: Q, b: List>) +} + +class B : A { + override fun f(y: S, x: List>) {} +} diff --git a/idea/testData/quickfix/override/nothingToOverride/beforeAddParameterGenericClass.kt b/idea/testData/quickfix/override/nothingToOverride/beforeAddParameterGenericClass.kt new file mode 100644 index 00000000000..4fae2df2a06 --- /dev/null +++ b/idea/testData/quickfix/override/nothingToOverride/beforeAddParameterGenericClass.kt @@ -0,0 +1,8 @@ +// "Change function signature to 'override fun f(a: Int, x: T)'" "true" +trait A { + fun f(a: Int, b: R) +} + +class B : A { + override fun f(x: T) {} +} diff --git a/idea/testData/quickfix/override/nothingToOverride/beforeSwapParametersGenericClass.kt b/idea/testData/quickfix/override/nothingToOverride/beforeSwapParametersGenericClass.kt new file mode 100644 index 00000000000..b8dac5dbef7 --- /dev/null +++ b/idea/testData/quickfix/override/nothingToOverride/beforeSwapParametersGenericClass.kt @@ -0,0 +1,8 @@ +// "Change function signature to 'override fun f(y: S, x: List>)'" "true" +trait A { + fun f(a: Q, b: List>) +} + +class B : A { + override fun f(x: List>, y: S) {} +} diff --git a/idea/tests/org/jetbrains/jet/plugin/quickfix/QuickFixTestGenerated.java b/idea/tests/org/jetbrains/jet/plugin/quickfix/QuickFixTestGenerated.java index d5fc32546e1..350eaa4bd87 100644 --- a/idea/tests/org/jetbrains/jet/plugin/quickfix/QuickFixTestGenerated.java +++ b/idea/tests/org/jetbrains/jet/plugin/quickfix/QuickFixTestGenerated.java @@ -906,6 +906,11 @@ public class QuickFixTestGenerated extends AbstractQuickFixTest { doTest("idea/testData/quickfix/override/nothingToOverride/beforeAddParameter.kt"); } + @TestMetadata("beforeAddParameterGenericClass.kt") + public void testAddParameterGenericClass() throws Exception { + doTest("idea/testData/quickfix/override/nothingToOverride/beforeAddParameterGenericClass.kt"); + } + @TestMetadata("beforeAddParameterMultiple.kt") public void testAddParameterMultiple() throws Exception { doTest("idea/testData/quickfix/override/nothingToOverride/beforeAddParameterMultiple.kt"); @@ -1000,6 +1005,11 @@ public class QuickFixTestGenerated extends AbstractQuickFixTest { doTest("idea/testData/quickfix/override/nothingToOverride/beforeRemoveParameterTwoTraits.kt"); } + @TestMetadata("beforeSwapParametersGenericClass.kt") + public void testSwapParametersGenericClass() throws Exception { + doTest("idea/testData/quickfix/override/nothingToOverride/beforeSwapParametersGenericClass.kt"); + } + } @TestMetadata("idea/testData/quickfix/override/typeMismatchOnOverride")