Skip to content

Commit 396f38e

Browse files
Michael NedzelskyMichael Nedzelsky
Michael Nedzelsky
authored and
Michael Nedzelsky
committed
fix check for ambiguous parameter names for overriding methods
1 parent c3d3160 commit 396f38e

File tree

3 files changed

+11
-6
lines changed

3 files changed

+11
-6
lines changed

compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/ValueArgumentsToParametersMapper.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,7 @@
2222
import org.jetbrains.annotations.NotNull;
2323
import org.jetbrains.annotations.Nullable;
2424
import org.jetbrains.kotlin.builtins.functions.FunctionInvokeDescriptor;
25-
import org.jetbrains.kotlin.descriptors.CallableDescriptor;
26-
import org.jetbrains.kotlin.descriptors.ValueParameterDescriptor;
25+
import org.jetbrains.kotlin.descriptors.*;
2726
import org.jetbrains.kotlin.diagnostics.Diagnostic;
2827
import org.jetbrains.kotlin.name.Name;
2928
import org.jetbrains.kotlin.psi.*;
@@ -164,7 +163,8 @@ public ProcessorState processNamedArgument(@NotNull ValueArgument argument) {
164163
));
165164
}
166165

167-
if (candidate.hasStableParameterNames() && nameReference != null && valueParameterDescriptor != null) {
166+
if (candidate.hasStableParameterNames() && nameReference != null && valueParameterDescriptor != null &&
167+
candidate instanceof CallableMemberDescriptor && ((CallableMemberDescriptor)candidate).getKind() == CallableMemberDescriptor.Kind.FAKE_OVERRIDE) {
168168
for (ValueParameterDescriptor parameterFromSuperclass : valueParameterDescriptor.getOverriddenDescriptors()) {
169169
if (OverrideResolver.shouldReportParameterNameOverrideWarning(valueParameterDescriptor, parameterFromSuperclass)) {
170170
report(NAME_FOR_AMBIGUOUS_PARAMETER.on(nameReference));

compiler/testData/diagnostics/tests/namedArguments/namedArgumentsInOverrides.kt

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,10 @@ interface D : C {
1313
override fun foo(<!PARAMETER_NAME_CHANGED_ON_OVERRIDE!>d1<!>: Int, <!PARAMETER_NAME_CHANGED_ON_OVERRIDE!>d2<!>: Double)
1414
}
1515

16-
fun test(d: D) {
17-
d.foo(<!NAME_FOR_AMBIGUOUS_PARAMETER!>d1<!> = 1, <!NAME_FOR_AMBIGUOUS_PARAMETER!>d2<!> = 1.0)
16+
fun test1(d: D) {
17+
d.foo(d1 = 1, d2 = 1.0)
18+
}
19+
20+
fun test2(c: C) {
21+
c.foo(<!NAME_FOR_AMBIGUOUS_PARAMETER!>b1<!> = 1, <!NAME_FOR_AMBIGUOUS_PARAMETER!>b2<!> = 1.0)
1822
}

compiler/testData/diagnostics/tests/namedArguments/namedArgumentsInOverrides.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package
22

3-
public fun test(/*0*/ d: D): kotlin.Unit
3+
public fun test1(/*0*/ d: D): kotlin.Unit
4+
public fun test2(/*0*/ c: C): kotlin.Unit
45

56
public interface A {
67
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean

0 commit comments

Comments
 (0)