Prohibit super calls with default parameters

This commit is contained in:
Michael Bogdanov
2016-01-14 16:15:02 +03:00
parent c48c3fc8ed
commit 9b3d97470f
9 changed files with 103 additions and 13 deletions
@@ -0,0 +1,28 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER -ABSTRACT_SUPER_CALL
abstract class A {
open fun foo(a: String = "default") {
}
final fun foo2(a: String = "default") {
}
abstract fun foo3(a: String = "default")
}
open class B : A() {
fun test() {
super.foo("123")
<!SUPER_CALL_WITH_DEFAULT_PARAMETERS!>super.foo()<!>
super.foo2("123")
<!SUPER_CALL_WITH_DEFAULT_PARAMETERS!>super.foo2()<!>
super.foo3("123")
<!SUPER_CALL_WITH_DEFAULT_PARAMETERS!>super.foo3()<!>
}
override fun foo3(a: String) {
throw UnsupportedOperationException()
}
}
@@ -0,0 +1,22 @@
package
public abstract class A {
public constructor A()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open fun foo(/*0*/ a: kotlin.String = ...): kotlin.Unit
public final fun foo2(/*0*/ a: kotlin.String = ...): kotlin.Unit
public abstract fun foo3(/*0*/ a: kotlin.String = ...): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public open class B : A {
public constructor B()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun foo(/*0*/ a: kotlin.String = ...): kotlin.Unit
public final override /*1*/ /*fake_override*/ fun foo2(/*0*/ a: kotlin.String = ...): kotlin.Unit
public open override /*1*/ fun foo3(/*0*/ a: kotlin.String = ...): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public final fun test(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}