K2 opt-in: drop redundant recursive check for overridables

This commit is contained in:
Mikhail Glukhikh
2022-11-21 13:45:32 +01:00
committed by Space Team
parent cd81f22bd3
commit a77750a257
8 changed files with 105 additions and 28 deletions
@@ -0,0 +1,22 @@
@RequiresOptIn
@Target(AnnotationTarget.TYPEALIAS, AnnotationTarget.FUNCTION)
annotation class Marker
class Wrapper<T>
@Marker
typealias TA<T> = Wrapper<T>
open class Base<T> {
@Marker
open fun foo(): T? = null
open fun bar(): <!OPT_IN_USAGE_ERROR!>TA<T><!>? = null
}
class Derived : Base<String>()
fun test(d: Derived) {
d.<!OPT_IN_USAGE_ERROR!>foo<!>()
d.<!OPT_IN_USAGE_ERROR!>bar<!>()
}
@@ -0,0 +1,22 @@
@RequiresOptIn
@Target(AnnotationTarget.TYPEALIAS, AnnotationTarget.FUNCTION)
annotation class Marker
class Wrapper<T>
@Marker
typealias TA<T> = Wrapper<T>
open class Base<T> {
@Marker
open fun foo(): T? = null
open fun bar(): <!OPT_IN_USAGE_ERROR!>TA<!><T>? = null
}
class Derived : Base<String>()
fun test(d: Derived) {
d.<!OPT_IN_USAGE_ERROR!>foo<!>()
d.<!OPT_IN_USAGE_ERROR!>bar<!>()
}
@@ -0,0 +1,36 @@
package
public fun test(/*0*/ d: Derived): kotlin.Unit
public open class Base</*0*/ T> {
public constructor Base</*0*/ T>()
public open fun bar(): TA<T>? /* = Wrapper<T>? */
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
@Marker public open fun foo(): T?
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public final class Derived : Base<kotlin.String> {
public constructor Derived()
public open override /*1*/ /*fake_override*/ fun bar(): TA<kotlin.String>? /* = Wrapper<kotlin.String>? */
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
@Marker public open override /*1*/ /*fake_override*/ fun foo(): kotlin.String?
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@kotlin.RequiresOptIn @kotlin.annotation.Target(allowedTargets = {AnnotationTarget.TYPEALIAS, AnnotationTarget.FUNCTION}) public final annotation class Marker : kotlin.Annotation {
public constructor Marker()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public final class Wrapper</*0*/ T> {
public constructor Wrapper</*0*/ T>()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@Marker public typealias TA</*0*/ T> = Wrapper<T>