fix KT-9484 Don't allow named arguments for inherited functions with parameter name conflicts

#KT9484 Fixed
This commit is contained in:
Michael Nedzelsky
2015-10-09 01:07:53 +03:00
parent ae15443413
commit b92a06929e
18 changed files with 353 additions and 0 deletions
@@ -0,0 +1,18 @@
interface A {
fun foo(a1: Int, a2: Double)
}
interface B {
fun foo(b1: Int, b2: Double)
}
<!DIFFERENT_NAMES_FOR_THE_SAME_PARAMETER_IN_SUPERTYPES, DIFFERENT_NAMES_FOR_THE_SAME_PARAMETER_IN_SUPERTYPES!>interface C<!> : A, B { // Warning here, this is correct, C.foo has no named parameters
}
interface D : C {
override fun foo(<!PARAMETER_NAME_CHANGED_ON_OVERRIDE!>d1<!>: Int, <!PARAMETER_NAME_CHANGED_ON_OVERRIDE!>d2<!>: Double)
}
fun test(d: D) {
d.foo(<!NAME_FOR_AMBIGUOUS_PARAMETER!>d1<!> = 1, <!NAME_FOR_AMBIGUOUS_PARAMETER!>d2<!> = 1.0)
}