[FIR] Save declarations in metadata in source order

^KT-54792 Fixed
^KT-54801
^KT-54800
This commit is contained in:
Dmitriy Novozhilov
2023-04-13 15:11:56 +03:00
committed by Space Team
parent b359a5538c
commit af60681705
128 changed files with 833 additions and 256 deletions
@@ -25,4 +25,4 @@ class X : @Anno1 I {
fun f(arg: @Anno2 I): @Anno3 I
val x: @Anno4 I
}
}
@@ -17,6 +17,7 @@ import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget
import org.jetbrains.kotlin.fir.*
import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.declarations.comparators.FirCallableDeclarationComparator
import org.jetbrains.kotlin.fir.declarations.comparators.FirMemberDeclarationComparator
import org.jetbrains.kotlin.fir.declarations.impl.FirDefaultPropertyAccessor
import org.jetbrains.kotlin.fir.declarations.impl.FirDefaultPropertyGetter
import org.jetbrains.kotlin.fir.declarations.impl.FirDefaultPropertySetter
@@ -56,6 +57,7 @@ import org.jetbrains.kotlin.types.ConstantValueKind
import org.jetbrains.kotlin.types.TypeApproximatorConfiguration
import org.jetbrains.kotlin.utils.addIfNotNull
import org.jetbrains.kotlin.utils.addToStdlib.runIf
import org.jetbrains.kotlin.utils.mapToIndex
class FirElementSerializer private constructor(
private val session: FirSession,
@@ -160,19 +162,38 @@ class FirElementSerializer private constructor(
}
}
/*
* Order of constructors:
* - declared constructors in declaration order
* - generated constructors in sorted order
* - provided constructors in sorted order
*/
if (regularClass != null && regularClass.classKind != ClassKind.ENUM_ENTRY) {
for (constructor in regularClass.constructors()) {
builder.addConstructor(constructorProto(constructor))
}
for (constructor in providedDeclarationsService.getProvidedConstructors(classSymbol, scopeSession)) {
val providedConstructors = providedDeclarationsService
.getProvidedConstructors(classSymbol, scopeSession)
.sortedWith(FirCallableDeclarationComparator)
for (constructor in providedConstructors) {
builder.addConstructor(constructorProto(constructor))
}
}
val callableMembers = (klass.memberDeclarations() + providedDeclarationsService.getProvidedCallables(classSymbol, scopeSession))
val providedCallables = providedDeclarationsService
.getProvidedCallables(classSymbol, scopeSession)
.sortedWith(FirCallableDeclarationComparator)
/*
* Order of callables:
* - declared callable in declaration order
* - generated callable in sorted order
* - provided callable in sorted order
*/
val callableMembers = (klass.memberDeclarations() + providedCallables)
for (declaration in callableMembers) {
if (declaration !is FirEnumEntry && declaration.isStatic) continue // ??? Miss values() & valueOf()
when (declaration) {
@@ -263,11 +284,26 @@ class FirElementSerializer private constructor(
return builder
}
/*
* Order of nested classifiers:
* - declared classifiers in declaration order
* - generated classifiers in sorted order
* - provided classifiers in sorted order
*/
fun computeNestedClassifiersForClass(classSymbol: FirClassSymbol<*>): List<FirClassifierSymbol<*>> {
val scope = session.nestedClassifierScope(classSymbol.fir) ?: return emptyList()
return buildList {
scope.getClassifierNames().mapNotNullTo(this) { scope.getSingleClassifier(it) }
addAll(providedDeclarationsService.getProvidedNestedClassifiers(classSymbol, scopeSession))
val indexByDeclaration = classSymbol.fir.declarations.filterIsInstance<FirClassLikeDeclaration>().mapToIndex()
val (declared, nonDeclared) = scope.getClassifierNames()
.mapNotNull { scope.getSingleClassifier(it)?.fir as FirClassLikeDeclaration? }
.partition { it in indexByDeclaration }
declared.sortedBy { indexByDeclaration.getValue(it) }.mapTo(this) { it.symbol }
nonDeclared.sortedWith(FirMemberDeclarationComparator).mapTo(this) { it.symbol }
providedDeclarationsService.getProvidedNestedClassifiers(classSymbol, scopeSession)
.map { it.fir }
.sortedWith(FirMemberDeclarationComparator)
.mapTo(this) { it.symbol }
}
}
@@ -286,37 +322,43 @@ class FirElementSerializer private constructor(
private inline fun <reified T : FirCallableDeclaration, S : FirCallableSymbol<*>> FirClass.collectDeclarations(
processScope: (FirTypeScope, ((S) -> Unit)) -> Unit
): List<T> = buildList {
val memberScope = unsubstitutedScope(session, scopeSession, withForcedTypeCalculator = false, memberRequiredPhase = null)
processScope(memberScope) l@{
val declaration = it.fir as T
val dispatchReceiverLookupTag = declaration.dispatchReceiverClassLookupTagOrNull()
// Special case for data/value class equals/hashCode/toString, see KT-57510
val isOverrideOfAnyFunctionInDataOrValueClass = this@collectDeclarations is FirRegularClass &&
(this@collectDeclarations.isData || this@collectDeclarations.isInline) &&
dispatchReceiverLookupTag?.classId == StandardClassIds.Any && !declaration.isFinal
if (declaration.isSubstitutionOrIntersectionOverride) {
if (!isOverrideOfAnyFunctionInDataOrValueClass) {
return@l
}
} else if (!(declaration.isStatic || declaration is FirConstructor)) {
// non-intersection or substitution fake override
if (dispatchReceiverLookupTag != this@collectDeclarations.symbol.toLookupTag()) {
): List<T> {
val foundInScope = buildList {
val memberScope = unsubstitutedScope(session, scopeSession, withForcedTypeCalculator = false, memberRequiredPhase = null)
processScope(memberScope) l@{
val declaration = it.fir as T
val dispatchReceiverLookupTag = declaration.dispatchReceiverClassLookupTagOrNull()
// Special case for data/value class equals/hashCode/toString, see KT-57510
val isOverrideOfAnyFunctionInDataOrValueClass = this@collectDeclarations is FirRegularClass &&
(this@collectDeclarations.isData || this@collectDeclarations.isInline) &&
dispatchReceiverLookupTag?.classId == StandardClassIds.Any && !declaration.isFinal
if (declaration.isSubstitutionOrIntersectionOverride) {
if (!isOverrideOfAnyFunctionInDataOrValueClass) {
return@l
}
} else if (!(declaration.isStatic || declaration is FirConstructor)) {
// non-intersection or substitution fake override
if (dispatchReceiverLookupTag != this@collectDeclarations.symbol.toLookupTag()) {
if (!isOverrideOfAnyFunctionInDataOrValueClass) {
return@l
}
}
}
}
add(declaration)
}
for (declaration in declarations) {
if (declaration is T && declaration.isStatic) {
add(declaration)
}
for (declaration in declarations) {
if (declaration is T && declaration.isStatic) {
add(declaration)
}
}
}
val indexByDeclaration = declarations.filterIsInstance<T>().mapToIndex()
val (declared, nonDeclared) = foundInScope
.sortedBy { indexByDeclaration[it] ?: Int.MAX_VALUE }
.partition { it in indexByDeclaration }
return declared + nonDeclared.sortedWith(FirCallableDeclarationComparator)
}
private fun FirPropertyAccessor.nonSourceAnnotations(session: FirSession): List<FirAnnotation> =
@@ -45880,6 +45880,12 @@ public class FirLightTreeBlackBoxCodegenTestGenerated extends AbstractFirLightTr
runTest("compiler/testData/codegen/box/reflection/properties/propertyOfNestedClassAndArrayType.kt");
}
@Test
@TestMetadata("propertyOrder.kt")
public void testPropertyOrder() throws Exception {
runTest("compiler/testData/codegen/box/reflection/properties/propertyOrder.kt");
}
@Test
@TestMetadata("protectedClassVar.kt")
public void testProtectedClassVar() throws Exception {
@@ -45880,6 +45880,12 @@ public class FirPsiBlackBoxCodegenTestGenerated extends AbstractFirPsiBlackBoxCo
runTest("compiler/testData/codegen/box/reflection/properties/propertyOfNestedClassAndArrayType.kt");
}
@Test
@TestMetadata("propertyOrder.kt")
public void testPropertyOrder() throws Exception {
runTest("compiler/testData/codegen/box/reflection/properties/propertyOrder.kt");
}
@Test
@TestMetadata("protectedClassVar.kt")
public void testProtectedClassVar() throws Exception {
@@ -0,0 +1,49 @@
// TARGET_BACKEND: JVM_IR
// WITH_STDLIB
// WITH_REFLECT
// FILE: B.java
public class B {
public final int c = 1;
public void bb() {}
public final int b = 2;
public final int a = 10;
public void aa() {}
}
// FILE: main.kt
import kotlin.reflect.KClass
import kotlin.reflect.KFunction
import kotlin.reflect.KProperty
class A {
val c = 1
fun bb() {}
val b = 2
val a = 10
fun aa() {}
}
fun listMembers(kClass: KClass<*>): String {
return kClass.members.joinToString(" | ") { member ->
val prefix = when (member) {
is KFunction -> "fun"
is KProperty -> "val"
else -> "wtf"
}
"$prefix ${member.name}"
}
}
fun box(): String {
val aMembers = listMembers(A::class)
// After migration of reflection to K2 the order will be following:
// "val c | val b | val a | fun bb | fun aa | fun equals | fun hashCode | fun toString"
if (aMembers != "val a | val b | val c | fun aa | fun bb | fun equals | fun hashCode | fun toString") return "Fail A: $aMembers"
// Looks like property order is different on different JDK, so it's pointless to test it
// val bMembers = listMembers(B::class)
// if (bMembers != "fun aa | fun bb | val c | val b | val a | fun equals | fun hashCode | fun toString") return "Fail B: $bMembers"
return "OK"
}
@@ -39,3 +39,4 @@ public final data class A3 {
public open override /*1*/ /*synthesized*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
}
@@ -173,4 +173,3 @@ object Visibilities {
private get
}
@@ -0,0 +1,21 @@
public final annotation class Anno : R|kotlin/Annotation| {
public final val klass: R|kotlin/reflect/KClass<*>|
public get(): R|kotlin/reflect/KClass<*>|
public final val klasses: R|kotlin/Array<kotlin/reflect/KClass<*>>|
public get(): R|kotlin/Array<kotlin/reflect/KClass<*>>|
public final val sarKlass: R|kotlin/reflect/KClass<kotlin/Array<kotlin/String>>|
public get(): R|kotlin/reflect/KClass<kotlin/Array<kotlin/String>>|
public final val d2arKlass: R|kotlin/reflect/KClass<kotlin/Array<kotlin/DoubleArray>>|
public get(): R|kotlin/reflect/KClass<kotlin/Array<kotlin/DoubleArray>>|
public constructor(klass: R|kotlin/reflect/KClass<*>|, klasses: R|kotlin/Array<kotlin/reflect/KClass<*>>|, sarKlass: R|kotlin/reflect/KClass<kotlin/Array<kotlin/String>>|, d2arKlass: R|kotlin/reflect/KClass<kotlin/Array<kotlin/DoubleArray>>|): R|test/Anno|
}
@R|test/Anno|(klass = <getClass>(<getClass>(R|kotlin/String|)), klasses = <implicitArrayOf>(<getClass>(<getClass>(R|kotlin/Int|)), <getClass>(<getClass>(R|kotlin/String|)), <getClass>(<getClass>(R|kotlin/Float|))), sarKlass = <getClass>(<getClass>(R|kotlin/String|)), d2arKlass = <getClass>(<getClass>(R|kotlin/DoubleArray|))) public final class Klass : R|kotlin/Any| {
public constructor(): R|test/Klass|
}
@@ -0,0 +1,33 @@
public final annotation class Anno : R|kotlin/Annotation| {
public final val bytes: R|kotlin/ByteArray|
public get(): R|kotlin/ByteArray|
public final val shorts: R|kotlin/ShortArray|
public get(): R|kotlin/ShortArray|
public final val ints: R|kotlin/IntArray|
public get(): R|kotlin/IntArray|
public final val longs: R|kotlin/LongArray|
public get(): R|kotlin/LongArray|
public final val chars: R|kotlin/CharArray|
public get(): R|kotlin/CharArray|
public final val floats: R|kotlin/FloatArray|
public get(): R|kotlin/FloatArray|
public final val doubles: R|kotlin/DoubleArray|
public get(): R|kotlin/DoubleArray|
public final val booleans: R|kotlin/BooleanArray|
public get(): R|kotlin/BooleanArray|
public constructor(bytes: R|kotlin/ByteArray|, shorts: R|kotlin/ShortArray|, ints: R|kotlin/IntArray|, longs: R|kotlin/LongArray|, chars: R|kotlin/CharArray|, floats: R|kotlin/FloatArray|, doubles: R|kotlin/DoubleArray|, booleans: R|kotlin/BooleanArray|): R|test/Anno|
}
@R|test/Anno|(bytes = <implicitArrayOf>(Byte(42), Byte(-1)), shorts = <implicitArrayOf>(Short(-42), Short(0)), ints = <implicitArrayOf>(Int(42), Int(239)), longs = <implicitArrayOf>(Long(42), Long(239)), chars = <implicitArrayOf>(Char(a), Char(Z)), floats = <implicitArrayOf>(Float(2.72), Float(0.0)), doubles = <implicitArrayOf>(Double(42.0), Double(-3.14)), booleans = <implicitArrayOf>(Boolean(true), Boolean(false))) public final class Klass : R|kotlin/Any| {
public constructor(): R|test/Klass|
}
@@ -0,0 +1,18 @@
public final annotation class Anno : R|kotlin/Annotation| {
public final val int: R|kotlin/Int|
public get(): R|kotlin/Int|
public final val string: R|kotlin/String|
public get(): R|kotlin/String|
public final val double: R|kotlin/Double|
public get(): R|kotlin/Double|
public constructor(int: R|kotlin/Int|, string: R|kotlin/String|, double: R|kotlin/Double|): R|test/Anno|
}
@R|test/Anno|(int = Int(42), string = String(OK), double = Double(3.14)) public final class Class : R|kotlin/Any| {
public constructor(): R|test/Class|
}
@@ -2,12 +2,12 @@ public final class Class : R|kotlin/Any| {
@PROPERTY:R|test/IntAnno|() public final val R|kotlin/Int|.extension: R|kotlin/Int|
public get(): R|kotlin/Int|
@PROPERTY:R|test/DoubleAnno|() public final val R|kotlin/Double|.extension: R|kotlin/Int|
public get(): R|kotlin/Int|
@PROPERTY:R|test/StringAnno|() public final val R|kotlin/String|.extension: R|kotlin/String|
public get(): R|kotlin/String|
@PROPERTY:R|test/DoubleAnno|() public final val R|kotlin/Double|.extension: R|kotlin/Int|
public get(): R|kotlin/Int|
public constructor(): R|test/Class|
}
@@ -38,4 +38,3 @@ public final class Simple : R|kotlin/Any| {
public constructor(): R|test/Simple|
}
@@ -0,0 +1,40 @@
public final class A : R|kotlin/Any| {
public final fun simple(s: R|@R|test/Ann|(klass = <getClass>(<getClass>(R|test/Simple|))) kotlin/String|): R|kotlin/Unit|
public final fun generic(s: R|@R|test/Ann|(klass = <getClass>(<getClass>(R|test/Generic|))) kotlin/String|): R|kotlin/Unit|
public final fun innerGeneric(s: R|@R|test/Ann|(klass = <getClass>(<getClass>(R|test/InnerGeneric.Inner|))) kotlin/String|): R|kotlin/Unit|
public final fun arrays(s: R|@R|test/Ann|(klass = <getClass>(<getClass>(R|kotlin/Int|))) kotlin/Array<kotlin/Int>|, t: R|@R|test/Ann|(klass = <getClass>(<getClass>(R|kotlin/IntArray|))) kotlin/Array<kotlin/IntArray>|, u: R|@R|test/Ann|(klass = <getClass>(<getClass>(R|kotlin/Int|))) kotlin/Array<kotlin/Array<kotlin/Int>>|, v: R|@R|test/Ann|(klass = <getClass>(<getClass>(R|kotlin/String|))) kotlin/Array<kotlin/Array<kotlin/Array<kotlin/String>>>|): R|kotlin/Unit|
public constructor(): R|test/A|
}
@R|kotlin/annotation/Target|(allowedTargets = <implicitArrayOf>(R|kotlin/annotation/AnnotationTarget.TYPE|)) public final annotation class Ann : R|kotlin/Annotation| {
public final val klass: R|kotlin/reflect/KClass<*>|
public get(): R|kotlin/reflect/KClass<*>|
public constructor(klass: R|kotlin/reflect/KClass<*>|): R|test/Ann|
}
public final class Generic<T> : R|kotlin/Any| {
public constructor<T>(): R|test/Generic<T>|
}
public final class InnerGeneric<A, B> : R|kotlin/Any| {
public constructor<A, B>(): R|test/InnerGeneric<A, B>|
public final inner class Inner<in C, D : R|A|, A, B> : R|kotlin/Any| {
public test/InnerGeneric<A, B>.constructor<in C, D : R|A|>(): R|test/InnerGeneric.Inner<C, D, A, B>|
}
}
public final class Simple : R|kotlin/Any| {
public constructor(): R|test/Simple|
}
@@ -15,10 +15,6 @@ public final annotation class B : R|kotlin/Annotation| {
}
public abstract interface I : R|kotlin/Any| {
public abstract var getterAndSetter: R|kotlin/Int|
@R|test/A|(value = String(getter)) public get(): R|kotlin/Int|
@R|test/B|(value = <implicitArrayOf>(String(setter))) public set(value: R|kotlin/Int|): R|kotlin/Unit|
@PROPERTY:R|test/A|(value = String(property)) public abstract var propertyAndGetter: R|kotlin/Int|
@R|test/B|(value = <implicitArrayOf>(String(getter))) public get(): R|kotlin/Int|
public set(value: R|kotlin/Int|): R|kotlin/Unit|
@@ -27,4 +23,8 @@ public abstract interface I : R|kotlin/Any| {
public get(): R|kotlin/Int|
@R|test/B|(value = <implicitArrayOf>(String(setter))) public set(value: R|kotlin/Int|): R|kotlin/Unit|
public abstract var getterAndSetter: R|kotlin/Int|
@R|test/A|(value = String(getter)) public get(): R|kotlin/Int|
@R|test/B|(value = <implicitArrayOf>(String(setter))) public set(value: R|kotlin/Int|): R|kotlin/Unit|
}
@@ -0,0 +1,85 @@
public final class ConstructorTypeParamClassObjectConflict<test> : R|kotlin/Any| {
public final val some: R|kotlin/Int|
public get(): R|kotlin/Int|
public constructor<test>(): R|test/ConstructorTypeParamClassObjectConflict<test>|
public final companion object Companion : R|kotlin/Any| {
public final val test: R|kotlin/Int|
public get(): R|kotlin/Int|
private constructor(): R|test/ConstructorTypeParamClassObjectConflict.Companion|
}
}
public final class ConstructorTypeParamClassObjectTypeConflict<test> : R|kotlin/Any| {
public final val some: R|test?|
public get(): R|test?|
public constructor<test>(): R|test/ConstructorTypeParamClassObjectTypeConflict<test>|
public final companion object Companion : R|kotlin/Any| {
private constructor(): R|test/ConstructorTypeParamClassObjectTypeConflict.Companion|
public abstract interface test : R|kotlin/Any| {
}
}
}
public final class TestClassObjectAndClassConflict : R|kotlin/Any| {
public final val bla: R|kotlin/String|
public get(): R|kotlin/String|
public final val some: R|kotlin/String|
public get(): R|kotlin/String|
public constructor(): R|test/TestClassObjectAndClassConflict|
public final companion object Companion : R|kotlin/Any| {
public final val bla: R|kotlin/Int|
public get(): R|kotlin/Int|
private constructor(): R|test/TestClassObjectAndClassConflict.Companion|
}
}
public final class TestConstructorParamClassObjectConflict : R|kotlin/Any| {
public final val some: R|kotlin/String|
public get(): R|kotlin/String|
public constructor(test: R|kotlin/String|): R|test/TestConstructorParamClassObjectConflict|
public final companion object Companion : R|kotlin/Any| {
public final val test: R|kotlin/Int|
public get(): R|kotlin/Int|
private constructor(): R|test/TestConstructorParamClassObjectConflict.Companion|
}
}
public final class TestConstructorValClassObjectConflict : R|kotlin/Any| {
public final val test: R|kotlin/String|
public get(): R|kotlin/String|
public final val some: R|kotlin/String|
public get(): R|kotlin/String|
public constructor(test: R|kotlin/String|): R|test/TestConstructorValClassObjectConflict|
public final companion object Companion : R|kotlin/Any| {
public final val test: R|kotlin/Int|
public get(): R|kotlin/Int|
private constructor(): R|test/TestConstructorValClassObjectConflict.Companion|
}
}
@@ -0,0 +1,8 @@
public open class DifferentGetterAndSetter : R|kotlin/Any| {
public open fun setSomething(p0: R|kotlin/String?|): R|kotlin/Unit|
public open fun getSomething(): R|kotlin/Int|
public constructor(): R|test/DifferentGetterAndSetter|
}
@@ -0,0 +1,6 @@
public abstract interface JavaBeanAbstractGetter : R|kotlin/Any| {
public abstract fun getRed(): R|kotlin/Int|
public abstract fun getBlue(): R|kotlin/Int|
}
@@ -0,0 +1,8 @@
public open class TwoSetters : R|kotlin/Any| {
public open fun setSize(p0: R|kotlin/String?|): R|kotlin/Unit|
public open fun setSize(p0: R|kotlin/Int|): R|kotlin/Unit|
public constructor(): R|test/TwoSetters|
}
@@ -4,9 +4,6 @@ public final class Test : R|kotlin/Any| {
public final companion object Companion : R|kotlin/Any| {
public final fun incProp4(): R|kotlin/Unit|
public final const val constProp8: R|kotlin/Int| = Int(80)
public get(): R|kotlin/Int|
public final val prop1: R|kotlin/Int|
public get(): R|kotlin/Int|
@@ -29,6 +26,9 @@ public final class Test : R|kotlin/Any| {
public get(): R|kotlin/Int|
public set(i: R|kotlin/Int|): R|kotlin/Unit|
public final const val constProp8: R|kotlin/Int| = Int(80)
public get(): R|kotlin/Int|
private constructor(): R|test/Test.Companion|
}
@@ -2,9 +2,6 @@ public abstract interface Test : R|kotlin/Any| {
public final companion object Companion : R|kotlin/Any| {
public final fun incProp4(): R|kotlin/Unit|
public final const val constProp8: R|kotlin/Int| = Int(80)
public get(): R|kotlin/Int|
public final val prop1: R|kotlin/Int|
public get(): R|kotlin/Int|
@@ -27,6 +24,9 @@ public abstract interface Test : R|kotlin/Any| {
public get(): R|kotlin/Int|
public set(i: R|kotlin/Int|): R|kotlin/Unit|
public final const val constProp8: R|kotlin/Int| = Int(80)
public get(): R|kotlin/Int|
private constructor(): R|test/Test.Companion|
}
@@ -2,17 +2,17 @@ public final class InheritMethodsDifferentReturnTypes : R|kotlin/Any| {
public constructor(): R|test/InheritMethodsDifferentReturnTypes|
public abstract interface Super1 : R|kotlin/Any| {
public abstract fun bar(): R|kotlin/String?|
public abstract fun foo(): R|kotlin/CharSequence?|
public abstract fun bar(): R|kotlin/String?|
}
public abstract interface Super2 : R|kotlin/Any| {
public abstract fun bar(): R|kotlin/CharSequence?|
public abstract fun foo(): R|kotlin/String?|
public abstract fun bar(): R|kotlin/CharSequence?|
}
public abstract interface Sub : R|test/InheritMethodsDifferentReturnTypes.Super1|, R|test/InheritMethodsDifferentReturnTypes.Super2| {
@@ -2,17 +2,17 @@ public final class InheritMethodsDifferentReturnTypesGeneric : R|kotlin/Any| {
public constructor(): R|test/InheritMethodsDifferentReturnTypesGeneric|
public abstract interface Super1<F, B> : R|kotlin/Any| {
public abstract fun bar(): R|B?|
public abstract fun foo(): R|F?|
public abstract fun bar(): R|B?|
}
public abstract interface Super2<FF, BB> : R|kotlin/Any| {
public abstract fun bar(): R|BB?|
public abstract fun foo(): R|FF?|
public abstract fun bar(): R|BB?|
}
public abstract interface Sub : R|test/InheritMethodsDifferentReturnTypesGeneric.Super1<kotlin/String, kotlin/CharSequence>|, R|test/InheritMethodsDifferentReturnTypesGeneric.Super2<kotlin/CharSequence, kotlin/String>| {
@@ -0,0 +1,16 @@
public open class PropertyArrayTypes<T> : R|kotlin/Any| {
public final var arrayOfArrays: R|kotlin/Array<kotlin/Array<kotlin/String>>|
public get(): R|kotlin/Array<kotlin/Array<kotlin/String>>|
public set(value: R|kotlin/Array<kotlin/Array<kotlin/String>>|): R|kotlin/Unit|
public final var array: R|kotlin/Array<kotlin/String>|
public get(): R|kotlin/Array<kotlin/String>|
public set(value: R|kotlin/Array<kotlin/String>|): R|kotlin/Unit|
public final var genericArray: R|kotlin/Array<T>|
public get(): R|kotlin/Array<T>|
public set(value: R|kotlin/Array<T>|): R|kotlin/Unit|
public constructor<T>(): R|test/PropertyArrayTypes<T>|
}
@@ -0,0 +1,11 @@
public open class WrongFieldMutability : R|kotlin/Any| {
public final var fooNotFinal: R|kotlin/String?|
public get(): R|kotlin/String?|
public set(value: R|kotlin/String?|): R|kotlin/Unit|
public final val fooFinal: R|kotlin/String?|
public get(): R|kotlin/String?|
public constructor(): R|test/WrongFieldMutability|
}
@@ -1,31 +1,31 @@
public abstract interface PropagateTypeArgumentNullable : R|kotlin/Any| {
public abstract interface Super : R|kotlin/Any| {
public abstract fun invOutR(): R|kotlin/collections/MutableList<kotlin/collections/List<kotlin/String?>>|
public abstract fun outS(p: R|kotlin/collections/List<kotlin/String?>|): R|kotlin/Unit|
public abstract fun invOutS(p: R|kotlin/collections/MutableList<kotlin/collections/List<kotlin/String?>>|): R|kotlin/Unit|
public abstract fun invR(): R|kotlin/collections/MutableList<kotlin/String?>|
public abstract fun outOutS(p: R|kotlin/collections/List<kotlin/collections/List<kotlin/String?>>|): R|kotlin/Unit|
public abstract fun outR(): R|kotlin/collections/List<kotlin/String?>|
public abstract fun outS(p: R|kotlin/collections/List<kotlin/String?>|): R|kotlin/Unit|
public abstract fun invR(): R|kotlin/collections/MutableList<kotlin/String?>|
public abstract fun invOutR(): R|kotlin/collections/MutableList<kotlin/collections/List<kotlin/String?>>|
}
public abstract interface Sub : R|test/PropagateTypeArgumentNullable.Super| {
public abstract fun invOutR(): R|kotlin/collections/MutableList<kotlin/collections/List<kotlin/String?>>|
public abstract fun outS(p: R|kotlin/collections/List<kotlin/String?>|): R|kotlin/Unit|
public abstract fun invOutS(p: R|kotlin/collections/MutableList<kotlin/collections/List<kotlin/String?>>|): R|kotlin/Unit|
public abstract fun invR(): R|kotlin/collections/MutableList<kotlin/String?>|
public abstract fun outOutS(p: R|kotlin/collections/List<kotlin/collections/List<kotlin/String?>>|): R|kotlin/Unit|
public abstract fun outR(): R|kotlin/collections/List<kotlin/String?>|
public abstract fun outS(p: R|kotlin/collections/List<kotlin/String?>|): R|kotlin/Unit|
public abstract fun invR(): R|kotlin/collections/MutableList<kotlin/String?>|
public abstract fun invOutR(): R|kotlin/collections/MutableList<kotlin/collections/List<kotlin/String?>>|
}
@@ -1,9 +1,9 @@
public abstract interface ChangeProjectionKind1 : R|kotlin/Any| {
public abstract interface Super : R|kotlin/Any| {
public abstract fun dummy(): R|kotlin/Unit|
public abstract fun foo(p: R|kotlin/collections/MutableList<in kotlin/String>|): R|kotlin/Unit|
public abstract fun dummy(): R|kotlin/Unit|
}
public abstract interface Sub : R|test/ChangeProjectionKind1.Super| {
@@ -1,9 +1,9 @@
public abstract interface ChangeProjectionKind2 : R|kotlin/Any| {
public abstract interface Super : R|kotlin/Any| {
public abstract fun dummy(): R|kotlin/Unit|
public abstract fun foo(p: R|kotlin/collections/MutableList<kotlin/String>|): R|kotlin/Unit|
public abstract fun dummy(): R|kotlin/Unit|
}
public abstract interface Sub : R|test/ChangeProjectionKind2.Super| {
@@ -1,9 +1,9 @@
public abstract interface DeeplySubstitutedClassParameter : R|kotlin/Any| {
public abstract interface Super<T> : R|kotlin/Any| {
public abstract fun dummy(): R|kotlin/Unit|
public abstract fun foo(t: R|T|): R|kotlin/Unit|
public abstract fun dummy(): R|kotlin/Unit|
}
public abstract interface Middle<E> : R|test/DeeplySubstitutedClassParameter.Super<E>| {
@@ -1,9 +1,9 @@
public abstract interface DeeplySubstitutedClassParameter2 : R|kotlin/Any| {
public abstract interface Super<T> : R|kotlin/Any| {
public abstract fun dummy(): R|kotlin/Unit|
public abstract fun foo(t: R|T|): R|kotlin/Unit|
public abstract fun dummy(): R|kotlin/Unit|
}
public abstract interface Middle<E> : R|test/DeeplySubstitutedClassParameter2.Super<E>| {
@@ -1,9 +1,9 @@
public abstract interface InheritMutability : R|kotlin/Any| {
public abstract interface Super : R|kotlin/Any| {
public abstract fun dummy(): R|kotlin/Unit|
public abstract fun foo(p: R|kotlin/collections/MutableList<kotlin/String>|): R|kotlin/Unit|
public abstract fun dummy(): R|kotlin/Unit|
}
public abstract interface Sub : R|test/InheritMutability.Super| {
@@ -1,9 +1,9 @@
public abstract interface InheritNotVararg : R|kotlin/Any| {
public abstract interface Super : R|kotlin/Any| {
public abstract fun dummy(): R|kotlin/Unit|
public abstract fun foo(p0: R|kotlin/Array<out kotlin/String>?|): R|kotlin/Unit|
public abstract fun dummy(): R|kotlin/Unit|
}
public abstract interface Sub : R|test/InheritNotVararg.Super| {
@@ -1,9 +1,9 @@
public abstract interface InheritNotVarargInteger : R|kotlin/Any| {
public abstract interface Super : R|kotlin/Any| {
public abstract fun dummy(): R|kotlin/Unit|
public abstract fun foo(p0: R|kotlin/Array<out kotlin/Int>?|): R|kotlin/Unit|
public abstract fun dummy(): R|kotlin/Unit|
}
public abstract interface Sub : R|test/InheritNotVarargInteger.Super| {
@@ -1,9 +1,9 @@
public abstract interface InheritNotVarargNotNull : R|kotlin/Any| {
public abstract interface Super : R|kotlin/Any| {
public abstract fun dummy(): R|kotlin/Unit|
public abstract fun foo(p: R|kotlin/Array<out kotlin/String>|): R|kotlin/Unit|
public abstract fun dummy(): R|kotlin/Unit|
}
public abstract interface Sub : R|test/InheritNotVarargNotNull.Super| {
@@ -1,9 +1,9 @@
public abstract interface InheritNotVarargPrimitive : R|kotlin/Any| {
public abstract interface Super : R|kotlin/Any| {
public abstract fun dummy(): R|kotlin/Unit|
public abstract fun foo(p0: R|kotlin/IntArray?|): R|kotlin/Unit|
public abstract fun dummy(): R|kotlin/Unit|
}
public abstract interface Sub : R|test/InheritNotVarargPrimitive.Super| {
@@ -1,9 +1,9 @@
public abstract interface InheritNullability : R|kotlin/Any| {
public abstract interface Super : R|kotlin/Any| {
public abstract fun dummy(): R|kotlin/Unit|
public abstract fun foo(p0: R|kotlin/String|): R|kotlin/Unit|
public abstract fun dummy(): R|kotlin/Unit|
}
public abstract interface Sub : R|test/InheritNullability.Super| {
@@ -1,9 +1,9 @@
public abstract interface InheritProjectionKind : R|kotlin/Any| {
public abstract interface Super : R|kotlin/Any| {
public abstract fun dummy(): R|kotlin/Unit|
public abstract fun foo(p: R|kotlin/collections/MutableList<in kotlin/String>|): R|kotlin/Unit|
public abstract fun dummy(): R|kotlin/Unit|
}
public abstract interface Sub : R|test/InheritProjectionKind.Super| {
@@ -1,9 +1,9 @@
public abstract interface InheritReadOnliness : R|kotlin/Any| {
public abstract interface Super : R|kotlin/Any| {
public abstract fun dummy(): R|kotlin/Unit|
public abstract fun foo(p: R|kotlin/collections/List<kotlin/String>|): R|kotlin/Unit|
public abstract fun dummy(): R|kotlin/Unit|
}
public abstract interface Sub : R|test/InheritReadOnliness.Super| {
@@ -1,9 +1,9 @@
public abstract interface InheritVararg : R|kotlin/Any| {
public abstract interface Super : R|kotlin/Any| {
public abstract fun dummy(): R|kotlin/Unit|
public abstract fun foo(vararg p0: R|kotlin/Array<out kotlin/String?>|): R|kotlin/Unit|
public abstract fun dummy(): R|kotlin/Unit|
}
public abstract interface Sub : R|test/InheritVararg.Super| {
@@ -1,9 +1,9 @@
public abstract interface InheritVarargInteger : R|kotlin/Any| {
public abstract interface Super : R|kotlin/Any| {
public abstract fun dummy(): R|kotlin/Unit|
public abstract fun foo(vararg p0: R|kotlin/Array<out kotlin/Int?>|): R|kotlin/Unit|
public abstract fun dummy(): R|kotlin/Unit|
}
public abstract interface Sub : R|test/InheritVarargInteger.Super| {
@@ -1,9 +1,9 @@
public abstract interface InheritVarargNotNull : R|kotlin/Any| {
public abstract interface Super : R|kotlin/Any| {
public abstract fun dummy(): R|kotlin/Unit|
public abstract fun foo(vararg p: R|kotlin/Array<out kotlin/String>|): R|kotlin/Unit|
public abstract fun dummy(): R|kotlin/Unit|
}
public abstract interface Sub : R|test/InheritVarargNotNull.Super| {
@@ -1,9 +1,9 @@
public abstract interface InheritVarargPrimitive : R|kotlin/Any| {
public abstract interface Super : R|kotlin/Any| {
public abstract fun dummy(): R|kotlin/Unit|
public abstract fun foo(vararg p0: R|kotlin/IntArray|): R|kotlin/Unit|
public abstract fun dummy(): R|kotlin/Unit|
}
public abstract interface Sub : R|test/InheritVarargPrimitive.Super| {
@@ -1,16 +1,16 @@
public abstract interface Kt3302 : R|kotlin/Any| {
public abstract interface BSONObject : R|kotlin/Any| {
public abstract fun dummy(): R|kotlin/Unit|
public abstract fun put(p0: R|kotlin/String|, p1: R|kotlin/Any|): R|kotlin/Any?|
public abstract fun dummy(): R|kotlin/Unit|
}
public abstract interface LinkedHashMap<K, V> : R|kotlin/Any| {
public abstract fun dummy(): R|kotlin/Unit|
public abstract fun put(key: R|K|, value: R|V|): R|V?|
public abstract fun dummy(): R|kotlin/Unit|
}
public abstract interface BasicBSONObject : R|test/Kt3302.LinkedHashMap<kotlin/String, kotlin/Any>|, R|test/Kt3302.BSONObject| {
@@ -1,9 +1,9 @@
public abstract interface MutableToReadOnly : R|kotlin/Any| {
public abstract interface Super : R|kotlin/Any| {
public abstract fun dummy(): R|kotlin/Unit|
public abstract fun foo(p: R|kotlin/collections/MutableList<kotlin/String>|): R|kotlin/Unit|
public abstract fun dummy(): R|kotlin/Unit|
}
public abstract interface Sub : R|test/MutableToReadOnly.Super| {
@@ -1,9 +1,9 @@
public abstract interface NotNullToNullable : R|kotlin/Any| {
public abstract interface Super : R|kotlin/Any| {
public abstract fun dummy(): R|kotlin/Unit|
public abstract fun foo(p0: R|kotlin/String|): R|kotlin/Unit|
public abstract fun dummy(): R|kotlin/Unit|
}
public abstract interface Sub : R|test/NotNullToNullable.Super| {
@@ -1,9 +1,9 @@
public abstract interface NullableToNotNull : R|kotlin/Any| {
public abstract interface Super : R|kotlin/Any| {
public abstract fun dummy(): R|kotlin/Unit|
public abstract fun foo(p0: R|kotlin/String?|): R|kotlin/Unit|
public abstract fun dummy(): R|kotlin/Unit|
}
public abstract interface Sub : R|test/NullableToNotNull.Super| {
@@ -1,9 +1,9 @@
public abstract interface NullableToNotNullKotlinSignature : R|kotlin/Any| {
public abstract interface Super : R|kotlin/Any| {
public abstract fun dummy(): R|kotlin/Unit|
public abstract fun foo(p: R|kotlin/String?|): R|kotlin/Unit|
public abstract fun dummy(): R|kotlin/Unit|
}
public abstract interface Sub : R|test/NullableToNotNullKotlinSignature.Super| {
@@ -1,9 +1,9 @@
public abstract interface OverrideWithErasedParameter : R|kotlin/Any| {
public abstract interface Super<T> : R|kotlin/Any| {
public abstract fun dummy(): R|kotlin/Unit|
public abstract fun foo(p0: R|T?|): R|kotlin/Unit|
public abstract fun dummy(): R|kotlin/Unit|
}
public abstract interface Sub<T> : R|test/OverrideWithErasedParameter.Super<T>| {
@@ -1,9 +1,9 @@
public abstract interface ReadOnlyToMutable : R|kotlin/Any| {
public abstract interface Super : R|kotlin/Any| {
public abstract fun dummy(): R|kotlin/Unit|
public abstract fun foo(p: R|kotlin/collections/List<kotlin/String>|): R|kotlin/Unit|
public abstract fun dummy(): R|kotlin/Unit|
}
public abstract interface Sub : R|test/ReadOnlyToMutable.Super| {
@@ -1,16 +1,16 @@
public abstract interface SubclassFromGenericAndNot : R|kotlin/Any| {
public abstract interface NonGeneric : R|kotlin/Any| {
public abstract fun dummy(): R|kotlin/Unit|
public abstract fun foo(p0: R|kotlin/String|): R|kotlin/Unit|
public abstract fun dummy(): R|kotlin/Unit|
}
public abstract interface Generic<T> : R|kotlin/Any| {
public abstract fun dummy(): R|kotlin/Unit|
public abstract fun foo(key: R|T|): R|kotlin/Unit|
public abstract fun dummy(): R|kotlin/Unit|
}
public abstract interface Sub : R|test/SubclassFromGenericAndNot.NonGeneric|, R|test/SubclassFromGenericAndNot.Generic<kotlin/String>| {
@@ -1,9 +1,9 @@
public abstract interface SubstitutedClassParameter : R|kotlin/Any| {
public abstract interface Super<T> : R|kotlin/Any| {
public abstract fun dummy(): R|kotlin/Unit|
public abstract fun foo(t: R|T|): R|kotlin/Unit|
public abstract fun dummy(): R|kotlin/Unit|
}
public abstract interface Sub : R|test/SubstitutedClassParameter.Super<kotlin/String>| {
@@ -1,16 +1,16 @@
public abstract interface SubstitutedClassParameters : R|kotlin/Any| {
public abstract interface Super1<T> : R|kotlin/Any| {
public abstract fun dummy(): R|kotlin/Unit|
public abstract fun foo(t: R|T|): R|kotlin/Unit|
public abstract fun dummy(): R|kotlin/Unit|
}
public abstract interface Super2<E> : R|kotlin/Any| {
public abstract fun dummy(): R|kotlin/Unit|
public abstract fun foo(t: R|E|): R|kotlin/Unit|
public abstract fun dummy(): R|kotlin/Unit|
}
public abstract interface Sub : R|test/SubstitutedClassParameters.Super1<kotlin/String>|, R|test/SubstitutedClassParameters.Super2<kotlin/String>| {
@@ -1,9 +1,9 @@
public abstract interface AddNotNullJavaSubtype : R|kotlin/Any| {
public abstract interface Super : R|kotlin/Any| {
public abstract fun dummy(): R|kotlin/Unit|
public abstract fun foo(): R|kotlin/CharSequence?|
public abstract fun dummy(): R|kotlin/Unit|
}
public abstract interface Sub : R|test/AddNotNullJavaSubtype.Super| {
@@ -1,9 +1,9 @@
public abstract interface AddNotNullSameJavaType : R|kotlin/Any| {
public abstract interface Super : R|kotlin/Any| {
public abstract fun dummy(): R|kotlin/Unit|
public abstract fun foo(): R|kotlin/CharSequence?|
public abstract fun dummy(): R|kotlin/Unit|
}
public abstract interface Sub : R|test/AddNotNullSameJavaType.Super| {
@@ -1,9 +1,9 @@
public abstract interface AddNullabilityJavaSubtype : R|kotlin/Any| {
public abstract interface Super : R|kotlin/Any| {
public abstract fun dummy(): R|kotlin/Unit|
public abstract fun foo(): R|kotlin/CharSequence|
public abstract fun dummy(): R|kotlin/Unit|
}
public abstract interface Sub : R|test/AddNullabilityJavaSubtype.Super| {
@@ -1,9 +1,9 @@
public abstract interface AddNullabilitySameGenericType1 : R|kotlin/Any| {
public abstract interface Super : R|kotlin/Any| {
public abstract fun dummy(): R|kotlin/Unit|
public abstract fun foo(): R|kotlin/collections/MutableList<kotlin/String>|
public abstract fun dummy(): R|kotlin/Unit|
}
public abstract interface Sub : R|test/AddNullabilitySameGenericType1.Super| {
@@ -1,9 +1,9 @@
public abstract interface AddNullabilitySameGenericType2 : R|kotlin/Any| {
public abstract interface Super : R|kotlin/Any| {
public abstract fun dummy(): R|kotlin/Unit|
public abstract fun foo(): R|kotlin/collections/MutableList<kotlin/String>|
public abstract fun dummy(): R|kotlin/Unit|
}
public abstract interface Sub : R|test/AddNullabilitySameGenericType2.Super| {
@@ -1,9 +1,9 @@
public abstract interface AddNullabilitySameJavaType : R|kotlin/Any| {
public abstract interface Super : R|kotlin/Any| {
public abstract fun dummy(): R|kotlin/Unit|
public abstract fun foo(): R|kotlin/CharSequence|
public abstract fun dummy(): R|kotlin/Unit|
}
public abstract interface Sub : R|test/AddNullabilitySameJavaType.Super| {
@@ -1,9 +1,9 @@
public abstract interface CantMakeImmutableInSubclass : R|kotlin/Any| {
public abstract interface Super : R|kotlin/Any| {
public abstract fun dummy(): R|kotlin/Unit|
public abstract fun foo(): R|kotlin/collections/MutableCollection<kotlin/String>|
public abstract fun dummy(): R|kotlin/Unit|
}
public abstract interface Sub : R|test/CantMakeImmutableInSubclass.Super| {
@@ -1,9 +1,9 @@
public abstract interface DeeplySubstitutedClassParameter : R|kotlin/Any| {
public abstract interface Super<T> : R|kotlin/Any| {
public abstract fun dummy(): R|kotlin/Unit|
public abstract fun foo(): R|T|
public abstract fun dummy(): R|kotlin/Unit|
}
public abstract interface Middle<E> : R|test/DeeplySubstitutedClassParameter.Super<E>| {
@@ -1,9 +1,9 @@
public abstract interface DeeplySubstitutedClassParameter2 : R|kotlin/Any| {
public abstract interface Super<T> : R|kotlin/Any| {
public abstract fun dummy(): R|kotlin/Unit|
public abstract fun foo(): R|T|
public abstract fun dummy(): R|kotlin/Unit|
}
public abstract interface Middle<E> : R|test/DeeplySubstitutedClassParameter2.Super<E>| {
@@ -3,10 +3,10 @@ public abstract interface HalfSubstitutedTypeParameters : R|kotlin/Any| {
}
public abstract interface Super : R|kotlin/Any| {
public abstract fun dummy(): R|kotlin/Unit|
public abstract fun foo(): R|kotlin/collections/MutableList<kotlin/String?>|
public abstract fun dummy(): R|kotlin/Unit|
}
public abstract interface Sub : R|test/HalfSubstitutedTypeParameters.Super| {
@@ -1,9 +1,9 @@
public abstract interface InheritNullabilityGenericSubclassSimple : R|kotlin/Any| {
public abstract interface Super : R|kotlin/Any| {
public abstract fun dummy(): R|kotlin/Unit|
public abstract fun foo(): R|kotlin/collections/MutableCollection<kotlin/String>|
public abstract fun dummy(): R|kotlin/Unit|
}
public abstract interface Sub : R|test/InheritNullabilityGenericSubclassSimple.Super| {
@@ -1,9 +1,9 @@
public abstract interface InheritNullabilityJavaSubtype : R|kotlin/Any| {
public abstract interface Super : R|kotlin/Any| {
public abstract fun dummy(): R|kotlin/Unit|
public abstract fun foo(): R|kotlin/CharSequence|
public abstract fun dummy(): R|kotlin/Unit|
}
public abstract interface Sub : R|test/InheritNullabilityJavaSubtype.Super| {
@@ -1,9 +1,9 @@
public abstract interface InheritNullabilitySameGenericType : R|kotlin/Any| {
public abstract interface Super : R|kotlin/Any| {
public abstract fun dummy(): R|kotlin/Unit|
public abstract fun foo(): R|kotlin/collections/MutableList<kotlin/String>|
public abstract fun dummy(): R|kotlin/Unit|
}
public abstract interface Sub : R|test/InheritNullabilitySameGenericType.Super| {
@@ -1,9 +1,9 @@
public abstract interface InheritNullabilitySameJavaType : R|kotlin/Any| {
public abstract interface Super : R|kotlin/Any| {
public abstract fun dummy(): R|kotlin/Unit|
public abstract fun foo(): R|kotlin/CharSequence|
public abstract fun dummy(): R|kotlin/Unit|
}
public abstract interface Sub : R|test/InheritNullabilitySameJavaType.Super| {
@@ -1,9 +1,9 @@
public abstract interface InheritProjectionKind : R|kotlin/Any| {
public abstract interface Super : R|kotlin/Any| {
public abstract fun dummy(): R|kotlin/Unit|
public abstract fun foo(): R|kotlin/collections/MutableCollection<out kotlin/Number>|
public abstract fun dummy(): R|kotlin/Unit|
}
public abstract interface Sub : R|test/InheritProjectionKind.Super| {
@@ -1,9 +1,9 @@
public abstract interface InheritReadOnlinessOfArgument : R|kotlin/Any| {
public abstract interface Super : R|kotlin/Any| {
public abstract fun dummy(): R|kotlin/Unit|
public abstract fun foo(): R|kotlin/collections/List<kotlin/collections/List<kotlin/String>>|
public abstract fun dummy(): R|kotlin/Unit|
}
public abstract interface Sub : R|test/InheritReadOnlinessOfArgument.Super| {
@@ -1,9 +1,9 @@
public abstract interface InheritReadOnlinessSameClass : R|kotlin/Any| {
public abstract interface Super : R|kotlin/Any| {
public abstract fun dummy(): R|kotlin/Unit|
public abstract fun foo(): R|kotlin/collections/List<kotlin/String>|
public abstract fun dummy(): R|kotlin/Unit|
}
public abstract interface Sub : R|test/InheritReadOnlinessSameClass.Super| {
@@ -1,9 +1,9 @@
public abstract interface InheritReadOnlinessSubclass : R|kotlin/Any| {
public abstract interface Super : R|kotlin/Any| {
public abstract fun dummy(): R|kotlin/Unit|
public abstract fun foo(): R|kotlin/collections/Collection<kotlin/String>|
public abstract fun dummy(): R|kotlin/Unit|
}
public abstract interface Sub : R|test/InheritReadOnlinessSubclass.Super| {
@@ -1,9 +1,9 @@
public abstract interface SameProjectionKind : R|kotlin/Any| {
public abstract interface Super : R|kotlin/Any| {
public abstract fun dummy(): R|kotlin/Unit|
public abstract fun foo(): R|kotlin/collections/MutableCollection<out kotlin/Number?>?|
public abstract fun dummy(): R|kotlin/Unit|
}
public abstract interface Sub : R|test/SameProjectionKind.Super| {
@@ -1,16 +1,16 @@
public abstract interface SubclassFromGenericAndNot : R|kotlin/Any| {
public abstract interface NonGeneric : R|kotlin/Any| {
public abstract fun dummy(): R|kotlin/Unit|
public abstract fun foo(): R|kotlin/String?|
public abstract fun dummy(): R|kotlin/Unit|
}
public abstract interface Generic<T> : R|kotlin/Any| {
public abstract fun dummy(): R|kotlin/Unit|
public abstract fun foo(): R|T|
public abstract fun dummy(): R|kotlin/Unit|
}
public abstract interface Sub : R|test/SubclassFromGenericAndNot.NonGeneric|, R|test/SubclassFromGenericAndNot.Generic<kotlin/String>| {
@@ -1,9 +1,9 @@
public abstract interface SubstitutedClassParameter : R|kotlin/Any| {
public abstract interface Super<T> : R|kotlin/Any| {
public abstract fun dummy(): R|kotlin/Unit|
public abstract fun foo(): R|T|
public abstract fun dummy(): R|kotlin/Unit|
}
public abstract interface Sub : R|test/SubstitutedClassParameter.Super<kotlin/String>| {
@@ -1,16 +1,16 @@
public abstract interface SubstitutedClassParameters : R|kotlin/Any| {
public abstract interface Super1<T> : R|kotlin/Any| {
public abstract fun dummy(): R|kotlin/Unit|
public abstract fun foo(): R|T|
public abstract fun dummy(): R|kotlin/Unit|
}
public abstract interface Super2<E> : R|kotlin/Any| {
public abstract fun dummy(): R|kotlin/Unit|
public abstract fun foo(): R|E|
public abstract fun dummy(): R|kotlin/Unit|
}
public abstract interface Sub : R|test/SubstitutedClassParameters.Super1<kotlin/String>|, R|test/SubstitutedClassParameters.Super2<kotlin/String>| {
@@ -1,16 +1,16 @@
public abstract interface TwoSuperclassesConflictingProjectionKinds : R|kotlin/Any| {
public abstract interface Super1 : R|kotlin/Any| {
public abstract fun dummy(): R|kotlin/Unit|
public abstract fun foo(): R|kotlin/collections/MutableCollection<kotlin/CharSequence>|
public abstract fun dummy(): R|kotlin/Unit|
}
public abstract interface Super2 : R|kotlin/Any| {
public abstract fun dummy(): R|kotlin/Unit|
public abstract fun foo(): R|kotlin/collections/MutableCollection<out kotlin/CharSequence>|
public abstract fun dummy(): R|kotlin/Unit|
}
public abstract interface Sub : R|test/TwoSuperclassesConflictingProjectionKinds.Super1|, R|test/TwoSuperclassesConflictingProjectionKinds.Super2| {
@@ -1,16 +1,16 @@
public abstract interface TwoSuperclassesInvariantAndCovariantInferMutability : R|kotlin/Any| {
public abstract interface Super1 : R|kotlin/Any| {
public abstract fun dummy(): R|kotlin/Unit|
public abstract fun foo(): R|kotlin/collections/List<kotlin/collections/List<kotlin/String>>|
public abstract fun dummy(): R|kotlin/Unit|
}
public abstract interface Super2 : R|kotlin/Any| {
public abstract fun dummy(): R|kotlin/Unit|
public abstract fun foo(): R|kotlin/collections/MutableList<kotlin/collections/MutableList<kotlin/String>>|
public abstract fun dummy(): R|kotlin/Unit|
}
public abstract interface Sub : R|test/TwoSuperclassesInvariantAndCovariantInferMutability.Super1|, R|test/TwoSuperclassesInvariantAndCovariantInferMutability.Super2| {
@@ -1,16 +1,16 @@
public abstract interface TwoSuperclassesInvariantAndCovariantInferNullability : R|kotlin/Any| {
public abstract interface Super1 : R|kotlin/Any| {
public abstract fun dummy(): R|kotlin/Unit|
public abstract fun foo(): R|kotlin/collections/List<kotlin/String?>|
public abstract fun dummy(): R|kotlin/Unit|
}
public abstract interface Super2 : R|kotlin/Any| {
public abstract fun dummy(): R|kotlin/Unit|
public abstract fun foo(): R|kotlin/collections/MutableList<kotlin/String>|
public abstract fun dummy(): R|kotlin/Unit|
}
public abstract interface Sub : R|test/TwoSuperclassesInvariantAndCovariantInferNullability.Super1|, R|test/TwoSuperclassesInvariantAndCovariantInferNullability.Super2| {
@@ -1,16 +1,16 @@
public abstract interface TwoSuperclassesMutableAndNot : R|kotlin/Any| {
public abstract interface Super1 : R|kotlin/Any| {
public abstract fun dummy(): R|kotlin/Unit|
public abstract fun foo(): R|kotlin/collections/MutableCollection<kotlin/String>|
public abstract fun dummy(): R|kotlin/Unit|
}
public abstract interface Super2 : R|kotlin/Any| {
public abstract fun dummy(): R|kotlin/Unit|
public abstract fun foo(): R|kotlin/collections/List<kotlin/String>|
public abstract fun dummy(): R|kotlin/Unit|
}
public abstract interface Sub : R|test/TwoSuperclassesMutableAndNot.Super1|, R|test/TwoSuperclassesMutableAndNot.Super2| {
@@ -1,16 +1,16 @@
public abstract interface TwoSuperclassesReturnJavaSubtype : R|kotlin/Any| {
public abstract interface Super1 : R|kotlin/Any| {
public abstract fun dummy(): R|kotlin/Unit|
public abstract fun foo(): R|kotlin/CharSequence?|
public abstract fun dummy(): R|kotlin/Unit|
}
public abstract interface Super2 : R|kotlin/Any| {
public abstract fun dummy(): R|kotlin/Unit|
public abstract fun foo(): R|kotlin/CharSequence|
public abstract fun dummy(): R|kotlin/Unit|
}
public abstract interface Sub : R|test/TwoSuperclassesReturnJavaSubtype.Super1|, R|test/TwoSuperclassesReturnJavaSubtype.Super2| {
@@ -1,16 +1,16 @@
public abstract interface TwoSuperclassesReturnSameJavaType : R|kotlin/Any| {
public abstract interface Super1 : R|kotlin/Any| {
public abstract fun dummy(): R|kotlin/Unit|
public abstract fun foo(): R|kotlin/CharSequence?|
public abstract fun dummy(): R|kotlin/Unit|
}
public abstract interface Super2 : R|kotlin/Any| {
public abstract fun dummy(): R|kotlin/Unit|
public abstract fun foo(): R|kotlin/CharSequence|
public abstract fun dummy(): R|kotlin/Unit|
}
public abstract interface Sub : R|test/TwoSuperclassesReturnSameJavaType.Super1|, R|test/TwoSuperclassesReturnSameJavaType.Super2| {
@@ -1,16 +1,16 @@
public abstract interface TwoSuperclassesSupplementNotNull : R|kotlin/Any| {
public abstract interface Super1 : R|kotlin/Any| {
public abstract fun dummy(): R|kotlin/Unit|
public abstract fun foo(): R|kotlin/collections/List<kotlin/String?>|
public abstract fun dummy(): R|kotlin/Unit|
}
public abstract interface Super2 : R|kotlin/Any| {
public abstract fun dummy(): R|kotlin/Unit|
public abstract fun foo(): R|kotlin/collections/List<kotlin/String>?|
public abstract fun dummy(): R|kotlin/Unit|
}
public abstract interface Sub : R|test/TwoSuperclassesSupplementNotNull.Super1|, R|test/TwoSuperclassesSupplementNotNull.Super2| {
@@ -1,9 +1,9 @@
public abstract interface TypeParamOfClass : R|kotlin/Any| {
public abstract interface Super<T> : R|kotlin/Any| {
public abstract fun dummy(): R|kotlin/Unit|
public abstract fun foo(): R|T|
public abstract fun dummy(): R|kotlin/Unit|
}
public abstract interface Sub<T> : R|test/TypeParamOfClass.Super<T>| {
@@ -1,9 +1,9 @@
public abstract interface TypeParamOfClassSubstituted : R|kotlin/Any| {
public abstract interface Super<T> : R|kotlin/Any| {
public abstract fun dummy(): R|kotlin/Unit|
public abstract fun foo(): R|T|
public abstract fun dummy(): R|kotlin/Unit|
}
public abstract interface Sub : R|test/TypeParamOfClassSubstituted.Super<kotlin/String>| {
@@ -1,9 +1,9 @@
public abstract interface TypeParamOfFun : R|kotlin/Any| {
public abstract interface Super : R|kotlin/Any| {
public abstract fun dummy(): R|kotlin/Unit|
public abstract fun <T> foo(): R|T|
public abstract fun dummy(): R|kotlin/Unit|
}
public abstract interface Sub : R|test/TypeParamOfFun.Super| {
@@ -14,4 +14,3 @@ public abstract interface Super2 : R|kotlin/Any| {
private final fun foo(): R|kotlin/String|
}
@@ -0,0 +1,16 @@
public abstract interface Sub : R|test/Super1|, R|test/Super2| {
}
public abstract interface Super1 : R|kotlin/Any| {
public abstract fun foo(): R|kotlin/CharSequence|
private final fun bar(): R|kotlin/String|
}
public abstract interface Super2 : R|kotlin/Any| {
private final fun foo(): R|kotlin/String|
public abstract fun bar(): R|kotlin/CharSequence|
}
@@ -0,0 +1,18 @@
public abstract interface A : R|kotlin/Any| {
public open fun foo(): R|kotlin/Unit|
public open fun bar(): R|kotlin/Unit|
}
public open class B : R|test/A| {
public constructor(): R|test/B|
}
public final class C : R|test/B| {
public open fun bar(): R|kotlin/Unit|
public constructor(): R|test/C|
}
@@ -1,26 +1,26 @@
public final class A : R|kotlin/Any| {
public final fun f1(): R|kotlin/Unit|
public final fun R|kotlin/String|.f1(): R|kotlin/Unit|
public final fun f1(): R|kotlin/Unit|
public final fun R|kotlin/Int|.f1(): R|kotlin/Unit|
public final fun f2(): R|kotlin/Unit|
public final fun R|kotlin/String|.f2(): R|kotlin/Unit|
public final fun f2(): R|kotlin/Unit|
public final fun R|kotlin/Int|.f2(): R|kotlin/Unit|
public final fun f3(): R|kotlin/Unit|
public final fun R|kotlin/String|.f3(): R|kotlin/Unit|
public final fun f3(): R|kotlin/Unit|
public final fun R|kotlin/Int|.f3(): R|kotlin/Unit|
public final val c: R|kotlin/Int|
public final val R|kotlin/Int|.c: R|kotlin/Int|
public get(): R|kotlin/Int|
public final val R|kotlin/Int|.c: R|kotlin/Int|
public final val c: R|kotlin/Int|
public get(): R|kotlin/Int|
public final val d: R|kotlin/Int|
@@ -1,19 +0,0 @@
public final class A : R|kotlin/Any| {
public final val a: R|kotlin/Int|
public get(): R|kotlin/Int|
public final val R|kotlin/Int|.a: R|kotlin/Int|
public get(): R|kotlin/Int|
public final val R|kotlin/Int|.b: R|kotlin/Int|
public get(): R|kotlin/Int|
public final val c: R|kotlin/Int|
public get(): R|kotlin/Int|
public final val R|kotlin/Int|.c: R|kotlin/Int|
public get(): R|kotlin/Int|
public constructor(): R|test/A|
}

Some files were not shown because too many files have changed in this diff Show More