A warning added: parameter names disagree upon override

This should be an error, but there is an issue with Java interop: Java parameters may change names or not have them.
This commit is contained in:
Andrey Breslav
2012-04-27 21:33:48 +04:00
parent 553b99f198
commit 3ee8c5e469
9 changed files with 80 additions and 15 deletions
@@ -0,0 +1,15 @@
trait C {
fun foo(a : Int)
}
trait D {
fun foo(b : Int)
}
trait <!DIFFERENT_NAMES_FOR_THE_SAME_PARAMETER_IN_SUPERTYPES!>E<!> : C, D
trait F : C, D {
override fun foo(<!PARAMETER_NAME_CHANGED_ON_OVERRIDE!>a<!> : Int) {
throw UnsupportedOperationException()
}
}
@@ -0,0 +1,13 @@
trait A {
fun b(a : Int)
}
trait B : A {}
class C1 : A {
override fun b(<!PARAMETER_NAME_CHANGED_ON_OVERRIDE!>b<!> : Int) {}
}
class C2 : B {
override fun b(<!PARAMETER_NAME_CHANGED_ON_OVERRIDE!>b<!> : Int) {}
}
@@ -4,12 +4,10 @@ open class A {
class C : A() {
override fun foo(a : Int = <!DEFAULT_VALUE_NOT_ALLOWED_IN_OVERRIDE!>1<!>) {
super<A>.foo(a)
}
}
class D : A() {
override fun foo(b : Int = <!DEFAULT_VALUE_NOT_ALLOWED_IN_OVERRIDE!>1<!>) {
super<A>.foo(b)
override fun foo(a : Int = <!DEFAULT_VALUE_NOT_ALLOWED_IN_OVERRIDE!>1<!>) {
}
}
@@ -30,14 +30,14 @@ class MyChildClass2<T>(t : T) : MyGenericClass<T>(t) {
}
open class MyClass() : MyTrait<Int>, MyAbstractClass<String>() {
override fun foo(i: Int) = i
override fun bar(s: String) = s
override fun foo(t: Int) = t
override fun bar(t: String) = t
override val pr : String = "1"
}
abstract class MyAbstractClass1 : MyTrait<Int>, MyAbstractClass<String>() {
override fun foo(i: Int) = i
override fun bar(s: String) = s
override fun foo(t: Int) = t
override fun bar(t: String) = t
}
class <!ABSTRACT_MEMBER_NOT_IMPLEMENTED!>MyIllegalGenericClass1<!><T> : MyTrait<T>, MyAbstractClass<T>() {}