[tests] Add new (and refactor existing) tests for @SubclassOptInRequired
KT-54617
This commit is contained in:
committed by
Space Team
parent
833edfb209
commit
e6d5df18b8
+32
@@ -0,0 +1,32 @@
|
||||
// FIR_IDENTICAL
|
||||
|
||||
@RequiresOptIn
|
||||
annotation class ApiMarker
|
||||
|
||||
@SubclassOptInRequired(ApiMarker::class)
|
||||
open class OpenKlass
|
||||
|
||||
@SubclassOptInRequired(ApiMarker::class)
|
||||
abstract class AbstractKlass
|
||||
|
||||
@SubclassOptInRequired(ApiMarker::class)
|
||||
interface Interface
|
||||
|
||||
class OuterKlass {
|
||||
|
||||
@SubclassOptInRequired(ApiMarker::class)
|
||||
open class NestedOpenKlass
|
||||
|
||||
@SubclassOptInRequired(ApiMarker::class)
|
||||
abstract class NestedAbstractKlass
|
||||
|
||||
@SubclassOptInRequired(ApiMarker::class)
|
||||
interface NestedInterface
|
||||
|
||||
@SubclassOptInRequired(ApiMarker::class)
|
||||
open inner class InnerOpenKlass
|
||||
|
||||
@SubclassOptInRequired(ApiMarker::class)
|
||||
abstract inner class InnerAbstractKlass
|
||||
|
||||
}
|
||||
+99
@@ -0,0 +1,99 @@
|
||||
// FIR_IDENTICAL
|
||||
|
||||
@RequiresOptIn
|
||||
annotation class ApiMarker
|
||||
|
||||
// final classes are not valid targets for @SubclassOptInRequired
|
||||
|
||||
<!SUBCLASS_OPT_IN_INAPPLICABLE!>@SubclassOptInRequired(ApiMarker::class)<!>
|
||||
class Klass
|
||||
|
||||
<!SUBCLASS_OPT_IN_INAPPLICABLE!>@SubclassOptInRequired(ApiMarker::class)<!>
|
||||
data class DataKlass(val arg: Int)
|
||||
|
||||
<!SUBCLASS_OPT_IN_INAPPLICABLE!>@SubclassOptInRequired(ApiMarker::class)<!>
|
||||
@JvmInline value class ValueKlass(val arg: Int)
|
||||
|
||||
<!SUBCLASS_OPT_IN_INAPPLICABLE!>@SubclassOptInRequired(ApiMarker::class)<!>
|
||||
annotation class AnnotationKlass
|
||||
|
||||
// functional interface is not a valid target for @SubclassOptInRequired
|
||||
|
||||
<!SUBCLASS_OPT_IN_INAPPLICABLE!>@SubclassOptInRequired(ApiMarker::class)<!>
|
||||
fun interface FunctionalInterface { fun func() }
|
||||
|
||||
// enum classes and objects are not valid targets for @SubclassOptInRequired
|
||||
|
||||
<!SUBCLASS_OPT_IN_INAPPLICABLE!>@SubclassOptInRequired(ApiMarker::class)<!>
|
||||
enum class EnumKlass { ENTRY }
|
||||
|
||||
<!SUBCLASS_OPT_IN_INAPPLICABLE!>@SubclassOptInRequired(ApiMarker::class)<!>
|
||||
object Objekt
|
||||
|
||||
// sealed classifiers are not valid targets for @SubclassOptInRequired
|
||||
|
||||
<!SUBCLASS_OPT_IN_INAPPLICABLE!>@SubclassOptInRequired(ApiMarker::class)<!>
|
||||
sealed class SealedKlass
|
||||
|
||||
<!SUBCLASS_OPT_IN_INAPPLICABLE!>@SubclassOptInRequired(ApiMarker::class)<!>
|
||||
sealed interface SealedInterface
|
||||
|
||||
// local classes are not valid targets for @SubclassOptInRequired
|
||||
|
||||
fun foo() {
|
||||
<!SUBCLASS_OPT_IN_INAPPLICABLE!>@SubclassOptInRequired(ApiMarker::class)<!>
|
||||
open class LocalOpenKlass
|
||||
<!SUBCLASS_OPT_IN_INAPPLICABLE!>@SubclassOptInRequired(ApiMarker::class)<!>
|
||||
abstract class LocalAbstractKlass
|
||||
<!SUBCLASS_OPT_IN_INAPPLICABLE!>@SubclassOptInRequired(ApiMarker::class)<!>
|
||||
class LocalKlass
|
||||
<!SUBCLASS_OPT_IN_INAPPLICABLE!>@SubclassOptInRequired(ApiMarker::class)<!>
|
||||
data class LocalDataKlass(val arg: Int)
|
||||
<!SUBCLASS_OPT_IN_INAPPLICABLE!>@SubclassOptInRequired(ApiMarker::class)<!>
|
||||
object {}
|
||||
}
|
||||
|
||||
class OuterKlass {
|
||||
|
||||
// final classes are not valid targets for @SubclassOptInRequired
|
||||
|
||||
<!SUBCLASS_OPT_IN_INAPPLICABLE!>@SubclassOptInRequired(ApiMarker::class)<!>
|
||||
class NestedKlass
|
||||
|
||||
<!SUBCLASS_OPT_IN_INAPPLICABLE!>@SubclassOptInRequired(ApiMarker::class)<!>
|
||||
inner class InnerKlass
|
||||
|
||||
<!SUBCLASS_OPT_IN_INAPPLICABLE!>@SubclassOptInRequired(ApiMarker::class)<!>
|
||||
data class NestedDataKlass(val arg: Int)
|
||||
|
||||
<!SUBCLASS_OPT_IN_INAPPLICABLE!>@SubclassOptInRequired(ApiMarker::class)<!>
|
||||
@JvmInline value class NestedValueKlass(val arg: Int)
|
||||
|
||||
<!SUBCLASS_OPT_IN_INAPPLICABLE!>@SubclassOptInRequired(ApiMarker::class)<!>
|
||||
annotation class NestedAnnotationKlass
|
||||
|
||||
// functional interface is not a valid target for @SubclassOptInRequired
|
||||
|
||||
<!SUBCLASS_OPT_IN_INAPPLICABLE!>@SubclassOptInRequired(ApiMarker::class)<!>
|
||||
fun interface NestedFunctionalInterface { fun func() }
|
||||
|
||||
// enum classes and objects are not valid targets for @SubclassOptInRequired
|
||||
|
||||
<!SUBCLASS_OPT_IN_INAPPLICABLE!>@SubclassOptInRequired(ApiMarker::class)<!>
|
||||
enum class NestedEnumKlass { ENTRY }
|
||||
|
||||
<!SUBCLASS_OPT_IN_INAPPLICABLE!>@SubclassOptInRequired(ApiMarker::class)<!>
|
||||
object NestedObjekt
|
||||
|
||||
<!SUBCLASS_OPT_IN_INAPPLICABLE!>@SubclassOptInRequired(ApiMarker::class)<!>
|
||||
companion object
|
||||
|
||||
// sealed classifiers are not valid targets for @SubclassOptInRequired
|
||||
|
||||
<!SUBCLASS_OPT_IN_INAPPLICABLE!>@SubclassOptInRequired(ApiMarker::class)<!>
|
||||
sealed class NestedSealedKlass
|
||||
|
||||
<!SUBCLASS_OPT_IN_INAPPLICABLE!>@SubclassOptInRequired(ApiMarker::class)<!>
|
||||
sealed interface NestedSealedInterface
|
||||
|
||||
}
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
// FIR_IDENTICAL
|
||||
|
||||
@RequiresOptIn
|
||||
annotation class ApiMarker
|
||||
|
||||
@SubclassOptInRequired(ApiMarker::class)
|
||||
interface Interface
|
||||
|
||||
fun foo() {
|
||||
// error: inheriting Interface requires an explicit opt-in
|
||||
open class LocalOpenKlassA: <!OPT_IN_USAGE_ERROR!>Interface<!>
|
||||
abstract class LocalAbstractKlassA: <!OPT_IN_USAGE_ERROR!>Interface<!>
|
||||
class LocalKlassA: <!OPT_IN_USAGE_ERROR!>Interface<!>
|
||||
data class LocalDataKlassA(val arg: Int): <!OPT_IN_USAGE_ERROR!>Interface<!>
|
||||
object: <!OPT_IN_USAGE_ERROR!>Interface<!> {}
|
||||
|
||||
// opt-in is present, no errors
|
||||
@OptIn(ApiMarker::class) open class LocalOpenKlassB: Interface
|
||||
@OptIn(ApiMarker::class) abstract class LocalAbstractKlassB: Interface
|
||||
@OptIn(ApiMarker::class) class LocalKlassB: Interface
|
||||
@OptIn(ApiMarker::class) data class LocalDataKlassB(val arg: Int): Interface
|
||||
@OptIn(ApiMarker::class) object: Interface {}
|
||||
|
||||
// requiring to opt-in into local classifiers works as well
|
||||
// (even though it doesn't make that much sense)
|
||||
@ApiMarker open class LocalOpenKlassC: Interface
|
||||
@ApiMarker abstract class LocalAbstractKlassC: Interface
|
||||
@ApiMarker class LocalKlassC: Interface
|
||||
@ApiMarker data class LocalDataKlassC(val arg: Int): Interface
|
||||
@ApiMarker object: Interface {}
|
||||
}
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
// FIR_IDENTICAL
|
||||
|
||||
@RequiresOptIn
|
||||
annotation class ApiMarker
|
||||
|
||||
@ApiMarker
|
||||
interface I1
|
||||
|
||||
@SubclassOptInRequired(ApiMarker::class)
|
||||
interface I2
|
||||
|
||||
// SubclassOptInRequired can only fix the error from I2
|
||||
@SubclassOptInRequired(ApiMarker::class)
|
||||
interface Impl1: <!OPT_IN_USAGE_ERROR!>I1<!>, I2
|
||||
|
||||
// the order of I1 and I2 shouldn't matter
|
||||
@SubclassOptInRequired(ApiMarker::class)
|
||||
interface Impl2: I2, <!OPT_IN_USAGE_ERROR!>I1<!>
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
// FIR_IDENTICAL
|
||||
|
||||
annotation class DummyAnnotation
|
||||
|
||||
<!OPT_IN_ARGUMENT_IS_NOT_MARKER!>@SubclassOptInRequired(DummyAnnotation::class)<!>
|
||||
open class IncorrectSubclassOptInArgumentMarker
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
// FIR_IDENTICAL
|
||||
|
||||
@RequiresOptIn
|
||||
annotation class ApiMarker
|
||||
|
||||
@ApiMarker
|
||||
class UnstableKlassApi
|
||||
|
||||
open class UnstableFunctionApi {
|
||||
@ApiMarker
|
||||
open fun overridableFunction() {}
|
||||
}
|
||||
|
||||
@SubclassOptInRequired(ApiMarker::class)
|
||||
open class NotFullyOptedIntoApiMarker: UnstableFunctionApi() {
|
||||
init {
|
||||
// usage is unstable, error is reported even despite SubclassOptInRequired
|
||||
<!OPT_IN_USAGE_ERROR!>UnstableKlassApi<!>()
|
||||
}
|
||||
// usage is unstable, error is reported even despite SubclassOptInRequired
|
||||
override fun <!OPT_IN_OVERRIDE_ERROR!>overridableFunction<!>() {}
|
||||
}
|
||||
+34
@@ -0,0 +1,34 @@
|
||||
// FIR_IDENTICAL
|
||||
|
||||
@RequiresOptIn
|
||||
annotation class ApiMarker
|
||||
|
||||
@SubclassOptInRequired(ApiMarker::class)
|
||||
abstract class AbstractKlassOptInApi
|
||||
|
||||
// no opt-in: diagnostic reported
|
||||
abstract class AbstractKlassOptInApiInheritorA: <!OPT_IN_USAGE_ERROR!>AbstractKlassOptInApi<!>()
|
||||
|
||||
// opt-in present: no diagnostic, opt-in isn't propagated
|
||||
@OptIn(ApiMarker::class)
|
||||
abstract class AbstractKlassOptInApiInheritorB: AbstractKlassOptInApi()
|
||||
|
||||
// inheritance opt-in required: no diagnostic, opt-in is propagated
|
||||
@SubclassOptInRequired(ApiMarker::class)
|
||||
abstract class AbstractKlassOptInApiInheritorC: AbstractKlassOptInApi()
|
||||
|
||||
// full opt-in required: no diagnostic, stricter opt-in is propagated
|
||||
@ApiMarker
|
||||
abstract class AbstractKlassOptInApiInheritorD: AbstractKlassOptInApi()
|
||||
|
||||
abstract class AbstractKlassOptInApiInheritorE: AbstractKlassOptInApiInheritorB() // inheritance opt-in isn't propagated
|
||||
abstract class AbstractKlassOptInApiInheritorF: <!OPT_IN_USAGE_ERROR!>AbstractKlassOptInApiInheritorC<!>() // inheritance opt-in is propagated
|
||||
abstract class AbstractKlassOptInApiInheritorG: <!OPT_IN_USAGE_ERROR!>AbstractKlassOptInApiInheritorD<!>() // inheritance opt-in is propagated
|
||||
|
||||
fun useSiteTestAbstractClasses(
|
||||
o: AbstractKlassOptInApi, // usage opt-in isn't required
|
||||
b: AbstractKlassOptInApiInheritorB, // usage opt-in isn't required
|
||||
c: AbstractKlassOptInApiInheritorC, // usage opt-in isn't required
|
||||
d: <!OPT_IN_USAGE_ERROR!>AbstractKlassOptInApiInheritorD<!>, // usage opt-in is required
|
||||
e: AbstractKlassOptInApiInheritorE // usage opt-in isn't required
|
||||
) {}
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
// FIR_IDENTICAL
|
||||
|
||||
@RequiresOptIn
|
||||
annotation class ApiMarker
|
||||
|
||||
@SubclassOptInRequired(ApiMarker::class)
|
||||
interface ToBeInheritedByDelegation
|
||||
|
||||
open class InheritingByDelegationA(arg: ToBeInheritedByDelegation): <!OPT_IN_USAGE_ERROR!>ToBeInheritedByDelegation<!> by arg
|
||||
|
||||
@SubclassOptInRequired(ApiMarker::class)
|
||||
open class InheritingByDelegationB(arg: ToBeInheritedByDelegation): ToBeInheritedByDelegation by arg
|
||||
Vendored
+34
@@ -0,0 +1,34 @@
|
||||
// FIR_IDENTICAL
|
||||
|
||||
@RequiresOptIn
|
||||
annotation class ApiMarker
|
||||
|
||||
@SubclassOptInRequired(ApiMarker::class)
|
||||
interface InterfaceOptInApi
|
||||
|
||||
// no opt-in: diagnostic reported
|
||||
interface InterfaceOptInApiInheritorA: <!OPT_IN_USAGE_ERROR!>InterfaceOptInApi<!>
|
||||
|
||||
// opt-in present: no diagnostic, opt-in isn't propagated
|
||||
@OptIn(ApiMarker::class)
|
||||
interface InterfaceOptInApiInheritorB: InterfaceOptInApi
|
||||
|
||||
// inheritance opt-in required: no diagnostic, opt-in is propagated
|
||||
@SubclassOptInRequired(ApiMarker::class)
|
||||
interface InterfaceOptInApiInheritorC: InterfaceOptInApi
|
||||
|
||||
// full opt-in required: no diagnostic, stricter opt-in is propagated
|
||||
@ApiMarker
|
||||
interface InterfaceOptInApiInheritorD: InterfaceOptInApi
|
||||
|
||||
interface InterfaceOptInApiInheritorE: InterfaceOptInApiInheritorB // inheritance opt-in isn't propagated
|
||||
interface InterfaceOptInApiInheritorF: <!OPT_IN_USAGE_ERROR!>InterfaceOptInApiInheritorC<!> // inheritance opt-in is propagated
|
||||
interface InterfaceOptInApiInheritorG: <!OPT_IN_USAGE_ERROR!>InterfaceOptInApiInheritorD<!> // inheritance opt-in is propagated
|
||||
|
||||
fun useSiteTestInterfaces(
|
||||
o: InterfaceOptInApi, // usage opt-in isn't required
|
||||
b: InterfaceOptInApiInheritorB, // usage opt-in isn't required
|
||||
c: InterfaceOptInApiInheritorC, // usage opt-in isn't required
|
||||
d: <!OPT_IN_USAGE_ERROR!>InterfaceOptInApiInheritorD<!>, // usage opt-in is required
|
||||
e: InterfaceOptInApiInheritorE // usage opt-in isn't required
|
||||
) {}
|
||||
Vendored
+34
@@ -0,0 +1,34 @@
|
||||
// FIR_IDENTICAL
|
||||
|
||||
@RequiresOptIn
|
||||
annotation class ApiMarker
|
||||
|
||||
@SubclassOptInRequired(ApiMarker::class)
|
||||
open class OpenKlassOptInApi
|
||||
|
||||
// no opt-in: diagnostic reported
|
||||
open class OpenKlassOptInApiInheritorA: <!OPT_IN_USAGE_ERROR!>OpenKlassOptInApi<!>()
|
||||
|
||||
// opt-in present: no diagnostic, opt-in isn't propagated
|
||||
@OptIn(ApiMarker::class)
|
||||
open class OpenKlassOptInApiInheritorB: OpenKlassOptInApi()
|
||||
|
||||
// inheritance opt-in required: no diagnostic, opt-in is propagated
|
||||
@SubclassOptInRequired(ApiMarker::class)
|
||||
open class OpenKlassOptInApiInheritorC: OpenKlassOptInApi()
|
||||
|
||||
// full opt-in required: no diagnostic, stricter opt-in is propagated
|
||||
@ApiMarker
|
||||
open class OpenKlassOptInApiInheritorD: OpenKlassOptInApi()
|
||||
|
||||
open class OpenKlassOptInApiInheritorE: OpenKlassOptInApiInheritorB() // inheritance opt-in isn't propagated
|
||||
open class OpenKlassOptInApiInheritorF: <!OPT_IN_USAGE_ERROR!>OpenKlassOptInApiInheritorC<!>() // inheritance opt-in is propagated
|
||||
open class OpenKlassOptInApiInheritorG: <!OPT_IN_USAGE_ERROR!>OpenKlassOptInApiInheritorD<!>() // inheritance opt-in is propagated
|
||||
|
||||
fun useSiteTestOpenClasses() {
|
||||
OpenKlassOptInApi() // usage opt-in isn't required
|
||||
OpenKlassOptInApiInheritorB() // usage opt-in isn't required
|
||||
OpenKlassOptInApiInheritorC() // usage opt-in isn't required
|
||||
<!OPT_IN_USAGE_ERROR!>OpenKlassOptInApiInheritorD<!>() // usage opt-in is required
|
||||
OpenKlassOptInApiInheritorE() // usage opt-in isn't required
|
||||
}
|
||||
-102
@@ -1,102 +0,0 @@
|
||||
// FIR_IDENTICAL
|
||||
@RequiresOptIn
|
||||
annotation class Marker
|
||||
|
||||
// Error!
|
||||
<!SUBCLASS_OPT_IN_INAPPLICABLE!>@SubclassOptInRequired(Marker::class)<!>
|
||||
class Final
|
||||
|
||||
// Error!
|
||||
<!SUBCLASS_OPT_IN_INAPPLICABLE!>@SubclassOptInRequired(Marker::class)<!>
|
||||
sealed class SealedClass {
|
||||
<!SUBCLASS_OPT_IN_INAPPLICABLE!>@SubclassOptInRequired(Marker::class)<!>
|
||||
object O : SealedClass()
|
||||
}
|
||||
|
||||
// Error!
|
||||
<!SUBCLASS_OPT_IN_INAPPLICABLE!>@SubclassOptInRequired(Marker::class)<!>
|
||||
sealed interface SealedInterface
|
||||
|
||||
// Error!
|
||||
<!SUBCLASS_OPT_IN_INAPPLICABLE!>@SubclassOptInRequired(Marker::class)<!>
|
||||
fun interface FunInterface {
|
||||
fun doIt()
|
||||
}
|
||||
|
||||
sealed class Normal
|
||||
|
||||
// Ok!
|
||||
@SubclassOptInRequired(Marker::class)
|
||||
open class NormalOpen : Normal()
|
||||
|
||||
// Ok!
|
||||
@SubclassOptInRequired(Marker::class)
|
||||
abstract class NormalAbstract : Normal()
|
||||
|
||||
// Error!
|
||||
<!SUBCLASS_OPT_IN_INAPPLICABLE!>@SubclassOptInRequired(Marker::class)<!>
|
||||
sealed class ErrorSealed : Normal()
|
||||
|
||||
// Error!
|
||||
<!SUBCLASS_OPT_IN_INAPPLICABLE!>@SubclassOptInRequired(Marker::class)<!>
|
||||
class ErrorFinal : Normal()
|
||||
|
||||
// Ok!
|
||||
@SubclassOptInRequired(Marker::class)
|
||||
abstract class Abstract
|
||||
|
||||
// Error! Should be replaced with OptIn
|
||||
<!SUBCLASS_OPT_IN_INAPPLICABLE!>@SubclassOptInRequired(Marker::class)<!>
|
||||
class Derived1 : Abstract()
|
||||
|
||||
// Ok!
|
||||
@OptIn(Marker::class)
|
||||
class Derived2 : Abstract()
|
||||
|
||||
// Error!
|
||||
<!SUBCLASS_OPT_IN_INAPPLICABLE!>@SubclassOptInRequired(Marker::class)<!>
|
||||
object Obj
|
||||
|
||||
// Error!
|
||||
<!SUBCLASS_OPT_IN_INAPPLICABLE!>@SubclassOptInRequired(Marker::class)<!>
|
||||
enum class E1 {
|
||||
FIRST;
|
||||
}
|
||||
|
||||
enum class E2 {
|
||||
// Error!
|
||||
<!WRONG_ANNOTATION_TARGET!>@SubclassOptInRequired(Marker::class)<!>
|
||||
SECOND;
|
||||
}
|
||||
|
||||
// Error!
|
||||
<!SUBCLASS_OPT_IN_INAPPLICABLE!>@SubclassOptInRequired(Marker::class)<!>
|
||||
annotation class A
|
||||
|
||||
// Local stuff
|
||||
fun foo() {
|
||||
// Error!
|
||||
val v = <!SUBCLASS_OPT_IN_INAPPLICABLE!>@SubclassOptInRequired(Marker::class)<!> object : Any() {
|
||||
|
||||
}
|
||||
|
||||
// Error!
|
||||
<!SUBCLASS_OPT_IN_INAPPLICABLE!>@SubclassOptInRequired(Marker::class)<!>
|
||||
open class OpenLocal
|
||||
|
||||
// Ok!
|
||||
@OptIn(Marker::class)
|
||||
class DerivedLocal : OpenLocal()
|
||||
|
||||
// Error!
|
||||
<!SUBCLASS_OPT_IN_INAPPLICABLE!>@SubclassOptInRequired(Marker::class)<!>
|
||||
class Local
|
||||
}
|
||||
|
||||
// Common rules with OptIn
|
||||
|
||||
annotation class Simple
|
||||
|
||||
// Error! Opt-in marker required
|
||||
<!OPT_IN_ARGUMENT_IS_NOT_MARKER!>@SubclassOptInRequired(Simple::class)<!>
|
||||
open class Some
|
||||
-169
@@ -1,169 +0,0 @@
|
||||
package
|
||||
|
||||
public fun foo(): kotlin.Unit
|
||||
|
||||
@kotlin.SubclassOptInRequired(markerClass = Marker::class) public final annotation class A : kotlin.Annotation {
|
||||
public constructor A()
|
||||
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
|
||||
}
|
||||
|
||||
@kotlin.SubclassOptInRequired(markerClass = Marker::class) public abstract class Abstract {
|
||||
public constructor Abstract()
|
||||
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
|
||||
}
|
||||
|
||||
@kotlin.SubclassOptInRequired(markerClass = Marker::class) public final class Derived1 : Abstract {
|
||||
public constructor Derived1()
|
||||
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
|
||||
}
|
||||
|
||||
@kotlin.OptIn(markerClass = {Marker::class}) public final class Derived2 : Abstract {
|
||||
public constructor Derived2()
|
||||
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
|
||||
}
|
||||
|
||||
@kotlin.SubclassOptInRequired(markerClass = Marker::class) public final enum class E1 : kotlin.Enum<E1> {
|
||||
enum entry FIRST
|
||||
|
||||
private constructor E1()
|
||||
@kotlin.internal.IntrinsicConstEvaluation public final override /*1*/ /*fake_override*/ val name: kotlin.String
|
||||
public final override /*1*/ /*fake_override*/ val ordinal: kotlin.Int
|
||||
protected final override /*1*/ /*fake_override*/ fun clone(): kotlin.Any
|
||||
public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: E1): kotlin.Int
|
||||
public final override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
protected/*protected and package*/ final override /*1*/ /*fake_override*/ /*isHiddenForResolutionEverywhereBesideSupercalls*/ fun finalize(): kotlin.Unit
|
||||
public final override /*1*/ /*fake_override*/ /*isHiddenForResolutionEverywhereBesideSupercalls*/ fun getDeclaringClass(): java.lang.Class<E1!>!
|
||||
public final override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
|
||||
// Static members
|
||||
public final /*synthesized*/ val entries: kotlin.enums.EnumEntries<E1>
|
||||
public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): E1
|
||||
public final /*synthesized*/ fun values(): kotlin.Array<E1>
|
||||
}
|
||||
|
||||
public final enum class E2 : kotlin.Enum<E2> {
|
||||
@kotlin.SubclassOptInRequired(markerClass = Marker::class) enum entry SECOND
|
||||
|
||||
private constructor E2()
|
||||
@kotlin.internal.IntrinsicConstEvaluation public final override /*1*/ /*fake_override*/ val name: kotlin.String
|
||||
public final override /*1*/ /*fake_override*/ val ordinal: kotlin.Int
|
||||
protected final override /*1*/ /*fake_override*/ fun clone(): kotlin.Any
|
||||
public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: E2): kotlin.Int
|
||||
public final override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
protected/*protected and package*/ final override /*1*/ /*fake_override*/ /*isHiddenForResolutionEverywhereBesideSupercalls*/ fun finalize(): kotlin.Unit
|
||||
public final override /*1*/ /*fake_override*/ /*isHiddenForResolutionEverywhereBesideSupercalls*/ fun getDeclaringClass(): java.lang.Class<E2!>!
|
||||
public final override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
|
||||
// Static members
|
||||
public final /*synthesized*/ val entries: kotlin.enums.EnumEntries<E2>
|
||||
public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): E2
|
||||
public final /*synthesized*/ fun values(): kotlin.Array<E2>
|
||||
}
|
||||
|
||||
@kotlin.SubclassOptInRequired(markerClass = Marker::class) public final class ErrorFinal : Normal {
|
||||
public constructor ErrorFinal()
|
||||
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
|
||||
}
|
||||
|
||||
@kotlin.SubclassOptInRequired(markerClass = Marker::class) public sealed class ErrorSealed : Normal {
|
||||
protected constructor ErrorSealed()
|
||||
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
|
||||
}
|
||||
|
||||
@kotlin.SubclassOptInRequired(markerClass = Marker::class) public final class Final {
|
||||
public constructor Final()
|
||||
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
|
||||
}
|
||||
|
||||
@kotlin.SubclassOptInRequired(markerClass = Marker::class) public fun interface FunInterface {
|
||||
public abstract fun doIt(): kotlin.Unit
|
||||
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
|
||||
}
|
||||
|
||||
@kotlin.RequiresOptIn 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 sealed class Normal {
|
||||
protected constructor Normal()
|
||||
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
|
||||
}
|
||||
|
||||
@kotlin.SubclassOptInRequired(markerClass = Marker::class) public abstract class NormalAbstract : Normal {
|
||||
public constructor NormalAbstract()
|
||||
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
|
||||
}
|
||||
|
||||
@kotlin.SubclassOptInRequired(markerClass = Marker::class) public open class NormalOpen : Normal {
|
||||
public constructor NormalOpen()
|
||||
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
|
||||
}
|
||||
|
||||
@kotlin.SubclassOptInRequired(markerClass = Marker::class) public object Obj {
|
||||
private constructor Obj()
|
||||
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
|
||||
}
|
||||
|
||||
@kotlin.SubclassOptInRequired(markerClass = Marker::class) public sealed class SealedClass {
|
||||
protected constructor SealedClass()
|
||||
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
|
||||
|
||||
@kotlin.SubclassOptInRequired(markerClass = Marker::class) public object O : SealedClass {
|
||||
private constructor O()
|
||||
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
|
||||
}
|
||||
}
|
||||
|
||||
@kotlin.SubclassOptInRequired(markerClass = Marker::class) public sealed interface SealedInterface {
|
||||
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 annotation class Simple : kotlin.Annotation {
|
||||
public constructor Simple()
|
||||
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
|
||||
}
|
||||
|
||||
@kotlin.SubclassOptInRequired(markerClass = Simple::class) public open class Some {
|
||||
public constructor Some()
|
||||
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
|
||||
}
|
||||
|
||||
-51
@@ -1,51 +0,0 @@
|
||||
// FIR_IDENTICAL
|
||||
@RequiresOptIn
|
||||
annotation class Marker
|
||||
|
||||
@SubclassOptInRequired(Marker::class)
|
||||
open class Base
|
||||
|
||||
@Marker
|
||||
class DerivedFirst : Base()
|
||||
|
||||
@OptIn(Marker::class)
|
||||
class DerivedSecond : Base()
|
||||
|
||||
@SubclassOptInRequired(Marker::class)
|
||||
open class DerivedThird : Base()
|
||||
|
||||
open class DerivedFourth : <!OPT_IN_USAGE_ERROR!>Base<!>()
|
||||
|
||||
class GrandDerivedThird : <!OPT_IN_USAGE_ERROR!>DerivedThird<!>()
|
||||
|
||||
// Question: should we have an error also here?
|
||||
class GrandDerivedFourth : DerivedFourth()
|
||||
|
||||
@Marker
|
||||
open class Marked
|
||||
|
||||
@SubclassOptInRequired(Marker::class)
|
||||
open class DerivedMarked : <!OPT_IN_USAGE_ERROR!>Marked<!>()
|
||||
|
||||
fun test() {
|
||||
val b = Base()
|
||||
val d1 = <!OPT_IN_USAGE_ERROR!>DerivedFirst<!>()
|
||||
val d2 = DerivedSecond()
|
||||
val d3 = DerivedThird()
|
||||
val d4 = DerivedFourth()
|
||||
}
|
||||
|
||||
fun test2(b: Base, g: Generic<Base>) {
|
||||
object : <!OPT_IN_USAGE_ERROR!>Base<!>() {}
|
||||
}
|
||||
|
||||
open class Generic<T>
|
||||
|
||||
class DerivedGeneric : Generic<Base>()
|
||||
|
||||
@SubclassOptInRequired(Marker::class)
|
||||
interface BaseInterface
|
||||
|
||||
interface DerivedInterface : <!OPT_IN_USAGE_ERROR!>BaseInterface<!>
|
||||
|
||||
class Delegated(val bi: BaseInterface) : <!OPT_IN_USAGE_ERROR!>BaseInterface<!> by bi
|
||||
-108
@@ -1,108 +0,0 @@
|
||||
package
|
||||
|
||||
public fun test(): kotlin.Unit
|
||||
public fun test2(/*0*/ b: Base, /*1*/ g: Generic<Base>): kotlin.Unit
|
||||
|
||||
@kotlin.SubclassOptInRequired(markerClass = Marker::class) public open class Base {
|
||||
public constructor Base()
|
||||
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
|
||||
}
|
||||
|
||||
@kotlin.SubclassOptInRequired(markerClass = Marker::class) public interface BaseInterface {
|
||||
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 Delegated : BaseInterface {
|
||||
public constructor Delegated(/*0*/ bi: BaseInterface)
|
||||
public final val bi: BaseInterface
|
||||
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 final class DerivedFirst : Base {
|
||||
public constructor DerivedFirst()
|
||||
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 open class DerivedFourth : Base {
|
||||
public constructor DerivedFourth()
|
||||
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 DerivedGeneric : Generic<Base> {
|
||||
public constructor DerivedGeneric()
|
||||
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 interface DerivedInterface : BaseInterface {
|
||||
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
|
||||
}
|
||||
|
||||
@kotlin.SubclassOptInRequired(markerClass = Marker::class) public open class DerivedMarked : Marked {
|
||||
public constructor DerivedMarked()
|
||||
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
|
||||
}
|
||||
|
||||
@kotlin.OptIn(markerClass = {Marker::class}) public final class DerivedSecond : Base {
|
||||
public constructor DerivedSecond()
|
||||
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
|
||||
}
|
||||
|
||||
@kotlin.SubclassOptInRequired(markerClass = Marker::class) public open class DerivedThird : Base {
|
||||
public constructor DerivedThird()
|
||||
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 open class Generic</*0*/ T> {
|
||||
public constructor Generic</*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
|
||||
}
|
||||
|
||||
public final class GrandDerivedFourth : DerivedFourth {
|
||||
public constructor GrandDerivedFourth()
|
||||
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 GrandDerivedThird : DerivedThird {
|
||||
public constructor GrandDerivedThird()
|
||||
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 open class Marked {
|
||||
public constructor Marked()
|
||||
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
|
||||
}
|
||||
|
||||
@kotlin.RequiresOptIn 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
|
||||
}
|
||||
-64
@@ -1,64 +0,0 @@
|
||||
// FIR_IDENTICAL
|
||||
@RequiresOptIn
|
||||
annotation class Marker
|
||||
|
||||
@Marker
|
||||
interface I1
|
||||
|
||||
@SubclassOptInRequired(Marker::class)
|
||||
interface I2
|
||||
|
||||
// Should not be enough, and should not depend on the order of I1, I2
|
||||
@SubclassOptInRequired(Marker::class)
|
||||
interface Impl1 : <!OPT_IN_USAGE_ERROR!>I1<!>, I2
|
||||
|
||||
@SubclassOptInRequired(Marker::class)
|
||||
interface Impl2 : I2, <!OPT_IN_USAGE_ERROR!>I1<!>
|
||||
|
||||
@Marker
|
||||
class C
|
||||
|
||||
open class D {
|
||||
@Marker
|
||||
open fun bar() {}
|
||||
|
||||
@Marker
|
||||
open fun baz() {}
|
||||
}
|
||||
|
||||
@SubclassOptInRequired(Marker::class)
|
||||
open class E : D() {
|
||||
init {
|
||||
val c = <!OPT_IN_USAGE_ERROR!>C<!>()
|
||||
D().<!OPT_IN_USAGE_ERROR!>bar<!>()
|
||||
}
|
||||
|
||||
fun foo() {
|
||||
val c = <!OPT_IN_USAGE_ERROR!>C<!>()
|
||||
bar() // Error is not needed here (already reported on 'fun bar' declaration)
|
||||
<!OPT_IN_USAGE_ERROR!>baz<!>()
|
||||
}
|
||||
|
||||
override fun <!OPT_IN_OVERRIDE_ERROR!>bar<!>() {
|
||||
|
||||
}
|
||||
|
||||
@Marker
|
||||
override fun baz() {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@SubclassOptInRequired(Marker::class)
|
||||
interface Foo {
|
||||
fun foo() = Unit
|
||||
}
|
||||
|
||||
<!NOTHING_TO_INLINE!>inline<!> fun inlineFoo() {
|
||||
object : <!OPT_IN_USAGE_ERROR!>Foo<!> { }
|
||||
}
|
||||
|
||||
fun test() {
|
||||
// call site
|
||||
inlineFoo()
|
||||
}
|
||||
-68
@@ -1,68 +0,0 @@
|
||||
package
|
||||
|
||||
public inline fun inlineFoo(): kotlin.Unit
|
||||
public fun test(): kotlin.Unit
|
||||
|
||||
@Marker public final class C {
|
||||
public constructor C()
|
||||
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 open class D {
|
||||
public constructor D()
|
||||
@Marker public open fun bar(): kotlin.Unit
|
||||
@Marker public open fun baz(): kotlin.Unit
|
||||
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
|
||||
}
|
||||
|
||||
@kotlin.SubclassOptInRequired(markerClass = Marker::class) public open class E : D {
|
||||
public constructor E()
|
||||
public open override /*1*/ fun bar(): kotlin.Unit
|
||||
@Marker public open override /*1*/ fun baz(): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public final fun foo(): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
@kotlin.SubclassOptInRequired(markerClass = Marker::class) public interface Foo {
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open fun foo(): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
@Marker public interface I1 {
|
||||
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
|
||||
}
|
||||
|
||||
@kotlin.SubclassOptInRequired(markerClass = Marker::class) public interface I2 {
|
||||
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
|
||||
}
|
||||
|
||||
@kotlin.SubclassOptInRequired(markerClass = Marker::class) public interface Impl1 : I1, I2 {
|
||||
public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
@kotlin.SubclassOptInRequired(markerClass = Marker::class) public interface Impl2 : I2, I1 {
|
||||
public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
@kotlin.RequiresOptIn 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
|
||||
}
|
||||
Reference in New Issue
Block a user