[Commonizer] Classifiers tests
This commit is contained in:
+6
-2
@@ -92,8 +92,12 @@ class CommonizedClassDescriptor(
|
|||||||
if (isExpect && kind.isSingleton) {
|
if (isExpect && kind.isSingleton) {
|
||||||
check(constructors.isEmpty())
|
check(constructors.isEmpty())
|
||||||
|
|
||||||
primaryConstructor = createPrimaryConstructorForObject(this, SourceElement.NO_SOURCE).apply { returnType = getDefaultType() }
|
primaryConstructor = if (kind == ClassKind.ENUM_ENTRY)
|
||||||
this.constructors = listOf(primaryConstructor!!)
|
createPrimaryConstructorForObject(this, SourceElement.NO_SOURCE).apply { returnType = getDefaultType() }
|
||||||
|
else
|
||||||
|
null
|
||||||
|
|
||||||
|
this.constructors = listOfNotNull(primaryConstructor)
|
||||||
} else {
|
} else {
|
||||||
constructors.forEach { it.returnType = getDefaultType() }
|
constructors.forEach { it.returnType = getDefaultType() }
|
||||||
|
|
||||||
|
|||||||
+3
-2
@@ -40,8 +40,8 @@ class CommonizedTypeAliasDescriptor(
|
|||||||
|
|
||||||
override fun isActual() = isActual
|
override fun isActual() = isActual
|
||||||
|
|
||||||
fun initialize(underlyingType: SimpleType, expandedType: SimpleType) {
|
fun initialize(declaredTypeParameters: List<TypeParameterDescriptor>, underlyingType: SimpleType, expandedType: SimpleType) {
|
||||||
super.initialize(emptyList())
|
super.initialize(declaredTypeParameters)
|
||||||
this.underlyingType = underlyingType
|
this.underlyingType = underlyingType
|
||||||
this.expandedType = expandedType
|
this.expandedType = expandedType
|
||||||
typeConstructorParameters = computeConstructorTypeParameters()
|
typeConstructorParameters = computeConstructorTypeParameters()
|
||||||
@@ -60,6 +60,7 @@ class CommonizedTypeAliasDescriptor(
|
|||||||
isActual = isActual
|
isActual = isActual
|
||||||
)
|
)
|
||||||
substituted.initialize(
|
substituted.initialize(
|
||||||
|
declaredTypeParameters,
|
||||||
substitutor.safeSubstitute(underlyingType, Variance.INVARIANT).asSimpleType(),
|
substitutor.safeSubstitute(underlyingType, Variance.INVARIANT).asSimpleType(),
|
||||||
substitutor.safeSubstitute(expandedType, Variance.INVARIANT).asSimpleType()
|
substitutor.safeSubstitute(expandedType, Variance.INVARIANT).asSimpleType()
|
||||||
)
|
)
|
||||||
|
|||||||
+5
-7
@@ -5,10 +5,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.descriptors.commonizer.builder
|
package org.jetbrains.kotlin.descriptors.commonizer.builder
|
||||||
|
|
||||||
import org.jetbrains.kotlin.descriptors.ClassConstructorDescriptor
|
import org.jetbrains.kotlin.descriptors.*
|
||||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
|
||||||
import org.jetbrains.kotlin.descriptors.ClassifierDescriptorWithTypeParameters
|
|
||||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
|
||||||
import org.jetbrains.kotlin.descriptors.commonizer.CommonizedGroup
|
import org.jetbrains.kotlin.descriptors.commonizer.CommonizedGroup
|
||||||
import org.jetbrains.kotlin.descriptors.commonizer.mergedtree.ir.*
|
import org.jetbrains.kotlin.descriptors.commonizer.mergedtree.ir.*
|
||||||
import org.jetbrains.kotlin.descriptors.commonizer.mergedtree.ir.indexOfCommon
|
import org.jetbrains.kotlin.descriptors.commonizer.mergedtree.ir.indexOfCommon
|
||||||
@@ -20,9 +17,10 @@ internal fun ClassNode.buildDescriptors(
|
|||||||
storageManager: StorageManager
|
storageManager: StorageManager
|
||||||
) {
|
) {
|
||||||
val commonClass = common()
|
val commonClass = common()
|
||||||
|
val markAsActual = commonClass != null && commonClass.kind != ClassKind.ENUM_ENTRY
|
||||||
|
|
||||||
target.forEachIndexed { index, clazz ->
|
target.forEachIndexed { index, clazz ->
|
||||||
clazz?.buildDescriptor(output, index, containingDeclarations, storageManager, isActual = commonClass != null)
|
clazz?.buildDescriptor(output, index, containingDeclarations, storageManager, isActual = markAsActual)
|
||||||
}
|
}
|
||||||
|
|
||||||
commonClass?.buildDescriptor(output, indexOfCommon, containingDeclarations, storageManager, isExpect = true)
|
commonClass?.buildDescriptor(output, indexOfCommon, containingDeclarations, storageManager, isExpect = true)
|
||||||
@@ -67,13 +65,13 @@ internal fun ClassConstructorNode.buildDescriptors(
|
|||||||
containingDeclarations: List<ClassDescriptor?>
|
containingDeclarations: List<ClassDescriptor?>
|
||||||
) {
|
) {
|
||||||
val commonConstructor = common()
|
val commonConstructor = common()
|
||||||
|
val markAsActual = commonConstructor != null
|
||||||
|
|
||||||
target.forEachIndexed { index, constructor ->
|
target.forEachIndexed { index, constructor ->
|
||||||
constructor?.buildDescriptor(output, index, containingDeclarations, isActual = commonConstructor != null)
|
constructor?.buildDescriptor(output, index, containingDeclarations, isActual = markAsActual)
|
||||||
}
|
}
|
||||||
|
|
||||||
commonConstructor?.buildDescriptor(output, indexOfCommon, containingDeclarations, isExpect = true)
|
commonConstructor?.buildDescriptor(output, indexOfCommon, containingDeclarations, isExpect = true)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun ClassConstructor.buildDescriptor(
|
private fun ClassConstructor.buildDescriptor(
|
||||||
|
|||||||
+4
-2
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.descriptors.commonizer.builder
|
package org.jetbrains.kotlin.descriptors.commonizer.builder
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.SimpleFunctionDescriptor
|
import org.jetbrains.kotlin.descriptors.SimpleFunctionDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.SourceElement
|
import org.jetbrains.kotlin.descriptors.SourceElement
|
||||||
@@ -19,12 +20,13 @@ internal fun FunctionNode.buildDescriptors(
|
|||||||
containingDeclarations: List<DeclarationDescriptor?>
|
containingDeclarations: List<DeclarationDescriptor?>
|
||||||
) {
|
) {
|
||||||
val commonFunction = common()
|
val commonFunction = common()
|
||||||
|
val markAsExpectAndActual = commonFunction != null && commonFunction.kind != CallableMemberDescriptor.Kind.SYNTHESIZED
|
||||||
|
|
||||||
target.forEachIndexed { index, function ->
|
target.forEachIndexed { index, function ->
|
||||||
function?.buildDescriptor(output, index, containingDeclarations, isActual = commonFunction != null)
|
function?.buildDescriptor(output, index, containingDeclarations, isActual = markAsExpectAndActual)
|
||||||
}
|
}
|
||||||
|
|
||||||
commonFunction?.buildDescriptor(output, indexOfCommon, containingDeclarations, isExpect = true)
|
commonFunction?.buildDescriptor(output, indexOfCommon, containingDeclarations, isExpect = markAsExpectAndActual)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun Function.buildDescriptor(
|
private fun Function.buildDescriptor(
|
||||||
|
|||||||
+7
-2
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.descriptors.commonizer.builder
|
package org.jetbrains.kotlin.descriptors.commonizer.builder
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.PropertyDescriptor
|
import org.jetbrains.kotlin.descriptors.PropertyDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.SourceElement
|
import org.jetbrains.kotlin.descriptors.SourceElement
|
||||||
@@ -23,12 +24,16 @@ internal fun PropertyNode.buildDescriptors(
|
|||||||
storageManager: StorageManager
|
storageManager: StorageManager
|
||||||
) {
|
) {
|
||||||
val commonProperty = common()
|
val commonProperty = common()
|
||||||
|
val markAsExpectAndActual = commonProperty != null && commonProperty.kind != CallableMemberDescriptor.Kind.SYNTHESIZED
|
||||||
|
|
||||||
target.forEachIndexed { index, property ->
|
target.forEachIndexed { index, property ->
|
||||||
property?.buildDescriptor(output, index, containingDeclarations, storageManager, isActual = commonProperty != null)
|
// target property is DELEGATION
|
||||||
|
// AND
|
||||||
|
// the property it overrides is actual
|
||||||
|
property?.buildDescriptor(output, index, containingDeclarations, storageManager, isActual = markAsExpectAndActual)
|
||||||
}
|
}
|
||||||
|
|
||||||
commonProperty?.buildDescriptor(output, indexOfCommon, containingDeclarations, storageManager, isExpect = true)
|
commonProperty?.buildDescriptor(output, indexOfCommon, containingDeclarations, storageManager, isExpect = markAsExpectAndActual)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun Property.buildDescriptor(
|
private fun Property.buildDescriptor(
|
||||||
|
|||||||
+7
-2
@@ -20,9 +20,10 @@ internal fun TypeAliasNode.buildDescriptors(
|
|||||||
storageManager: StorageManager
|
storageManager: StorageManager
|
||||||
) {
|
) {
|
||||||
val commonClass: ClassDeclaration? = common()
|
val commonClass: ClassDeclaration? = common()
|
||||||
|
val markAsActual = commonClass != null
|
||||||
|
|
||||||
target.forEachIndexed { index, typeAlias ->
|
target.forEachIndexed { index, typeAlias ->
|
||||||
typeAlias?.buildDescriptor(output, index, containingDeclarations, storageManager, isActual = commonClass != null)
|
typeAlias?.buildDescriptor(output, index, containingDeclarations, storageManager, isActual = markAsActual)
|
||||||
}
|
}
|
||||||
|
|
||||||
commonClass?.buildDescriptor(output, indexOfCommon, containingDeclarations, storageManager, isExpect = true)
|
commonClass?.buildDescriptor(output, indexOfCommon, containingDeclarations, storageManager, isExpect = true)
|
||||||
@@ -46,7 +47,11 @@ private fun TypeAlias.buildDescriptor(
|
|||||||
isActual = isActual
|
isActual = isActual
|
||||||
)
|
)
|
||||||
|
|
||||||
typeAliasDescriptor.initialize(underlyingType, expandedType)
|
typeAliasDescriptor.initialize(
|
||||||
|
declaredTypeParameters = typeParameters.buildDescriptors(typeAliasDescriptor),
|
||||||
|
underlyingType = underlyingType,
|
||||||
|
expandedType = expandedType
|
||||||
|
)
|
||||||
|
|
||||||
output[index] = typeAliasDescriptor
|
output[index] = typeAliasDescriptor
|
||||||
}
|
}
|
||||||
|
|||||||
+11
-2
@@ -5,8 +5,12 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.descriptors.commonizer.core
|
package org.jetbrains.kotlin.descriptors.commonizer.core
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor
|
||||||
|
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor.Kind.DELEGATION
|
||||||
|
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor.Kind.SYNTHESIZED
|
||||||
import org.jetbrains.kotlin.descriptors.commonizer.mergedtree.ir.ClassifiersCache
|
import org.jetbrains.kotlin.descriptors.commonizer.mergedtree.ir.ClassifiersCache
|
||||||
import org.jetbrains.kotlin.descriptors.commonizer.mergedtree.ir.FunctionOrProperty
|
import org.jetbrains.kotlin.descriptors.commonizer.mergedtree.ir.FunctionOrProperty
|
||||||
|
import org.jetbrains.kotlin.descriptors.commonizer.mergedtree.ir.isNonAbstractMemberInInterface
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
|
||||||
abstract class AbstractFunctionOrPropertyCommonizer<T : FunctionOrProperty>(cache: ClassifiersCache) : AbstractStandardCommonizer<T, T>() {
|
abstract class AbstractFunctionOrPropertyCommonizer<T : FunctionOrProperty>(cache: ClassifiersCache) : AbstractStandardCommonizer<T, T>() {
|
||||||
@@ -15,14 +19,19 @@ abstract class AbstractFunctionOrPropertyCommonizer<T : FunctionOrProperty>(cach
|
|||||||
protected val visibility = VisibilityCommonizer.lowering()
|
protected val visibility = VisibilityCommonizer.lowering()
|
||||||
protected val extensionReceiver = ExtensionReceiverCommonizer.default(cache)
|
protected val extensionReceiver = ExtensionReceiverCommonizer.default(cache)
|
||||||
protected val returnType = TypeCommonizer.default(cache)
|
protected val returnType = TypeCommonizer.default(cache)
|
||||||
|
protected lateinit var kind: CallableMemberDescriptor.Kind
|
||||||
protected val typeParameters = TypeParameterListCommonizer.default(cache)
|
protected val typeParameters = TypeParameterListCommonizer.default(cache)
|
||||||
|
|
||||||
override fun initialize(first: T) {
|
override fun initialize(first: T) {
|
||||||
name = first.name
|
name = first.name
|
||||||
|
kind = first.kind
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun doCommonizeWith(next: T) =
|
override fun doCommonizeWith(next: T): Boolean =
|
||||||
!next.isNonAbstractCallableMemberInInterface // non-abstract callable members declared in interface can't be commonized
|
!next.isNonAbstractMemberInInterface() // non-abstract callable members declared in interface can't be commonized
|
||||||
|
&& next.kind != DELEGATION // delegated members should not be commonized
|
||||||
|
&& (next.kind != SYNTHESIZED || next.containingClassIsData != true) // synthesized members of data classes should not be commonized
|
||||||
|
&& kind == next.kind
|
||||||
&& modality.commonizeWith(next.modality)
|
&& modality.commonizeWith(next.modality)
|
||||||
&& visibility.commonizeWith(next)
|
&& visibility.commonizeWith(next)
|
||||||
&& extensionReceiver.commonizeWith(next.extensionReceiver)
|
&& extensionReceiver.commonizeWith(next.extensionReceiver)
|
||||||
|
|||||||
+1
-1
@@ -41,7 +41,7 @@ abstract class AbstractListCommonizer<T, R>(
|
|||||||
if (commonizers.size != next.size) // lists must be of the same size
|
if (commonizers.size != next.size) // lists must be of the same size
|
||||||
error = true
|
error = true
|
||||||
else
|
else
|
||||||
for (index in 0 until next.size) {
|
for (index in next.indices) {
|
||||||
val commonizer = commonizers[index]
|
val commonizer = commonizers[index]
|
||||||
val nextElement = next[index]
|
val nextElement = next[index]
|
||||||
|
|
||||||
|
|||||||
-1
@@ -45,7 +45,6 @@ class ClassCommonizer(cache: ClassifiersCache) : AbstractStandardCommonizer<Clas
|
|||||||
&& isInner == next.isInner
|
&& isInner == next.isInner
|
||||||
&& isInline == next.isInline
|
&& isInline == next.isInline
|
||||||
&& isCompanion == next.isCompanion
|
&& isCompanion == next.isCompanion
|
||||||
&& next.sealedSubclasses.isEmpty() // commonization of sealed classes is not supported, but their subclasses can be commonized
|
|
||||||
&& modality.commonizeWith(next.modality)
|
&& modality.commonizeWith(next.modality)
|
||||||
&& visibility.commonizeWith(next)
|
&& visibility.commonizeWith(next)
|
||||||
&& typeParameters.commonizeWith(next.typeParameters)
|
&& typeParameters.commonizeWith(next.typeParameters)
|
||||||
|
|||||||
+4
-1
@@ -6,6 +6,7 @@
|
|||||||
package org.jetbrains.kotlin.descriptors.commonizer.core
|
package org.jetbrains.kotlin.descriptors.commonizer.core
|
||||||
|
|
||||||
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor
|
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor
|
||||||
|
import org.jetbrains.kotlin.descriptors.Modality
|
||||||
import org.jetbrains.kotlin.descriptors.commonizer.mergedtree.ir.ClassConstructor
|
import org.jetbrains.kotlin.descriptors.commonizer.mergedtree.ir.ClassConstructor
|
||||||
import org.jetbrains.kotlin.descriptors.commonizer.mergedtree.ir.ClassifiersCache
|
import org.jetbrains.kotlin.descriptors.commonizer.mergedtree.ir.ClassifiersCache
|
||||||
import org.jetbrains.kotlin.descriptors.commonizer.mergedtree.ir.CommonClassConstructor
|
import org.jetbrains.kotlin.descriptors.commonizer.mergedtree.ir.CommonClassConstructor
|
||||||
@@ -35,7 +36,9 @@ class ClassConstructorCommonizer(cache: ClassifiersCache) : AbstractStandardComm
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun doCommonizeWith(next: ClassConstructor): Boolean {
|
override fun doCommonizeWith(next: ClassConstructor): Boolean {
|
||||||
val result = isPrimary == next.isPrimary
|
val result = !next.containingClassKind.isSingleton // don't commonize constructors for objects and enum entries
|
||||||
|
&& next.containingClassModality != Modality.SEALED // don't commonize constructors for sealed classes (not not their subclasses)
|
||||||
|
&& isPrimary == next.isPrimary
|
||||||
&& kind == next.kind
|
&& kind == next.kind
|
||||||
&& visibility.commonizeWith(next)
|
&& visibility.commonizeWith(next)
|
||||||
&& typeParameters.commonizeWith(next.typeParameters)
|
&& typeParameters.commonizeWith(next.typeParameters)
|
||||||
|
|||||||
+1
@@ -22,6 +22,7 @@ class FunctionCommonizer(cache: ClassifiersCache) : AbstractFunctionOrPropertyCo
|
|||||||
visibility = visibility.result,
|
visibility = visibility.result,
|
||||||
extensionReceiver = extensionReceiver.result?.toReceiverNoAnnotations(),
|
extensionReceiver = extensionReceiver.result?.toReceiverNoAnnotations(),
|
||||||
returnType = returnType.result,
|
returnType = returnType.result,
|
||||||
|
kind = kind,
|
||||||
modifiers = modifiers.result,
|
modifiers = modifiers.result,
|
||||||
valueParameters = valueParameters.result,
|
valueParameters = valueParameters.result,
|
||||||
typeParameters = typeParameters.result,
|
typeParameters = typeParameters.result,
|
||||||
|
|||||||
+18
-52
@@ -14,61 +14,27 @@ interface ModalityCommonizer : Commonizer<Modality, Modality> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private class DefaultModalityCommonizer : ModalityCommonizer {
|
private class DefaultModalityCommonizer : ModalityCommonizer {
|
||||||
private enum class State {
|
private var temp: Modality? = null
|
||||||
EMPTY {
|
private var error = false
|
||||||
override fun getNext(modality: Modality) = when (modality) {
|
|
||||||
Modality.ABSTRACT -> CAN_HAVE_ONLY_ABSTRACT
|
|
||||||
Modality.SEALED -> CAN_HAVE_ONLY_SEALED
|
|
||||||
Modality.FINAL -> HAS_FINAL
|
|
||||||
Modality.OPEN -> HAS_OPEN
|
|
||||||
}
|
|
||||||
},
|
|
||||||
ERROR {
|
|
||||||
override fun getNext(modality: Modality) = ERROR
|
|
||||||
},
|
|
||||||
CAN_HAVE_ONLY_SEALED {
|
|
||||||
override fun getNext(modality: Modality) = if (modality == Modality.SEALED) this else ERROR
|
|
||||||
},
|
|
||||||
CAN_HAVE_ONLY_ABSTRACT {
|
|
||||||
override fun getNext(modality: Modality) = if (modality == Modality.ABSTRACT) this else ERROR
|
|
||||||
},
|
|
||||||
HAS_FINAL {
|
|
||||||
override fun getNext(modality: Modality) = when (modality) {
|
|
||||||
Modality.FINAL -> this
|
|
||||||
Modality.OPEN -> HAS_FINAL_AND_OPEN
|
|
||||||
else -> ERROR
|
|
||||||
}
|
|
||||||
},
|
|
||||||
HAS_OPEN {
|
|
||||||
override fun getNext(modality: Modality) = when (modality) {
|
|
||||||
Modality.FINAL -> HAS_FINAL_AND_OPEN
|
|
||||||
Modality.OPEN -> this
|
|
||||||
else -> ERROR
|
|
||||||
}
|
|
||||||
},
|
|
||||||
HAS_FINAL_AND_OPEN {
|
|
||||||
override fun getNext(modality: Modality) = when (modality) {
|
|
||||||
Modality.FINAL, Modality.OPEN -> this
|
|
||||||
else -> ERROR
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
abstract fun getNext(modality: Modality): State
|
|
||||||
}
|
|
||||||
|
|
||||||
private var state = State.EMPTY
|
|
||||||
|
|
||||||
override val result: Modality
|
override val result: Modality
|
||||||
get() = when (state) {
|
get() = temp?.takeIf { !error } ?: throw IllegalCommonizerStateException()
|
||||||
State.CAN_HAVE_ONLY_SEALED -> Modality.SEALED
|
|
||||||
State.CAN_HAVE_ONLY_ABSTRACT -> Modality.ABSTRACT
|
|
||||||
State.HAS_FINAL, State.HAS_FINAL_AND_OPEN -> Modality.FINAL
|
|
||||||
State.HAS_OPEN -> Modality.OPEN
|
|
||||||
else -> throw IllegalCommonizerStateException()
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun commonizeWith(next: Modality): Boolean {
|
override fun commonizeWith(next: Modality): Boolean {
|
||||||
state = state.getNext(next)
|
if (error)
|
||||||
return state != State.ERROR
|
return false
|
||||||
|
|
||||||
|
val temp = temp
|
||||||
|
this.temp = if (temp != null) getNext(temp, next) else next
|
||||||
|
error = this.temp == null
|
||||||
|
|
||||||
|
return !error
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun getNext(current: Modality, next: Modality): Modality? = when {
|
||||||
|
current == Modality.FINAL && next == Modality.OPEN -> Modality.FINAL
|
||||||
|
current == Modality.OPEN && next == Modality.FINAL -> Modality.FINAL
|
||||||
|
current == next -> current
|
||||||
|
else -> null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
@@ -21,6 +21,7 @@ class PropertyCommonizer(cache: ClassifiersCache) : AbstractFunctionOrPropertyCo
|
|||||||
isExternal = isExternal,
|
isExternal = isExternal,
|
||||||
extensionReceiver = extensionReceiver.result?.toReceiverNoAnnotations(),
|
extensionReceiver = extensionReceiver.result?.toReceiverNoAnnotations(),
|
||||||
returnType = returnType.result,
|
returnType = returnType.result,
|
||||||
|
kind = kind,
|
||||||
setter = setter.result,
|
setter = setter.result,
|
||||||
typeParameters = typeParameters.result
|
typeParameters = typeParameters.result
|
||||||
)
|
)
|
||||||
|
|||||||
+4
-5
@@ -7,7 +7,8 @@ package org.jetbrains.kotlin.descriptors.commonizer.core
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.descriptors.*
|
import org.jetbrains.kotlin.descriptors.*
|
||||||
import org.jetbrains.kotlin.descriptors.commonizer.mergedtree.ir.DeclarationWithVisibility
|
import org.jetbrains.kotlin.descriptors.commonizer.mergedtree.ir.DeclarationWithVisibility
|
||||||
import org.jetbrains.kotlin.descriptors.commonizer.mergedtree.ir.MaybeVirtualCallableMember
|
import org.jetbrains.kotlin.descriptors.commonizer.mergedtree.ir.FunctionOrProperty
|
||||||
|
import org.jetbrains.kotlin.descriptors.commonizer.mergedtree.ir.isVirtual
|
||||||
|
|
||||||
abstract class VisibilityCommonizer(private val allowPrivate: Boolean) : Commonizer<DeclarationWithVisibility, Visibility> {
|
abstract class VisibilityCommonizer(private val allowPrivate: Boolean) : Commonizer<DeclarationWithVisibility, Visibility> {
|
||||||
|
|
||||||
@@ -19,9 +20,7 @@ abstract class VisibilityCommonizer(private val allowPrivate: Boolean) : Commoni
|
|||||||
private var temp: Visibility? = null
|
private var temp: Visibility? = null
|
||||||
|
|
||||||
override val result: Visibility
|
override val result: Visibility
|
||||||
get() {
|
get() = temp?.takeIf { it != Visibilities.UNKNOWN } ?: throw IllegalCommonizerStateException()
|
||||||
return temp?.takeIf { it != Visibilities.UNKNOWN } ?: throw IllegalCommonizerStateException()
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun commonizeWith(next: DeclarationWithVisibility): Boolean {
|
override fun commonizeWith(next: DeclarationWithVisibility): Boolean {
|
||||||
if (temp == Visibilities.UNKNOWN)
|
if (temp == Visibilities.UNKNOWN)
|
||||||
@@ -52,7 +51,7 @@ private class LoweringVisibilityCommonizer(allowPrivate: Boolean) : VisibilityCo
|
|||||||
|
|
||||||
override fun canBeCommonized(next: DeclarationWithVisibility): Boolean {
|
override fun canBeCommonized(next: DeclarationWithVisibility): Boolean {
|
||||||
if (!atLeastOneVirtualCallableMet)
|
if (!atLeastOneVirtualCallableMet)
|
||||||
atLeastOneVirtualCallableMet = (next as? MaybeVirtualCallableMember)?.isVirtual == true
|
atLeastOneVirtualCallableMet = (next as? FunctionOrProperty)?.isVirtual() == true
|
||||||
|
|
||||||
return !atLeastOneVirtualCallableMet || !atLeastTwoVisibilitiesMet
|
return !atLeastOneVirtualCallableMet || !atLeastTwoVisibilitiesMet
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,11 +12,6 @@ import org.jetbrains.kotlin.descriptors.commonizer.core.CommonizationVisitor
|
|||||||
import org.jetbrains.kotlin.descriptors.commonizer.mergedtree.mergeRoots
|
import org.jetbrains.kotlin.descriptors.commonizer.mergedtree.mergeRoots
|
||||||
import org.jetbrains.kotlin.storage.LockBasedStorageManager
|
import org.jetbrains.kotlin.storage.LockBasedStorageManager
|
||||||
|
|
||||||
class CommonizationSession {
|
|
||||||
// TODO (???): add progress tracker
|
|
||||||
// TODO (???): add logger
|
|
||||||
}
|
|
||||||
|
|
||||||
class CommonizationParameters {
|
class CommonizationParameters {
|
||||||
private val modulesByTargets = LinkedHashMap<ConcreteTargetId, Collection<ModuleDescriptor>>()
|
private val modulesByTargets = LinkedHashMap<ConcreteTargetId, Collection<ModuleDescriptor>>()
|
||||||
|
|
||||||
|
|||||||
+11
-7
@@ -13,22 +13,23 @@ import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe
|
|||||||
import org.jetbrains.kotlin.types.KotlinType
|
import org.jetbrains.kotlin.types.KotlinType
|
||||||
import kotlin.LazyThreadSafetyMode.PUBLICATION
|
import kotlin.LazyThreadSafetyMode.PUBLICATION
|
||||||
|
|
||||||
interface ClassDeclaration : AnnotatedDeclaration, NamedDeclaration, DeclarationWithTypeParameters, DeclarationWithVisibility {
|
interface ClassDeclaration : AnnotatedDeclaration, NamedDeclaration, DeclarationWithTypeParameters, DeclarationWithVisibility, DeclarationWithModality {
|
||||||
val companion: FqName? // null means no companion object
|
val companion: FqName? // null means no companion object
|
||||||
val kind: ClassKind
|
val kind: ClassKind
|
||||||
val modality: Modality
|
|
||||||
val isCompanion: Boolean
|
val isCompanion: Boolean
|
||||||
val isData: Boolean
|
val isData: Boolean
|
||||||
val isInline: Boolean
|
val isInline: Boolean
|
||||||
val isInner: Boolean
|
val isInner: Boolean
|
||||||
val isExternal: Boolean
|
val isExternal: Boolean
|
||||||
val sealedSubclasses: Collection<FqName>
|
|
||||||
val supertypes: Collection<KotlinType>
|
val supertypes: Collection<KotlinType>
|
||||||
}
|
}
|
||||||
|
|
||||||
interface ClassConstructor : AnnotatedDeclaration, DeclarationWithTypeParameters, DeclarationWithVisibility, CallableMemberWithParameters {
|
interface ClassConstructor : AnnotatedDeclaration, DeclarationWithTypeParameters, DeclarationWithVisibility, MaybeCallableMemberOfClass, CallableMemberWithParameters {
|
||||||
val isPrimary: Boolean
|
val isPrimary: Boolean
|
||||||
val kind: CallableMemberDescriptor.Kind
|
val kind: CallableMemberDescriptor.Kind
|
||||||
|
override val containingClassKind: ClassKind
|
||||||
|
override val containingClassModality: Modality
|
||||||
|
override val containingClassIsData: Boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
data class CommonClassDeclaration(
|
data class CommonClassDeclaration(
|
||||||
@@ -45,7 +46,6 @@ data class CommonClassDeclaration(
|
|||||||
override val isData get() = false
|
override val isData get() = false
|
||||||
override val isExternal get() = false
|
override val isExternal get() = false
|
||||||
override var companion: FqName? = null
|
override var companion: FqName? = null
|
||||||
override val sealedSubclasses: Collection<FqName> get() = emptyList()
|
|
||||||
override val supertypes: MutableCollection<KotlinType> = ArrayList()
|
override val supertypes: MutableCollection<KotlinType> = ArrayList()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -59,6 +59,9 @@ data class CommonClassConstructor(
|
|||||||
override val hasSynthesizedParameterNames: Boolean
|
override val hasSynthesizedParameterNames: Boolean
|
||||||
) : ClassConstructor {
|
) : ClassConstructor {
|
||||||
override val annotations: Annotations get() = Annotations.EMPTY
|
override val annotations: Annotations get() = Annotations.EMPTY
|
||||||
|
override val containingClassKind: ClassKind get() = unsupported()
|
||||||
|
override val containingClassModality: Modality get() = unsupported()
|
||||||
|
override val containingClassIsData: Boolean get() = unsupported()
|
||||||
}
|
}
|
||||||
|
|
||||||
class TargetClassDeclaration(private val descriptor: ClassDescriptor) : ClassDeclaration {
|
class TargetClassDeclaration(private val descriptor: ClassDescriptor) : ClassDeclaration {
|
||||||
@@ -74,13 +77,15 @@ class TargetClassDeclaration(private val descriptor: ClassDescriptor) : ClassDec
|
|||||||
override val isInline get() = descriptor.isInline
|
override val isInline get() = descriptor.isInline
|
||||||
override val isInner get() = descriptor.isInner
|
override val isInner get() = descriptor.isInner
|
||||||
override val isExternal get() = descriptor.isExternal
|
override val isExternal get() = descriptor.isExternal
|
||||||
override val sealedSubclasses by lazy(PUBLICATION) { descriptor.sealedSubclasses.map { it.fqNameSafe } }
|
|
||||||
override val supertypes: Collection<KotlinType> get() = descriptor.typeConstructor.supertypes
|
override val supertypes: Collection<KotlinType> get() = descriptor.typeConstructor.supertypes
|
||||||
}
|
}
|
||||||
|
|
||||||
class TargetClassConstructor(private val descriptor: ClassConstructorDescriptor) : ClassConstructor {
|
class TargetClassConstructor(private val descriptor: ClassConstructorDescriptor) : ClassConstructor {
|
||||||
override val isPrimary: Boolean get() = descriptor.isPrimary
|
override val isPrimary: Boolean get() = descriptor.isPrimary
|
||||||
override val kind: CallableMemberDescriptor.Kind get() = descriptor.kind
|
override val kind: CallableMemberDescriptor.Kind get() = descriptor.kind
|
||||||
|
override val containingClassKind: ClassKind get() = descriptor.containingDeclaration.kind
|
||||||
|
override val containingClassModality: Modality get() = descriptor.containingDeclaration.modality
|
||||||
|
override val containingClassIsData: Boolean get() = descriptor.containingDeclaration.isData
|
||||||
override val annotations: Annotations get() = descriptor.annotations
|
override val annotations: Annotations get() = descriptor.annotations
|
||||||
override val visibility: Visibility get() = descriptor.visibility
|
override val visibility: Visibility get() = descriptor.visibility
|
||||||
override val typeParameters: List<TypeParameter> by lazy(PUBLICATION) { descriptor.typeParameters.map(::TargetTypeParameter) }
|
override val typeParameters: List<TypeParameter> by lazy(PUBLICATION) { descriptor.typeParameters.map(::TargetTypeParameter) }
|
||||||
@@ -98,7 +103,6 @@ object ClassDeclarationRecursionMarker : ClassDeclaration, RecursionMarker {
|
|||||||
override val isInline: Boolean get() = unsupported()
|
override val isInline: Boolean get() = unsupported()
|
||||||
override val isInner: Boolean get() = unsupported()
|
override val isInner: Boolean get() = unsupported()
|
||||||
override val isExternal: Boolean get() = unsupported()
|
override val isExternal: Boolean get() = unsupported()
|
||||||
override val sealedSubclasses: Collection<FqName> get() = unsupported()
|
|
||||||
override val supertypes: Collection<KotlinType> get() = unsupported()
|
override val supertypes: Collection<KotlinType> get() = unsupported()
|
||||||
override val annotations: Annotations get() = unsupported()
|
override val annotations: Annotations get() = unsupported()
|
||||||
override val name: Name get() = unsupported()
|
override val name: Name get() = unsupported()
|
||||||
|
|||||||
+10
-4
@@ -36,8 +36,14 @@ interface DeclarationWithVisibility : Declaration {
|
|||||||
val visibility: Visibility
|
val visibility: Visibility
|
||||||
}
|
}
|
||||||
|
|
||||||
interface MaybeVirtualCallableMember : DeclarationWithVisibility {
|
interface DeclarationWithModality : Declaration {
|
||||||
val isVirtual: Boolean
|
val modality: Modality
|
||||||
|
}
|
||||||
|
|
||||||
|
interface MaybeCallableMemberOfClass : Declaration {
|
||||||
|
val containingClassKind: ClassKind? // null assumes no containing class
|
||||||
|
val containingClassModality: Modality? // null assumes no containing class
|
||||||
|
val containingClassIsData: Boolean? // null assumes no containing class
|
||||||
}
|
}
|
||||||
|
|
||||||
interface DeclarationWithTypeParameters : Declaration {
|
interface DeclarationWithTypeParameters : Declaration {
|
||||||
@@ -47,5 +53,5 @@ interface DeclarationWithTypeParameters : Declaration {
|
|||||||
/** Indicates presence of recursion in lazy calculations. */
|
/** Indicates presence of recursion in lazy calculations. */
|
||||||
interface RecursionMarker : Declaration
|
interface RecursionMarker : Declaration
|
||||||
|
|
||||||
@Suppress("unused")
|
@Suppress("unused", "NOTHING_TO_INLINE")
|
||||||
internal fun Declaration.unsupported(): Nothing = error("This method should never be called")
|
internal inline fun Declaration.unsupported(): Nothing = error("This method should never be called")
|
||||||
|
|||||||
+2
-4
@@ -5,10 +5,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.descriptors.commonizer.mergedtree.ir
|
package org.jetbrains.kotlin.descriptors.commonizer.mergedtree.ir
|
||||||
|
|
||||||
import org.jetbrains.kotlin.descriptors.Modality
|
import org.jetbrains.kotlin.descriptors.*
|
||||||
import org.jetbrains.kotlin.descriptors.SimpleFunctionDescriptor
|
|
||||||
import org.jetbrains.kotlin.descriptors.ValueParameterDescriptor
|
|
||||||
import org.jetbrains.kotlin.descriptors.Visibility
|
|
||||||
import org.jetbrains.kotlin.descriptors.annotations.Annotations
|
import org.jetbrains.kotlin.descriptors.annotations.Annotations
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.types.UnwrappedType
|
import org.jetbrains.kotlin.types.UnwrappedType
|
||||||
@@ -37,6 +34,7 @@ data class CommonFunction(
|
|||||||
override val visibility: Visibility,
|
override val visibility: Visibility,
|
||||||
override val extensionReceiver: ExtensionReceiver?,
|
override val extensionReceiver: ExtensionReceiver?,
|
||||||
override val returnType: UnwrappedType,
|
override val returnType: UnwrappedType,
|
||||||
|
override val kind: CallableMemberDescriptor.Kind,
|
||||||
private val modifiers: FunctionModifiers,
|
private val modifiers: FunctionModifiers,
|
||||||
override val valueParameters: List<ValueParameter>,
|
override val valueParameters: List<ValueParameter>,
|
||||||
override val typeParameters: List<TypeParameter>,
|
override val typeParameters: List<TypeParameter>,
|
||||||
|
|||||||
+16
-9
@@ -11,20 +11,18 @@ import org.jetbrains.kotlin.descriptors.commonizer.mergedtree.ir.ExtensionReceiv
|
|||||||
import org.jetbrains.kotlin.types.UnwrappedType
|
import org.jetbrains.kotlin.types.UnwrappedType
|
||||||
import kotlin.LazyThreadSafetyMode.PUBLICATION
|
import kotlin.LazyThreadSafetyMode.PUBLICATION
|
||||||
|
|
||||||
interface FunctionOrProperty : AnnotatedDeclaration, NamedDeclaration, DeclarationWithTypeParameters, MaybeVirtualCallableMember {
|
interface FunctionOrProperty : AnnotatedDeclaration, NamedDeclaration, DeclarationWithTypeParameters, DeclarationWithVisibility, DeclarationWithModality, MaybeCallableMemberOfClass {
|
||||||
val modality: Modality
|
|
||||||
val isExternal: Boolean
|
val isExternal: Boolean
|
||||||
val extensionReceiver: ExtensionReceiver?
|
val extensionReceiver: ExtensionReceiver?
|
||||||
val returnType: UnwrappedType
|
val returnType: UnwrappedType
|
||||||
val kind: CallableMemberDescriptor.Kind
|
val kind: CallableMemberDescriptor.Kind
|
||||||
val isNonAbstractCallableMemberInInterface: Boolean
|
|
||||||
}
|
}
|
||||||
|
|
||||||
abstract class CommonFunctionOrProperty : FunctionOrProperty {
|
abstract class CommonFunctionOrProperty : FunctionOrProperty {
|
||||||
final override val annotations get() = Annotations.EMPTY
|
final override val annotations get() = Annotations.EMPTY
|
||||||
final override val kind get() = CallableMemberDescriptor.Kind.DECLARATION
|
final override val containingClassKind: ClassKind? get() = unsupported()
|
||||||
final override val isVirtual get() = unsupported()
|
final override val containingClassModality: Modality? get() = unsupported()
|
||||||
final override val isNonAbstractCallableMemberInInterface get() = unsupported()
|
final override val containingClassIsData: Boolean? get() = unsupported()
|
||||||
}
|
}
|
||||||
|
|
||||||
abstract class TargetFunctionOrProperty<T : CallableMemberDescriptor>(protected val descriptor: T) : FunctionOrProperty {
|
abstract class TargetFunctionOrProperty<T : CallableMemberDescriptor>(protected val descriptor: T) : FunctionOrProperty {
|
||||||
@@ -36,10 +34,11 @@ abstract class TargetFunctionOrProperty<T : CallableMemberDescriptor>(protected
|
|||||||
final override val extensionReceiver by lazy(PUBLICATION) { descriptor.extensionReceiverParameter?.toReceiver() }
|
final override val extensionReceiver by lazy(PUBLICATION) { descriptor.extensionReceiverParameter?.toReceiver() }
|
||||||
final override val returnType by lazy(PUBLICATION) { descriptor.returnType!!.unwrap() }
|
final override val returnType by lazy(PUBLICATION) { descriptor.returnType!!.unwrap() }
|
||||||
final override val kind get() = descriptor.kind
|
final override val kind get() = descriptor.kind
|
||||||
final override val isVirtual get() = descriptor.isOverridable
|
final override val containingClassKind: ClassKind? get() = containingClass?.kind
|
||||||
final override val isNonAbstractCallableMemberInInterface
|
final override val containingClassModality: Modality? get() = containingClass?.modality
|
||||||
get() = modality != Modality.ABSTRACT && (descriptor.containingDeclaration as? ClassDescriptor)?.kind == ClassKind.INTERFACE
|
final override val containingClassIsData: Boolean? get() = containingClass?.isData
|
||||||
final override val typeParameters by lazy(PUBLICATION) { descriptor.typeParameters.map(::TargetTypeParameter) }
|
final override val typeParameters by lazy(PUBLICATION) { descriptor.typeParameters.map(::TargetTypeParameter) }
|
||||||
|
private val containingClass: ClassDescriptor? get() = descriptor.containingDeclaration as? ClassDescriptor
|
||||||
}
|
}
|
||||||
|
|
||||||
data class ExtensionReceiver(
|
data class ExtensionReceiver(
|
||||||
@@ -51,3 +50,11 @@ data class ExtensionReceiver(
|
|||||||
fun ReceiverParameterDescriptor.toReceiver() = ExtensionReceiver(annotations, type.unwrap())
|
fun ReceiverParameterDescriptor.toReceiver() = ExtensionReceiver(annotations, type.unwrap())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun FunctionOrProperty.isNonAbstractMemberInInterface() =
|
||||||
|
modality != Modality.ABSTRACT && containingClassKind == ClassKind.INTERFACE
|
||||||
|
|
||||||
|
fun FunctionOrProperty.isVirtual() =
|
||||||
|
visibility != Visibilities.PRIVATE
|
||||||
|
&& modality != Modality.FINAL
|
||||||
|
&& !(containingClassModality == Modality.FINAL && containingClassKind != ClassKind.ENUM_CLASS)
|
||||||
|
|||||||
+2
-3
@@ -33,6 +33,7 @@ data class CommonProperty(
|
|||||||
override val isExternal: Boolean,
|
override val isExternal: Boolean,
|
||||||
override val extensionReceiver: ExtensionReceiver?,
|
override val extensionReceiver: ExtensionReceiver?,
|
||||||
override val returnType: UnwrappedType,
|
override val returnType: UnwrappedType,
|
||||||
|
override val kind: CallableMemberDescriptor.Kind,
|
||||||
override val setter: Setter?,
|
override val setter: Setter?,
|
||||||
override val typeParameters: List<TypeParameter>
|
override val typeParameters: List<TypeParameter>
|
||||||
) : CommonFunctionOrProperty(), Property {
|
) : CommonFunctionOrProperty(), Property {
|
||||||
@@ -89,9 +90,7 @@ data class Setter(
|
|||||||
override val isDefault: Boolean,
|
override val isDefault: Boolean,
|
||||||
override val isExternal: Boolean,
|
override val isExternal: Boolean,
|
||||||
override val isInline: Boolean
|
override val isInline: Boolean
|
||||||
) : PropertyAccessor, MaybeVirtualCallableMember {
|
) : PropertyAccessor, DeclarationWithVisibility {
|
||||||
override val isVirtual get() = false
|
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
fun createDefaultNoAnnotations(visibility: Visibility) = Setter(
|
fun createDefaultNoAnnotations(visibility: Visibility) = Setter(
|
||||||
Annotations.EMPTY,
|
Annotations.EMPTY,
|
||||||
|
|||||||
+3
-3
@@ -24,9 +24,9 @@ actual val <T> T.propertyWithTypeParameter1 get() = 42
|
|||||||
actual val <T> T.propertyWithTypeParameter2 get() = 42
|
actual val <T> T.propertyWithTypeParameter2 get() = 42
|
||||||
val <T> T.propertyWithTypeParameter3 get() = 42
|
val <T> T.propertyWithTypeParameter3 get() = 42
|
||||||
actual val <T : CharSequence> T.propertyWithTypeParameter4 get() = length
|
actual val <T : CharSequence> T.propertyWithTypeParameter4 get() = length
|
||||||
val <T : CharSequence> T.propertyWithTypeParameter5 get() = length
|
val <T : CharSequence> T.propertyWithTypeParameter5: Int get() = length
|
||||||
val <T : CharSequence> T.propertyWithTypeParameter6 get() = length
|
val <T : CharSequence> T.propertyWithTypeParameter6: Int get() = length
|
||||||
val <T : CharSequence> T.propertyWithTypeParameter7 get() = length
|
val <T : CharSequence> T.propertyWithTypeParameter7: Int get() = length
|
||||||
val <T> T.propertyWithTypeParameter8 get() = 42
|
val <T> T.propertyWithTypeParameter8 get() = 42
|
||||||
val <T> T.propertyWithTypeParameter9 get() = 42
|
val <T> T.propertyWithTypeParameter9 get() = 42
|
||||||
|
|
||||||
|
|||||||
+3
-3
@@ -24,9 +24,9 @@ actual val <T> T.propertyWithTypeParameter1 get() = 42
|
|||||||
actual val <T : Any?> T.propertyWithTypeParameter2 get() = 42
|
actual val <T : Any?> T.propertyWithTypeParameter2 get() = 42
|
||||||
val <T : Any> T.propertyWithTypeParameter3 get() = 42
|
val <T : Any> T.propertyWithTypeParameter3 get() = 42
|
||||||
actual val <T : CharSequence> T.propertyWithTypeParameter4 get() = length
|
actual val <T : CharSequence> T.propertyWithTypeParameter4 get() = length
|
||||||
val <T : Appendable> T.propertyWithTypeParameter5 get() = length
|
val <T : Appendable> T.propertyWithTypeParameter5: Int get() = length
|
||||||
val <T : String> T.propertyWithTypeParameter6 get() = length
|
val <T : String> T.propertyWithTypeParameter6: Int get() = length
|
||||||
val String.propertyWithTypeParameter7 get() = length
|
val String.propertyWithTypeParameter7: Int get() = length
|
||||||
val <Q> Q.propertyWithTypeParameter8 get() = 42
|
val <Q> Q.propertyWithTypeParameter8 get() = 42
|
||||||
val <T, Q> T.propertyWithTypeParameter9 get() = 42
|
val <T, Q> T.propertyWithTypeParameter9 get() = 42
|
||||||
|
|
||||||
|
|||||||
konan/commonizer/testData/callableMemberCommonization/extensionReceivers/original/js/package_root.kt
Vendored
+4
-4
@@ -23,10 +23,10 @@ fun mismatchedFunction2() = 42
|
|||||||
val <T> T.propertyWithTypeParameter1 get() = 42
|
val <T> T.propertyWithTypeParameter1 get() = 42
|
||||||
val <T> T.propertyWithTypeParameter2 get() = 42
|
val <T> T.propertyWithTypeParameter2 get() = 42
|
||||||
val <T> T.propertyWithTypeParameter3 get() = 42
|
val <T> T.propertyWithTypeParameter3 get() = 42
|
||||||
val <T : CharSequence> T.propertyWithTypeParameter4 get() = length
|
val <T : CharSequence> T.propertyWithTypeParameter4: Int get() = length
|
||||||
val <T : CharSequence> T.propertyWithTypeParameter5 get() = length
|
val <T : CharSequence> T.propertyWithTypeParameter5: Int get() = length
|
||||||
val <T : CharSequence> T.propertyWithTypeParameter6 get() = length
|
val <T : CharSequence> T.propertyWithTypeParameter6: Int get() = length
|
||||||
val <T : CharSequence> T.propertyWithTypeParameter7 get() = length
|
val <T : CharSequence> T.propertyWithTypeParameter7: Int get() = length
|
||||||
val <T> T.propertyWithTypeParameter8 get() = 42
|
val <T> T.propertyWithTypeParameter8 get() = 42
|
||||||
val <T> T.propertyWithTypeParameter9 get() = 42
|
val <T> T.propertyWithTypeParameter9 get() = 42
|
||||||
|
|
||||||
|
|||||||
+4
-4
@@ -23,10 +23,10 @@ fun Double.mismatchedFunction2() = 42
|
|||||||
val <T> T.propertyWithTypeParameter1 get() = 42
|
val <T> T.propertyWithTypeParameter1 get() = 42
|
||||||
val <T : Any?> T.propertyWithTypeParameter2 get() = 42
|
val <T : Any?> T.propertyWithTypeParameter2 get() = 42
|
||||||
val <T : Any> T.propertyWithTypeParameter3 get() = 42
|
val <T : Any> T.propertyWithTypeParameter3 get() = 42
|
||||||
val <T : CharSequence> T.propertyWithTypeParameter4 get() = length
|
val <T : CharSequence> T.propertyWithTypeParameter4: Int get() = length
|
||||||
val <T : Appendable> T.propertyWithTypeParameter5 get() = length
|
val <T : Appendable> T.propertyWithTypeParameter5: Int get() = length
|
||||||
val <T : String> T.propertyWithTypeParameter6 get() = length
|
val <T : String> T.propertyWithTypeParameter6: Int get() = length
|
||||||
val String.propertyWithTypeParameter7 get() = length
|
val String.propertyWithTypeParameter7: Int get() = length
|
||||||
val <Q> Q.propertyWithTypeParameter8 get() = 42
|
val <Q> Q.propertyWithTypeParameter8 get() = 42
|
||||||
val <T, Q> T.propertyWithTypeParameter9 get() = 42
|
val <T, Q> T.propertyWithTypeParameter9 get() = 42
|
||||||
|
|
||||||
|
|||||||
Vendored
+37
-1
@@ -3,5 +3,41 @@ expect internal val publicOrInternalProperty: Int
|
|||||||
expect internal val internalProperty: Int
|
expect internal val internalProperty: Int
|
||||||
|
|
||||||
expect public fun publicFunction(): Int
|
expect public fun publicFunction(): Int
|
||||||
expect internal val internalFunction(): Int
|
|
||||||
expect internal fun publicOrInternalFunction(): Int
|
expect internal fun publicOrInternalFunction(): Int
|
||||||
|
expect internal fun internalFunction(): Int
|
||||||
|
|
||||||
|
expect open class Outer1() {
|
||||||
|
public val publicProperty: Int
|
||||||
|
internal val publicOrInternalProperty: Int
|
||||||
|
internal val internalProperty: Int
|
||||||
|
|
||||||
|
public fun publicFunction(): Int
|
||||||
|
internal fun publicOrInternalFunction(): Int
|
||||||
|
internal fun internalFunction(): Int
|
||||||
|
|
||||||
|
open class Inner1() {
|
||||||
|
public val publicProperty: Int
|
||||||
|
internal val publicOrInternalProperty: Int
|
||||||
|
internal val internalProperty: Int
|
||||||
|
|
||||||
|
public fun publicFunction(): Int
|
||||||
|
internal fun publicOrInternalFunction(): Int
|
||||||
|
internal fun internalFunction(): Int
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
expect open class Outer2() {
|
||||||
|
public open val publicProperty: Int
|
||||||
|
internal open val internalProperty: Int
|
||||||
|
|
||||||
|
public open fun publicFunction(): Int
|
||||||
|
internal open fun internalFunction(): Int
|
||||||
|
|
||||||
|
open class Inner2() {
|
||||||
|
public open val publicProperty: Int
|
||||||
|
internal open val internalProperty: Int
|
||||||
|
|
||||||
|
public open fun publicFunction(): Int
|
||||||
|
internal open fun internalFunction(): Int
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Vendored
+59
-3
@@ -6,6 +6,62 @@ private val privateProperty = 1
|
|||||||
|
|
||||||
actual public fun publicFunction() = 1
|
actual public fun publicFunction() = 1
|
||||||
actual public fun publicOrInternalFunction() = 1
|
actual public fun publicOrInternalFunction() = 1
|
||||||
actual internal val internalFunction() = 1
|
actual internal fun internalFunction() = 1
|
||||||
internal val internalOrPrivateFunction() = 1
|
internal fun internalOrPrivateFunction() = 1
|
||||||
private val privateFunction() = 1
|
private fun privateFunction() = 1
|
||||||
|
|
||||||
|
actual open class Outer1 actual constructor() {
|
||||||
|
actual public val publicProperty = 1
|
||||||
|
actual public val publicOrInternalProperty = 1
|
||||||
|
actual internal val internalProperty = 1
|
||||||
|
internal val internalOrPrivateProperty = 1
|
||||||
|
private val privateProperty = 1
|
||||||
|
|
||||||
|
actual public fun publicFunction() = 1
|
||||||
|
actual public fun publicOrInternalFunction() = 1
|
||||||
|
actual internal fun internalFunction() = 1
|
||||||
|
internal fun internalOrPrivateFunction() = 1
|
||||||
|
private fun privateFunction() = 1
|
||||||
|
|
||||||
|
actual open class Inner1 actual constructor() {
|
||||||
|
actual public val publicProperty = 1
|
||||||
|
actual public val publicOrInternalProperty = 1
|
||||||
|
actual internal val internalProperty = 1
|
||||||
|
internal val internalOrPrivateProperty = 1
|
||||||
|
private val privateProperty = 1
|
||||||
|
|
||||||
|
actual public fun publicFunction() = 1
|
||||||
|
actual public fun publicOrInternalFunction() = 1
|
||||||
|
actual internal fun internalFunction() = 1
|
||||||
|
internal fun internalOrPrivateFunction() = 1
|
||||||
|
private fun privateFunction() = 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
actual open class Outer2 actual constructor() {
|
||||||
|
actual public open val publicProperty = 1
|
||||||
|
public open val publicOrInternalProperty = 1
|
||||||
|
actual internal open val internalProperty = 1
|
||||||
|
internal open val internalOrPrivateProperty = 1
|
||||||
|
private val privateProperty = 1
|
||||||
|
|
||||||
|
actual public open fun publicFunction() = 1
|
||||||
|
public open fun publicOrInternalFunction() = 1
|
||||||
|
actual internal open fun internalFunction() = 1
|
||||||
|
internal open fun internalOrPrivateFunction() = 1
|
||||||
|
private fun privateFunction() = 1
|
||||||
|
|
||||||
|
actual open class Inner2 actual constructor() {
|
||||||
|
actual public open val publicProperty = 1
|
||||||
|
public open val publicOrInternalProperty = 1
|
||||||
|
actual internal open val internalProperty = 1
|
||||||
|
internal open val internalOrPrivateProperty = 1
|
||||||
|
private val privateProperty = 1
|
||||||
|
|
||||||
|
actual public open fun publicFunction() = 1
|
||||||
|
public open fun publicOrInternalFunction() = 1
|
||||||
|
actual internal open fun internalFunction() = 1
|
||||||
|
internal open fun internalOrPrivateFunction() = 1
|
||||||
|
private fun privateFunction() = 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Vendored
+59
-3
@@ -6,6 +6,62 @@ private val privateProperty = 1
|
|||||||
|
|
||||||
actual public fun publicFunction() = 1
|
actual public fun publicFunction() = 1
|
||||||
actual internal fun publicOrInternalFunction() = 1
|
actual internal fun publicOrInternalFunction() = 1
|
||||||
actual internal val internalFunction() = 1
|
actual internal fun internalFunction() = 1
|
||||||
private val internalOrPrivateFunction() = 1
|
private fun internalOrPrivateFunction() = 1
|
||||||
private val privateFunction() = 1
|
private fun privateFunction() = 1
|
||||||
|
|
||||||
|
actual open class Outer1 actual constructor() {
|
||||||
|
actual public val publicProperty = 1
|
||||||
|
actual internal val publicOrInternalProperty = 1
|
||||||
|
actual internal val internalProperty = 1
|
||||||
|
private val internalOrPrivateProperty = 1
|
||||||
|
private val privateProperty = 1
|
||||||
|
|
||||||
|
actual public fun publicFunction() = 1
|
||||||
|
actual internal fun publicOrInternalFunction() = 1
|
||||||
|
actual internal fun internalFunction() = 1
|
||||||
|
private fun internalOrPrivateFunction() = 1
|
||||||
|
private fun privateFunction() = 1
|
||||||
|
|
||||||
|
actual open class Inner1 actual constructor() {
|
||||||
|
actual public val publicProperty = 1
|
||||||
|
actual internal val publicOrInternalProperty = 1
|
||||||
|
actual internal val internalProperty = 1
|
||||||
|
private val internalOrPrivateProperty = 1
|
||||||
|
private val privateProperty = 1
|
||||||
|
|
||||||
|
actual public fun publicFunction() = 1
|
||||||
|
actual internal fun publicOrInternalFunction() = 1
|
||||||
|
actual internal fun internalFunction() = 1
|
||||||
|
private fun internalOrPrivateFunction() = 1
|
||||||
|
private fun privateFunction() = 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
actual open class Outer2 actual constructor() {
|
||||||
|
actual public open val publicProperty = 1
|
||||||
|
internal open val publicOrInternalProperty = 1
|
||||||
|
actual internal open val internalProperty = 1
|
||||||
|
private val internalOrPrivateProperty = 1
|
||||||
|
private val privateProperty = 1
|
||||||
|
|
||||||
|
actual public open fun publicFunction() = 1
|
||||||
|
internal open fun publicOrInternalFunction() = 1
|
||||||
|
actual internal open fun internalFunction() = 1
|
||||||
|
private fun internalOrPrivateFunction() = 1
|
||||||
|
private fun privateFunction() = 1
|
||||||
|
|
||||||
|
actual open class Inner2 actual constructor() {
|
||||||
|
actual public open val publicProperty = 1
|
||||||
|
internal open val publicOrInternalProperty = 1
|
||||||
|
actual internal open val internalProperty = 1
|
||||||
|
private val internalOrPrivateProperty = 1
|
||||||
|
private val privateProperty = 1
|
||||||
|
|
||||||
|
actual public open fun publicFunction() = 1
|
||||||
|
internal open fun publicOrInternalFunction() = 1
|
||||||
|
actual internal open fun internalFunction() = 1
|
||||||
|
private fun internalOrPrivateFunction() = 1
|
||||||
|
private fun privateFunction() = 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Vendored
+59
-3
@@ -6,6 +6,62 @@ private val privateProperty = 1
|
|||||||
|
|
||||||
public fun publicFunction() = 1
|
public fun publicFunction() = 1
|
||||||
public fun publicOrInternalFunction() = 1
|
public fun publicOrInternalFunction() = 1
|
||||||
internal val internalFunction() = 1
|
internal fun internalFunction() = 1
|
||||||
internal val internalOrPrivateFunction() = 1
|
internal fun internalOrPrivateFunction() = 1
|
||||||
private val privateFunction() = 1
|
private fun privateFunction() = 1
|
||||||
|
|
||||||
|
open class Outer1 {
|
||||||
|
public val publicProperty = 1
|
||||||
|
public val publicOrInternalProperty = 1
|
||||||
|
internal val internalProperty = 1
|
||||||
|
internal val internalOrPrivateProperty = 1
|
||||||
|
private val privateProperty = 1
|
||||||
|
|
||||||
|
public fun publicFunction() = 1
|
||||||
|
public fun publicOrInternalFunction() = 1
|
||||||
|
internal fun internalFunction() = 1
|
||||||
|
internal fun internalOrPrivateFunction() = 1
|
||||||
|
private fun privateFunction() = 1
|
||||||
|
|
||||||
|
open class Inner1 {
|
||||||
|
public val publicProperty = 1
|
||||||
|
public val publicOrInternalProperty = 1
|
||||||
|
internal val internalProperty = 1
|
||||||
|
internal val internalOrPrivateProperty = 1
|
||||||
|
private val privateProperty = 1
|
||||||
|
|
||||||
|
public fun publicFunction() = 1
|
||||||
|
public fun publicOrInternalFunction() = 1
|
||||||
|
internal fun internalFunction() = 1
|
||||||
|
internal fun internalOrPrivateFunction() = 1
|
||||||
|
private fun privateFunction() = 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
open class Outer2 {
|
||||||
|
public open val publicProperty = 1
|
||||||
|
public open val publicOrInternalProperty = 1
|
||||||
|
internal open val internalProperty = 1
|
||||||
|
internal open val internalOrPrivateProperty = 1
|
||||||
|
private val privateProperty = 1
|
||||||
|
|
||||||
|
public open fun publicFunction() = 1
|
||||||
|
public open fun publicOrInternalFunction() = 1
|
||||||
|
internal open fun internalFunction() = 1
|
||||||
|
internal open fun internalOrPrivateFunction() = 1
|
||||||
|
private fun privateFunction() = 1
|
||||||
|
|
||||||
|
open class Inner2 {
|
||||||
|
public open val publicProperty = 1
|
||||||
|
public open val publicOrInternalProperty = 1
|
||||||
|
internal open val internalProperty = 1
|
||||||
|
internal open val internalOrPrivateProperty = 1
|
||||||
|
private val privateProperty = 1
|
||||||
|
|
||||||
|
public open fun publicFunction() = 1
|
||||||
|
public open fun publicOrInternalFunction() = 1
|
||||||
|
internal open fun internalFunction() = 1
|
||||||
|
internal open fun internalOrPrivateFunction() = 1
|
||||||
|
private fun privateFunction() = 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Vendored
+59
-3
@@ -6,6 +6,62 @@ private val privateProperty = 1
|
|||||||
|
|
||||||
public fun publicFunction() = 1
|
public fun publicFunction() = 1
|
||||||
internal fun publicOrInternalFunction() = 1
|
internal fun publicOrInternalFunction() = 1
|
||||||
internal val internalFunction() = 1
|
internal fun internalFunction() = 1
|
||||||
private val internalOrPrivateFunction() = 1
|
private fun internalOrPrivateFunction() = 1
|
||||||
private val privateFunction() = 1
|
private fun privateFunction() = 1
|
||||||
|
|
||||||
|
open class Outer1 {
|
||||||
|
public val publicProperty = 1
|
||||||
|
internal val publicOrInternalProperty = 1
|
||||||
|
internal val internalProperty = 1
|
||||||
|
private val internalOrPrivateProperty = 1
|
||||||
|
private val privateProperty = 1
|
||||||
|
|
||||||
|
public fun publicFunction() = 1
|
||||||
|
internal fun publicOrInternalFunction() = 1
|
||||||
|
internal fun internalFunction() = 1
|
||||||
|
private fun internalOrPrivateFunction() = 1
|
||||||
|
private fun privateFunction() = 1
|
||||||
|
|
||||||
|
open class Inner1 {
|
||||||
|
public val publicProperty = 1
|
||||||
|
internal val publicOrInternalProperty = 1
|
||||||
|
internal val internalProperty = 1
|
||||||
|
private val internalOrPrivateProperty = 1
|
||||||
|
private val privateProperty = 1
|
||||||
|
|
||||||
|
public fun publicFunction() = 1
|
||||||
|
internal fun publicOrInternalFunction() = 1
|
||||||
|
internal fun internalFunction() = 1
|
||||||
|
private fun internalOrPrivateFunction() = 1
|
||||||
|
private fun privateFunction() = 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
open class Outer2 {
|
||||||
|
public open val publicProperty = 1
|
||||||
|
internal open val publicOrInternalProperty = 1
|
||||||
|
internal open val internalProperty = 1
|
||||||
|
private val internalOrPrivateProperty = 1
|
||||||
|
private val privateProperty = 1
|
||||||
|
|
||||||
|
public open fun publicFunction() = 1
|
||||||
|
internal open fun publicOrInternalFunction() = 1
|
||||||
|
internal open fun internalFunction() = 1
|
||||||
|
private fun internalOrPrivateFunction() = 1
|
||||||
|
private fun privateFunction() = 1
|
||||||
|
|
||||||
|
open class Inner2 {
|
||||||
|
public open val publicProperty = 1
|
||||||
|
internal open val publicOrInternalProperty = 1
|
||||||
|
internal open val internalProperty = 1
|
||||||
|
private val internalOrPrivateProperty = 1
|
||||||
|
private val privateProperty = 1
|
||||||
|
|
||||||
|
public open fun publicFunction() = 1
|
||||||
|
internal open fun publicOrInternalFunction() = 1
|
||||||
|
internal open fun internalFunction() = 1
|
||||||
|
private fun internalOrPrivateFunction() = 1
|
||||||
|
private fun privateFunction() = 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
+84
@@ -0,0 +1,84 @@
|
|||||||
|
expect class A1()
|
||||||
|
expect interface B1
|
||||||
|
expect annotation class C1()
|
||||||
|
expect object D1
|
||||||
|
expect enum class E1 { FOO, BAR, BAZ }
|
||||||
|
|
||||||
|
expect class F() {
|
||||||
|
inner class G1()
|
||||||
|
class H1()
|
||||||
|
interface I1
|
||||||
|
object J1
|
||||||
|
enum class K1 { FOO, BAR, BAZ }
|
||||||
|
}
|
||||||
|
|
||||||
|
expect interface L {
|
||||||
|
class M1()
|
||||||
|
interface N1
|
||||||
|
object O1
|
||||||
|
enum class P1 { FOO, BAR, BAZ }
|
||||||
|
}
|
||||||
|
|
||||||
|
expect object R {
|
||||||
|
class S1()
|
||||||
|
interface T1
|
||||||
|
object U1
|
||||||
|
enum class V1 { FOO, BAR, BAZ }
|
||||||
|
}
|
||||||
|
|
||||||
|
expect class W() {
|
||||||
|
object X {
|
||||||
|
interface Y {
|
||||||
|
class Z() {
|
||||||
|
enum class AA { FOO, BAR, BAZ }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
expect class BB1() { companion object }
|
||||||
|
expect class BB2()
|
||||||
|
|
||||||
|
expect class CC1() { companion object DD1 }
|
||||||
|
expect class CC2()
|
||||||
|
expect class CC3()
|
||||||
|
|
||||||
|
expect inline class EE1(val value: String)
|
||||||
|
|
||||||
|
expect class FF1(property1: String) {
|
||||||
|
val property1: String
|
||||||
|
val property2: String
|
||||||
|
val property3: String
|
||||||
|
val property4: String
|
||||||
|
|
||||||
|
fun function1(): String
|
||||||
|
fun function2(): String
|
||||||
|
}
|
||||||
|
expect class FF2()
|
||||||
|
|
||||||
|
expect sealed class GG1
|
||||||
|
expect sealed class GG2 {
|
||||||
|
class HH1(): GG2
|
||||||
|
object HH2 : GG2
|
||||||
|
}
|
||||||
|
|
||||||
|
expect class HH5(): GG2
|
||||||
|
expect object HH6 : GG2
|
||||||
|
|
||||||
|
expect enum class II1
|
||||||
|
expect enum class II2 { FOO }
|
||||||
|
|
||||||
|
expect interface JJ {
|
||||||
|
val property: String
|
||||||
|
fun function(): String
|
||||||
|
}
|
||||||
|
|
||||||
|
expect class KK1(property: String) : JJ {
|
||||||
|
override val property: String
|
||||||
|
override fun function(): String
|
||||||
|
}
|
||||||
|
|
||||||
|
expect class KK2(wrapped: JJ) : JJ
|
||||||
|
|
||||||
|
expect class LL1(value: String) { val value: String }
|
||||||
|
expect class LL2(value: String) { val value: String }
|
||||||
+133
@@ -0,0 +1,133 @@
|
|||||||
|
actual class A1 actual constructor()
|
||||||
|
class A2
|
||||||
|
class A3
|
||||||
|
class A4
|
||||||
|
class A5
|
||||||
|
|
||||||
|
actual interface B1
|
||||||
|
interface B2
|
||||||
|
interface B3
|
||||||
|
interface B4
|
||||||
|
|
||||||
|
actual annotation class C1 actual constructor()
|
||||||
|
annotation class C2
|
||||||
|
annotation class C3
|
||||||
|
|
||||||
|
actual object D1
|
||||||
|
object D2
|
||||||
|
|
||||||
|
actual enum class E1 { FOO, BAR, BAZ }
|
||||||
|
|
||||||
|
actual class F actual constructor() {
|
||||||
|
actual inner class G1 actual constructor()
|
||||||
|
inner class G2
|
||||||
|
inner class G3
|
||||||
|
inner class G4
|
||||||
|
inner class G5
|
||||||
|
inner class G6
|
||||||
|
|
||||||
|
actual class H1 actual constructor()
|
||||||
|
class H2
|
||||||
|
class H3
|
||||||
|
class H4
|
||||||
|
|
||||||
|
actual interface I1
|
||||||
|
interface I2
|
||||||
|
interface I3
|
||||||
|
|
||||||
|
actual object J1
|
||||||
|
object J2
|
||||||
|
|
||||||
|
actual enum class K1 { FOO, BAR, BAZ }
|
||||||
|
}
|
||||||
|
|
||||||
|
actual interface L {
|
||||||
|
actual class M1 actual constructor()
|
||||||
|
class M2
|
||||||
|
class M3
|
||||||
|
class M4
|
||||||
|
class M5
|
||||||
|
|
||||||
|
actual interface N1
|
||||||
|
interface N2
|
||||||
|
interface N3
|
||||||
|
|
||||||
|
actual object O1
|
||||||
|
object O2
|
||||||
|
|
||||||
|
actual enum class P1 { FOO, BAR, BAZ }
|
||||||
|
}
|
||||||
|
|
||||||
|
actual object R {
|
||||||
|
actual class S1 actual constructor()
|
||||||
|
class S2
|
||||||
|
class S3
|
||||||
|
class S4
|
||||||
|
|
||||||
|
actual interface T1
|
||||||
|
interface T2
|
||||||
|
interface T3
|
||||||
|
|
||||||
|
actual object U1
|
||||||
|
object U2
|
||||||
|
|
||||||
|
actual enum class V1 { FOO, BAR, BAZ }
|
||||||
|
}
|
||||||
|
|
||||||
|
actual class W actual constructor() {
|
||||||
|
actual object X {
|
||||||
|
actual interface Y {
|
||||||
|
actual class Z actual constructor() {
|
||||||
|
actual enum class AA { FOO, BAR, BAZ }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
actual class BB1 actual constructor() { actual companion object }
|
||||||
|
actual class BB2 actual constructor() { companion object }
|
||||||
|
|
||||||
|
actual class CC1 actual constructor() { actual companion object DD1 }
|
||||||
|
actual class CC2 actual constructor() { companion object DD2 }
|
||||||
|
actual class CC3 actual constructor() { companion object DD3 }
|
||||||
|
|
||||||
|
actual inline class EE1 actual constructor(actual val value: String)
|
||||||
|
inline class EE2(val value: String)
|
||||||
|
|
||||||
|
actual external class FF1 actual constructor(actual val property1: String) {
|
||||||
|
actual val property2 = property1
|
||||||
|
actual val property3 get() = property1
|
||||||
|
actual val property4: String
|
||||||
|
|
||||||
|
actual fun function1() = property1
|
||||||
|
actual fun function2(): String
|
||||||
|
}
|
||||||
|
actual external class FF2 actual constructor()
|
||||||
|
|
||||||
|
actual sealed class GG1
|
||||||
|
actual sealed class GG2 {
|
||||||
|
actual class HH1 actual constructor(): GG2()
|
||||||
|
actual object HH2 : GG2()
|
||||||
|
class HH3 : GG2()
|
||||||
|
}
|
||||||
|
|
||||||
|
actual class HH5 actual constructor(): GG2()
|
||||||
|
actual object HH6 : GG2()
|
||||||
|
class HH7 : GG2()
|
||||||
|
|
||||||
|
actual enum class II1
|
||||||
|
actual enum class II2 { FOO, BAR }
|
||||||
|
|
||||||
|
actual interface JJ {
|
||||||
|
actual val property: String
|
||||||
|
actual fun function(): String
|
||||||
|
}
|
||||||
|
|
||||||
|
actual class KK1 actual constructor(actual override val property: String) : JJ {
|
||||||
|
actual override fun function() = property
|
||||||
|
}
|
||||||
|
|
||||||
|
actual class KK2 actual constructor(private val wrapped: JJ) : JJ by wrapped
|
||||||
|
|
||||||
|
actual data class LL1 actual constructor(actual val value: String)
|
||||||
|
actual data class LL2 actual constructor(actual val value: String)
|
||||||
+135
@@ -0,0 +1,135 @@
|
|||||||
|
actual class A1 actual constructor()
|
||||||
|
interface A2
|
||||||
|
annotation class A3
|
||||||
|
object A4
|
||||||
|
enum class A5 { FOO, BAR, BAZ }
|
||||||
|
|
||||||
|
actual interface B1
|
||||||
|
annotation class B2
|
||||||
|
object B3
|
||||||
|
enum class B4 { FOO, BAR, BAZ }
|
||||||
|
|
||||||
|
actual annotation class C1 actual constructor()
|
||||||
|
object C2
|
||||||
|
enum class C3 { FOO, BAR, BAZ }
|
||||||
|
|
||||||
|
actual object D1
|
||||||
|
enum class D2 { FOO, BAR, BAZ }
|
||||||
|
|
||||||
|
actual enum class E1 { FOO, BAR, BAZ }
|
||||||
|
|
||||||
|
actual class F actual constructor() {
|
||||||
|
actual inner class G1 actual constructor()
|
||||||
|
class G2
|
||||||
|
interface G3
|
||||||
|
object G4
|
||||||
|
enum class G5 { FOO, BAR, BAZ }
|
||||||
|
companion object G6
|
||||||
|
|
||||||
|
actual class H1 actual constructor()
|
||||||
|
interface H2
|
||||||
|
object H3
|
||||||
|
enum class H4 { FOO, BAR, BAZ }
|
||||||
|
|
||||||
|
actual interface I1
|
||||||
|
object I2
|
||||||
|
enum class I3 { FOO, BAR, BAZ }
|
||||||
|
|
||||||
|
actual object J1
|
||||||
|
enum class J2 { FOO, BAR, BAZ }
|
||||||
|
|
||||||
|
actual enum class K1 { FOO, BAR, BAZ }
|
||||||
|
}
|
||||||
|
|
||||||
|
actual interface L {
|
||||||
|
actual class M1 actual constructor()
|
||||||
|
interface M2
|
||||||
|
object M3
|
||||||
|
enum class M4 { FOO, BAR, BAZ }
|
||||||
|
companion object M5
|
||||||
|
|
||||||
|
actual interface N1
|
||||||
|
object N2
|
||||||
|
enum class N3 { FOO, BAR, BAZ }
|
||||||
|
|
||||||
|
actual object O1
|
||||||
|
enum class O2 { FOO, BAR, BAZ }
|
||||||
|
|
||||||
|
actual enum class P1 { FOO, BAR, BAZ }
|
||||||
|
}
|
||||||
|
|
||||||
|
actual object R {
|
||||||
|
actual class S1 actual constructor()
|
||||||
|
interface S2
|
||||||
|
object S3
|
||||||
|
enum class S4 { FOO, BAR, BAZ }
|
||||||
|
|
||||||
|
actual interface T1
|
||||||
|
object T2
|
||||||
|
enum class T3 { FOO, BAR, BAZ }
|
||||||
|
|
||||||
|
actual object U1
|
||||||
|
enum class U2 { FOO, BAR, BAZ }
|
||||||
|
|
||||||
|
actual enum class V1 { FOO, BAR, BAZ }
|
||||||
|
}
|
||||||
|
|
||||||
|
actual class W actual constructor() {
|
||||||
|
actual object X {
|
||||||
|
actual interface Y {
|
||||||
|
actual class Z actual constructor() {
|
||||||
|
actual enum class AA { FOO, BAR, BAZ }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
actual class BB1 actual constructor() { actual companion object }
|
||||||
|
actual class BB2 actual constructor()
|
||||||
|
|
||||||
|
actual class CC1 actual constructor() { actual companion object DD1 }
|
||||||
|
actual class CC2 actual constructor() { companion object CompanionWithAnotherName }
|
||||||
|
actual class CC3 actual constructor() { companion object }
|
||||||
|
|
||||||
|
actual inline class EE1 actual constructor(actual val value: String)
|
||||||
|
class EE2(val value: String)
|
||||||
|
|
||||||
|
actual class FF1 actual constructor(actual val property1: String) {
|
||||||
|
actual val property2 = property1
|
||||||
|
actual val property3 get() = property1
|
||||||
|
actual val property4 = property1
|
||||||
|
|
||||||
|
actual fun function1() = property1
|
||||||
|
actual fun function2() = function1()
|
||||||
|
}
|
||||||
|
actual external class FF2 actual constructor()
|
||||||
|
|
||||||
|
actual sealed class GG1
|
||||||
|
actual sealed class GG2 {
|
||||||
|
actual class HH1 actual constructor(): GG2()
|
||||||
|
actual object HH2 : GG2()
|
||||||
|
class HH4 : GG2()
|
||||||
|
}
|
||||||
|
|
||||||
|
actual class HH5 actual constructor(): GG2()
|
||||||
|
actual object HH6 : GG2()
|
||||||
|
class HH8 : GG2()
|
||||||
|
|
||||||
|
actual enum class II1
|
||||||
|
actual enum class II2 { FOO, BAZ }
|
||||||
|
|
||||||
|
actual interface JJ {
|
||||||
|
actual val property: String
|
||||||
|
val property2: String
|
||||||
|
actual fun function(): String
|
||||||
|
}
|
||||||
|
|
||||||
|
actual class KK1 actual constructor(actual override val property: String) : JJ {
|
||||||
|
val property2 = property
|
||||||
|
actual override fun function() = property
|
||||||
|
}
|
||||||
|
|
||||||
|
actual class KK2 actual constructor(wrapped: JJ) : JJ by wrapped
|
||||||
|
|
||||||
|
actual data class LL1 actual constructor(actual val value: String)
|
||||||
|
actual class LL2 actual constructor(actual val value: String)
|
||||||
Vendored
+133
@@ -0,0 +1,133 @@
|
|||||||
|
class A1
|
||||||
|
class A2
|
||||||
|
class A3
|
||||||
|
class A4
|
||||||
|
class A5
|
||||||
|
|
||||||
|
interface B1
|
||||||
|
interface B2
|
||||||
|
interface B3
|
||||||
|
interface B4
|
||||||
|
|
||||||
|
annotation class C1
|
||||||
|
annotation class C2
|
||||||
|
annotation class C3
|
||||||
|
|
||||||
|
object D1
|
||||||
|
object D2
|
||||||
|
|
||||||
|
enum class E1 { FOO, BAR, BAZ }
|
||||||
|
|
||||||
|
class F {
|
||||||
|
inner class G1
|
||||||
|
inner class G2
|
||||||
|
inner class G3
|
||||||
|
inner class G4
|
||||||
|
inner class G5
|
||||||
|
inner class G6
|
||||||
|
|
||||||
|
class H1
|
||||||
|
class H2
|
||||||
|
class H3
|
||||||
|
class H4
|
||||||
|
|
||||||
|
interface I1
|
||||||
|
interface I2
|
||||||
|
interface I3
|
||||||
|
|
||||||
|
object J1
|
||||||
|
object J2
|
||||||
|
|
||||||
|
enum class K1 { FOO, BAR, BAZ }
|
||||||
|
}
|
||||||
|
|
||||||
|
interface L {
|
||||||
|
class M1
|
||||||
|
class M2
|
||||||
|
class M3
|
||||||
|
class M4
|
||||||
|
class M5
|
||||||
|
|
||||||
|
interface N1
|
||||||
|
interface N2
|
||||||
|
interface N3
|
||||||
|
|
||||||
|
object O1
|
||||||
|
object O2
|
||||||
|
|
||||||
|
enum class P1 { FOO, BAR, BAZ }
|
||||||
|
}
|
||||||
|
|
||||||
|
object R {
|
||||||
|
class S1
|
||||||
|
class S2
|
||||||
|
class S3
|
||||||
|
class S4
|
||||||
|
|
||||||
|
interface T1
|
||||||
|
interface T2
|
||||||
|
interface T3
|
||||||
|
|
||||||
|
object U1
|
||||||
|
object U2
|
||||||
|
|
||||||
|
enum class V1 { FOO, BAR, BAZ }
|
||||||
|
}
|
||||||
|
|
||||||
|
class W {
|
||||||
|
object X {
|
||||||
|
interface Y {
|
||||||
|
class Z {
|
||||||
|
enum class AA { FOO, BAR, BAZ }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class BB1 { companion object }
|
||||||
|
class BB2 { companion object }
|
||||||
|
|
||||||
|
class CC1 { companion object DD1 }
|
||||||
|
class CC2 { companion object DD2 }
|
||||||
|
class CC3 { companion object DD3 }
|
||||||
|
|
||||||
|
inline class EE1(val value: String)
|
||||||
|
inline class EE2(val value: String)
|
||||||
|
|
||||||
|
external class FF1(val property1: String) {
|
||||||
|
val property2 = property1
|
||||||
|
val property3 get() = property1
|
||||||
|
val property4: String
|
||||||
|
|
||||||
|
fun function1() = property1
|
||||||
|
fun function2(): String
|
||||||
|
}
|
||||||
|
external class FF2()
|
||||||
|
|
||||||
|
sealed class GG1
|
||||||
|
sealed class GG2 {
|
||||||
|
class HH1 : GG2()
|
||||||
|
object HH2 : GG2()
|
||||||
|
class HH3 : GG2()
|
||||||
|
}
|
||||||
|
|
||||||
|
class HH5 : GG2()
|
||||||
|
object HH6 : GG2()
|
||||||
|
class HH7 : GG2()
|
||||||
|
|
||||||
|
enum class II1
|
||||||
|
enum class II2 { FOO, BAR }
|
||||||
|
|
||||||
|
interface JJ {
|
||||||
|
val property: String
|
||||||
|
fun function(): String
|
||||||
|
}
|
||||||
|
|
||||||
|
class KK1(override val property: String) : JJ {
|
||||||
|
override fun function() = property
|
||||||
|
}
|
||||||
|
|
||||||
|
class KK2(private val wrapped: JJ) : JJ by wrapped
|
||||||
|
|
||||||
|
data class LL1(val value: String)
|
||||||
|
data class LL2(val value: String)
|
||||||
konan/commonizer/testData/classifierCommonization/classKindAndModifiers/original/jvm/package_root.kt
Vendored
+135
@@ -0,0 +1,135 @@
|
|||||||
|
class A1
|
||||||
|
interface A2
|
||||||
|
annotation class A3
|
||||||
|
object A4
|
||||||
|
enum class A5 { FOO, BAR, BAZ }
|
||||||
|
|
||||||
|
interface B1
|
||||||
|
annotation class B2
|
||||||
|
object B3
|
||||||
|
enum class B4 { FOO, BAR, BAZ }
|
||||||
|
|
||||||
|
annotation class C1
|
||||||
|
object C2
|
||||||
|
enum class C3 { FOO, BAR, BAZ }
|
||||||
|
|
||||||
|
object D1
|
||||||
|
enum class D2 { FOO, BAR, BAZ }
|
||||||
|
|
||||||
|
enum class E1 { FOO, BAR, BAZ }
|
||||||
|
|
||||||
|
class F {
|
||||||
|
inner class G1
|
||||||
|
class G2
|
||||||
|
interface G3
|
||||||
|
object G4
|
||||||
|
enum class G5 { FOO, BAR, BAZ }
|
||||||
|
companion object G6
|
||||||
|
|
||||||
|
class H1
|
||||||
|
interface H2
|
||||||
|
object H3
|
||||||
|
enum class H4 { FOO, BAR, BAZ }
|
||||||
|
|
||||||
|
interface I1
|
||||||
|
object I2
|
||||||
|
enum class I3 { FOO, BAR, BAZ }
|
||||||
|
|
||||||
|
object J1
|
||||||
|
enum class J2 { FOO, BAR, BAZ }
|
||||||
|
|
||||||
|
enum class K1 { FOO, BAR, BAZ }
|
||||||
|
}
|
||||||
|
|
||||||
|
interface L {
|
||||||
|
class M1
|
||||||
|
interface M2
|
||||||
|
object M3
|
||||||
|
enum class M4 { FOO, BAR, BAZ }
|
||||||
|
companion object M5
|
||||||
|
|
||||||
|
interface N1
|
||||||
|
object N2
|
||||||
|
enum class N3 { FOO, BAR, BAZ }
|
||||||
|
|
||||||
|
object O1
|
||||||
|
enum class O2 { FOO, BAR, BAZ }
|
||||||
|
|
||||||
|
enum class P1 { FOO, BAR, BAZ }
|
||||||
|
}
|
||||||
|
|
||||||
|
object R {
|
||||||
|
class S1
|
||||||
|
interface S2
|
||||||
|
object S3
|
||||||
|
enum class S4 { FOO, BAR, BAZ }
|
||||||
|
|
||||||
|
interface T1
|
||||||
|
object T2
|
||||||
|
enum class T3 { FOO, BAR, BAZ }
|
||||||
|
|
||||||
|
object U1
|
||||||
|
enum class U2 { FOO, BAR, BAZ }
|
||||||
|
|
||||||
|
enum class V1 { FOO, BAR, BAZ }
|
||||||
|
}
|
||||||
|
|
||||||
|
class W {
|
||||||
|
object X {
|
||||||
|
interface Y {
|
||||||
|
class Z {
|
||||||
|
enum class AA { FOO, BAR, BAZ }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class BB1 { companion object }
|
||||||
|
class BB2
|
||||||
|
|
||||||
|
class CC1 { companion object DD1 }
|
||||||
|
class CC2 { companion object CompanionWithAnotherName }
|
||||||
|
class CC3 { companion object }
|
||||||
|
|
||||||
|
inline class EE1(val value: String)
|
||||||
|
class EE2(val value: String)
|
||||||
|
|
||||||
|
class FF1(val property1: String) {
|
||||||
|
val property2 = property1
|
||||||
|
val property3 get() = property1
|
||||||
|
val property4 = property1
|
||||||
|
|
||||||
|
fun function1() = property1
|
||||||
|
fun function2() = function1()
|
||||||
|
}
|
||||||
|
external class FF2()
|
||||||
|
|
||||||
|
sealed class GG1
|
||||||
|
sealed class GG2 {
|
||||||
|
class HH1 : GG2()
|
||||||
|
object HH2 : GG2()
|
||||||
|
class HH4 : GG2()
|
||||||
|
}
|
||||||
|
|
||||||
|
class HH5 : GG2()
|
||||||
|
object HH6 : GG2()
|
||||||
|
class HH8 : GG2()
|
||||||
|
|
||||||
|
enum class II1
|
||||||
|
enum class II2 { FOO, BAZ }
|
||||||
|
|
||||||
|
interface JJ {
|
||||||
|
val property: String
|
||||||
|
val property2: String
|
||||||
|
fun function(): String
|
||||||
|
}
|
||||||
|
|
||||||
|
class KK1(override val property: String) : JJ {
|
||||||
|
val property2 = property
|
||||||
|
override fun function() = property
|
||||||
|
}
|
||||||
|
|
||||||
|
class KK2(wrapped: JJ) : JJ by wrapped
|
||||||
|
|
||||||
|
data class LL1(val value: String)
|
||||||
|
class LL2(val value: String)
|
||||||
Vendored
+30
@@ -0,0 +1,30 @@
|
|||||||
|
expect class A1(text: String) { constructor(number: Int) }
|
||||||
|
expect class A2(text: String) { constructor(number: Int) }
|
||||||
|
expect class A3
|
||||||
|
expect class A4
|
||||||
|
expect class A5
|
||||||
|
|
||||||
|
expect class B1 protected constructor(text: String) { protected constructor(number: Int) }
|
||||||
|
expect class B2
|
||||||
|
expect class B3
|
||||||
|
|
||||||
|
expect class C1 internal constructor(text: String) { internal constructor(number: Int) }
|
||||||
|
expect class C2
|
||||||
|
|
||||||
|
expect class D1
|
||||||
|
|
||||||
|
expect class E {
|
||||||
|
constructor(a: Any)
|
||||||
|
|
||||||
|
constructor(a: Any, b: String)
|
||||||
|
constructor(a: Any, b: Int)
|
||||||
|
}
|
||||||
|
|
||||||
|
expect enum class F {
|
||||||
|
FOO,
|
||||||
|
BAR,
|
||||||
|
BAZ;
|
||||||
|
|
||||||
|
// no constructor allowed for enum class
|
||||||
|
val alias: String
|
||||||
|
}
|
||||||
Vendored
+30
@@ -0,0 +1,30 @@
|
|||||||
|
actual class A1 actual constructor(text: String) { actual constructor(number: Int) : this(number.toString()) }
|
||||||
|
actual class A2 actual constructor(text: String) { actual constructor(number: Int) : this(number.toString()) }
|
||||||
|
actual class A3(text: String) { constructor(number: Int) : this(number.toString()) }
|
||||||
|
actual class A4(text: String) { constructor(number: Int) : this(number.toString()) }
|
||||||
|
actual class A5(text: String) { constructor(number: Int) : this(number.toString()) }
|
||||||
|
|
||||||
|
actual class B1 protected actual constructor(text: String) { protected actual constructor(number: Int) : this(number.toString()) }
|
||||||
|
actual class B2 protected constructor(text: String) { protected constructor(number: Int) : this(number.toString()) }
|
||||||
|
actual class B3 protected constructor(text: String) { protected constructor(number: Int) : this(number.toString()) }
|
||||||
|
|
||||||
|
actual class C1 internal actual constructor(text: String) { internal actual constructor(number: Int) : this(number.toString()) }
|
||||||
|
actual class C2 internal constructor(text: String) { internal constructor(number: Int) : this(number.toString()) }
|
||||||
|
|
||||||
|
actual class D1 private constructor(text: String) { private constructor(number: Int) : this(number.toString()) }
|
||||||
|
|
||||||
|
actual class E {
|
||||||
|
constructor(a: Int)
|
||||||
|
actual constructor(a: Any)
|
||||||
|
|
||||||
|
constructor(a: Int, b: String)
|
||||||
|
constructor(a: Int, b: Any)
|
||||||
|
actual constructor(a: Any, b: String)
|
||||||
|
actual constructor(a: Any, b: Int)
|
||||||
|
}
|
||||||
|
|
||||||
|
actual enum class F(actual val alias: String) {
|
||||||
|
FOO("foo"),
|
||||||
|
BAR("bar"),
|
||||||
|
BAZ("baz")
|
||||||
|
}
|
||||||
Vendored
+30
@@ -0,0 +1,30 @@
|
|||||||
|
actual class A1 actual constructor(text: String) { actual constructor(number: Int) : this(number.toString()) }
|
||||||
|
actual class A2 actual constructor(text: String) { actual constructor(number: Int) : this(number.toString()) }
|
||||||
|
actual class A3 protected constructor(text: String) { protected constructor(number: Int) : this(number.toString()) }
|
||||||
|
actual class A4 internal constructor(text: String) { internal constructor(number: Int) : this(number.toString()) }
|
||||||
|
actual class A5 private constructor(text: String) { private constructor(number: Int) : this(number.toString()) }
|
||||||
|
|
||||||
|
actual class B1 protected actual constructor(text: String) { protected actual constructor(number: Int) : this(number.toString()) }
|
||||||
|
actual class B2 internal constructor(text: String) { internal constructor(number: Int) : this(number.toString()) }
|
||||||
|
actual class B3 private constructor(text: String) { private constructor(number: Int) : this(number.toString()) }
|
||||||
|
|
||||||
|
actual class C1 internal actual constructor(text: String) { internal actual constructor(number: Int) : this(number.toString()) }
|
||||||
|
actual class C2 private constructor(text: String) { private constructor(number: Int) : this(number.toString()) }
|
||||||
|
|
||||||
|
actual class D1 private constructor(text: String) { private constructor(number: Int) : this(number.toString()) }
|
||||||
|
|
||||||
|
actual class E {
|
||||||
|
constructor(a: String)
|
||||||
|
actual constructor(a: Any)
|
||||||
|
|
||||||
|
constructor(a: String, b: Int)
|
||||||
|
constructor(a: String, b: Any)
|
||||||
|
actual constructor(a: Any, b: String)
|
||||||
|
actual constructor(a: Any, b: Int)
|
||||||
|
}
|
||||||
|
|
||||||
|
actual enum class F(actual val alias: String) {
|
||||||
|
FOO("foo"),
|
||||||
|
BAR("bar"),
|
||||||
|
BAZ("baz")
|
||||||
|
}
|
||||||
+30
@@ -0,0 +1,30 @@
|
|||||||
|
class A1(text: String) { constructor(number: Int) : this(number.toString()) }
|
||||||
|
class A2(text: String) { constructor(number: Int) : this(number.toString()) }
|
||||||
|
class A3(text: String) { constructor(number: Int) : this(number.toString()) }
|
||||||
|
class A4(text: String) { constructor(number: Int) : this(number.toString()) }
|
||||||
|
class A5(text: String) { constructor(number: Int) : this(number.toString()) }
|
||||||
|
|
||||||
|
class B1 protected constructor(text: String) { protected constructor(number: Int) : this(number.toString()) }
|
||||||
|
class B2 protected constructor(text: String) { protected constructor(number: Int) : this(number.toString()) }
|
||||||
|
class B3 protected constructor(text: String) { protected constructor(number: Int) : this(number.toString()) }
|
||||||
|
|
||||||
|
class C1 internal constructor(text: String) { internal constructor(number: Int) : this(number.toString()) }
|
||||||
|
class C2 internal constructor(text: String) { internal constructor(number: Int) : this(number.toString()) }
|
||||||
|
|
||||||
|
class D1 private constructor(text: String) { private constructor(number: Int) : this(number.toString()) }
|
||||||
|
|
||||||
|
class E {
|
||||||
|
constructor(a: Int)
|
||||||
|
constructor(a: Any)
|
||||||
|
|
||||||
|
constructor(a: Int, b: String)
|
||||||
|
constructor(a: Int, b: Any)
|
||||||
|
constructor(a: Any, b: String)
|
||||||
|
constructor(a: Any, b: Int)
|
||||||
|
}
|
||||||
|
|
||||||
|
enum class F(val alias: String) {
|
||||||
|
FOO("foo"),
|
||||||
|
BAR("bar"),
|
||||||
|
BAZ("baz")
|
||||||
|
}
|
||||||
Vendored
+30
@@ -0,0 +1,30 @@
|
|||||||
|
class A1(text: String) { constructor(number: Int) : this(number.toString()) }
|
||||||
|
class A2 constructor(text: String) { constructor(number: Int) : this(number.toString()) }
|
||||||
|
class A3 protected constructor(text: String) { protected constructor(number: Int) : this(number.toString()) }
|
||||||
|
class A4 internal constructor(text: String) { internal constructor(number: Int) : this(number.toString()) }
|
||||||
|
class A5 private constructor(text: String) { private constructor(number: Int) : this(number.toString()) }
|
||||||
|
|
||||||
|
class B1 protected constructor(text: String) { protected constructor(number: Int) : this(number.toString()) }
|
||||||
|
class B2 internal constructor(text: String) { internal constructor(number: Int) : this(number.toString()) }
|
||||||
|
class B3 private constructor(text: String) { private constructor(number: Int) : this(number.toString()) }
|
||||||
|
|
||||||
|
class C1 internal constructor(text: String) { internal constructor(number: Int) : this(number.toString()) }
|
||||||
|
class C2 private constructor(text: String) { private constructor(number: Int) : this(number.toString()) }
|
||||||
|
|
||||||
|
class D1 private constructor(text: String) { private constructor(number: Int) : this(number.toString()) }
|
||||||
|
|
||||||
|
class E {
|
||||||
|
constructor(a: String)
|
||||||
|
constructor(a: Any)
|
||||||
|
|
||||||
|
constructor(a: String, b: Int)
|
||||||
|
constructor(a: String, b: Any)
|
||||||
|
constructor(a: Any, b: String)
|
||||||
|
constructor(a: Any, b: Int)
|
||||||
|
}
|
||||||
|
|
||||||
|
enum class F(val alias: String) {
|
||||||
|
FOO("foo"),
|
||||||
|
BAR("bar"),
|
||||||
|
BAZ("baz")
|
||||||
|
}
|
||||||
Vendored
+17
@@ -0,0 +1,17 @@
|
|||||||
|
expect final class A1()
|
||||||
|
expect final class A2()
|
||||||
|
expect open class B1()
|
||||||
|
expect abstract class C1()
|
||||||
|
expect sealed class D1
|
||||||
|
|
||||||
|
expect abstract class E() {
|
||||||
|
final val p1: Int
|
||||||
|
final val p2: Int
|
||||||
|
open val p4: Int
|
||||||
|
abstract val p6: Int
|
||||||
|
|
||||||
|
final fun f1(): Int
|
||||||
|
final fun f2(): Int
|
||||||
|
open fun f4(): Int
|
||||||
|
abstract fun f6(): Int
|
||||||
|
}
|
||||||
+33
@@ -0,0 +1,33 @@
|
|||||||
|
actual final class A1 actual constructor()
|
||||||
|
actual final class A2 actual constructor()
|
||||||
|
final class A3
|
||||||
|
final class A4
|
||||||
|
|
||||||
|
actual open class B1 actual constructor()
|
||||||
|
open class B2
|
||||||
|
open class B3
|
||||||
|
|
||||||
|
actual abstract class C1 actual constructor()
|
||||||
|
abstract class C2
|
||||||
|
|
||||||
|
actual sealed class D1
|
||||||
|
|
||||||
|
actual abstract class E actual constructor() {
|
||||||
|
actual final val p1: Int = 1
|
||||||
|
actual final val p2: Int = 1
|
||||||
|
final val p3: Int = 1
|
||||||
|
|
||||||
|
actual open val p4: Int = 1
|
||||||
|
open val p5: Int = 1
|
||||||
|
|
||||||
|
actual abstract val p6: Int
|
||||||
|
|
||||||
|
actual final fun f1(): Int = 1
|
||||||
|
actual final fun f2(): Int = 1
|
||||||
|
final fun f3(): Int = 1
|
||||||
|
|
||||||
|
actual open fun f4(): Int = 1
|
||||||
|
open fun f5(): Int = 1
|
||||||
|
|
||||||
|
actual abstract fun f6(): Int
|
||||||
|
}
|
||||||
+33
@@ -0,0 +1,33 @@
|
|||||||
|
actual final class A1 actual constructor()
|
||||||
|
actual open class A2 actual constructor()
|
||||||
|
abstract class A3
|
||||||
|
sealed class A4
|
||||||
|
|
||||||
|
actual open class B1 actual constructor()
|
||||||
|
abstract class B2
|
||||||
|
sealed class B3
|
||||||
|
|
||||||
|
actual abstract class C1 actual constructor()
|
||||||
|
sealed class C2
|
||||||
|
|
||||||
|
actual sealed class D1
|
||||||
|
|
||||||
|
actual abstract class E actual constructor() {
|
||||||
|
actual final val p1: Int = 1
|
||||||
|
actual open val p2: Int = 1
|
||||||
|
abstract val p3: Int
|
||||||
|
|
||||||
|
actual open val p4: Int = 1
|
||||||
|
abstract val p5: Int
|
||||||
|
|
||||||
|
actual abstract val p6: Int
|
||||||
|
|
||||||
|
actual final fun f1(): Int = 1
|
||||||
|
actual open fun f2(): Int = 1
|
||||||
|
abstract fun f3(): Int
|
||||||
|
|
||||||
|
actual open fun f4(): Int = 1
|
||||||
|
abstract fun f5(): Int
|
||||||
|
|
||||||
|
actual abstract fun f6(): Int
|
||||||
|
}
|
||||||
+33
@@ -0,0 +1,33 @@
|
|||||||
|
final class A1
|
||||||
|
final class A2
|
||||||
|
final class A3
|
||||||
|
final class A4
|
||||||
|
|
||||||
|
open class B1
|
||||||
|
open class B2
|
||||||
|
open class B3
|
||||||
|
|
||||||
|
abstract class C1
|
||||||
|
abstract class C2
|
||||||
|
|
||||||
|
sealed class D1
|
||||||
|
|
||||||
|
abstract class E {
|
||||||
|
final val p1: Int = 1
|
||||||
|
final val p2: Int = 1
|
||||||
|
final val p3: Int = 1
|
||||||
|
|
||||||
|
open val p4: Int = 1
|
||||||
|
open val p5: Int = 1
|
||||||
|
|
||||||
|
abstract val p6: Int
|
||||||
|
|
||||||
|
final fun f1(): Int = 1
|
||||||
|
final fun f2(): Int = 1
|
||||||
|
final fun f3(): Int = 1
|
||||||
|
|
||||||
|
open fun f4(): Int = 1
|
||||||
|
open fun f5(): Int = 1
|
||||||
|
|
||||||
|
abstract fun f6(): Int
|
||||||
|
}
|
||||||
+33
@@ -0,0 +1,33 @@
|
|||||||
|
final class A1
|
||||||
|
open class A2
|
||||||
|
abstract class A3
|
||||||
|
sealed class A4
|
||||||
|
|
||||||
|
open class B1
|
||||||
|
abstract class B2
|
||||||
|
sealed class B3
|
||||||
|
|
||||||
|
abstract class C1
|
||||||
|
sealed class C2
|
||||||
|
|
||||||
|
sealed class D1
|
||||||
|
|
||||||
|
abstract class E {
|
||||||
|
final val p1: Int = 1
|
||||||
|
open val p2: Int = 1
|
||||||
|
abstract val p3: Int
|
||||||
|
|
||||||
|
open val p4: Int = 1
|
||||||
|
abstract val p5: Int
|
||||||
|
|
||||||
|
abstract val p6: Int
|
||||||
|
|
||||||
|
final fun f1(): Int = 1
|
||||||
|
open fun f2(): Int = 1
|
||||||
|
abstract fun f3(): Int
|
||||||
|
|
||||||
|
open fun f4(): Int = 1
|
||||||
|
abstract fun f5(): Int
|
||||||
|
|
||||||
|
abstract fun f6(): Int
|
||||||
|
}
|
||||||
Vendored
+64
@@ -0,0 +1,64 @@
|
|||||||
|
expect interface A1 {
|
||||||
|
val property1: Int
|
||||||
|
fun function1(): Int
|
||||||
|
}
|
||||||
|
|
||||||
|
expect abstract class A2(): A1 {
|
||||||
|
abstract val property2: Int
|
||||||
|
abstract fun function2(): Int
|
||||||
|
}
|
||||||
|
|
||||||
|
expect class A3 (): A2 {
|
||||||
|
override val property1: Int
|
||||||
|
override val property2: Int
|
||||||
|
val property3: Int
|
||||||
|
|
||||||
|
override fun function1(): Int
|
||||||
|
override fun function2(): Int
|
||||||
|
fun function3(): Int
|
||||||
|
}
|
||||||
|
|
||||||
|
expect interface B1 {
|
||||||
|
val property1: Int
|
||||||
|
fun function1(): Int
|
||||||
|
}
|
||||||
|
|
||||||
|
expect class B3(): B1 {
|
||||||
|
override val property1: Int
|
||||||
|
open val property2: Int
|
||||||
|
val property3: Int
|
||||||
|
|
||||||
|
override fun function1(): Int
|
||||||
|
open fun function2(): Int
|
||||||
|
fun function3(): Int
|
||||||
|
}
|
||||||
|
|
||||||
|
expect interface C1 {
|
||||||
|
val property1: Int
|
||||||
|
fun function1(): Int
|
||||||
|
}
|
||||||
|
|
||||||
|
expect class C3 (): C1 {
|
||||||
|
override val property1: Int
|
||||||
|
val property2: Int
|
||||||
|
val property3: Int
|
||||||
|
|
||||||
|
override fun function1(): Int
|
||||||
|
fun function2(): Int
|
||||||
|
fun function3(): Int
|
||||||
|
}
|
||||||
|
|
||||||
|
expect interface D2 {
|
||||||
|
val property2: Int
|
||||||
|
fun function2(): Int
|
||||||
|
}
|
||||||
|
|
||||||
|
expect class D3(): D2 {
|
||||||
|
open val property1: Int
|
||||||
|
override val property2: Int
|
||||||
|
val property3: Int
|
||||||
|
|
||||||
|
open fun function1(): Int
|
||||||
|
override fun function2(): Int
|
||||||
|
fun function3(): Int
|
||||||
|
}
|
||||||
+79
@@ -0,0 +1,79 @@
|
|||||||
|
actual interface A1 {
|
||||||
|
actual val property1: Int
|
||||||
|
actual fun function1(): Int
|
||||||
|
}
|
||||||
|
|
||||||
|
actual abstract class A2 actual constructor(): A1 {
|
||||||
|
actual abstract val property2: Int
|
||||||
|
actual abstract fun function2(): Int
|
||||||
|
}
|
||||||
|
|
||||||
|
actual class A3 actual constructor(): A2() {
|
||||||
|
actual override val property1 = 1
|
||||||
|
actual override val property2 = 1
|
||||||
|
actual val property3 = 1
|
||||||
|
|
||||||
|
actual override fun function1() = 1
|
||||||
|
actual override fun function2() = 1
|
||||||
|
actual fun function3() = 1
|
||||||
|
}
|
||||||
|
|
||||||
|
actual interface B1 {
|
||||||
|
actual val property1: Int
|
||||||
|
actual fun function1(): Int
|
||||||
|
}
|
||||||
|
|
||||||
|
interface B2 {
|
||||||
|
val property2: Int
|
||||||
|
fun function2(): Int
|
||||||
|
}
|
||||||
|
|
||||||
|
actual class B3 actual constructor(): B1, B2 {
|
||||||
|
actual override val property1 = 1
|
||||||
|
actual override val property2 = 1
|
||||||
|
actual val property3 = 1
|
||||||
|
|
||||||
|
actual override fun function1() = 1
|
||||||
|
actual override fun function2() = 1
|
||||||
|
actual fun function3() = 1
|
||||||
|
}
|
||||||
|
|
||||||
|
actual interface C1 {
|
||||||
|
actual val property1: Int
|
||||||
|
actual fun function1(): Int
|
||||||
|
}
|
||||||
|
|
||||||
|
interface C2 {
|
||||||
|
val property2: Int
|
||||||
|
fun function2(): Int
|
||||||
|
}
|
||||||
|
|
||||||
|
actual class C3 actual constructor(): C1, C2 {
|
||||||
|
actual override val property1 = 1
|
||||||
|
actual override val property2 = 1
|
||||||
|
actual val property3 = 1
|
||||||
|
|
||||||
|
actual override fun function1() = 1
|
||||||
|
actual override fun function2() = 1
|
||||||
|
actual fun function3() = 1
|
||||||
|
}
|
||||||
|
|
||||||
|
interface D1 {
|
||||||
|
val property1: Int
|
||||||
|
fun function1(): Int
|
||||||
|
}
|
||||||
|
|
||||||
|
actual interface D2 {
|
||||||
|
actual val property2: Int
|
||||||
|
actual fun function2(): Int
|
||||||
|
}
|
||||||
|
|
||||||
|
actual class D3 actual constructor(): D1, D2 {
|
||||||
|
actual override val property1 = 1
|
||||||
|
actual override val property2 = 1
|
||||||
|
actual val property3 = 1
|
||||||
|
|
||||||
|
actual override fun function1() = 1
|
||||||
|
actual override fun function2() = 1
|
||||||
|
actual fun function3() = 1
|
||||||
|
}
|
||||||
Vendored
+72
@@ -0,0 +1,72 @@
|
|||||||
|
actual interface A1 {
|
||||||
|
actual val property1: Int
|
||||||
|
actual fun function1(): Int
|
||||||
|
}
|
||||||
|
|
||||||
|
actual abstract class A2 actual constructor(): A1 {
|
||||||
|
actual abstract val property2: Int
|
||||||
|
actual abstract fun function2(): Int
|
||||||
|
}
|
||||||
|
|
||||||
|
actual class A3 actual constructor(): A2(), A1 {
|
||||||
|
actual override val property1 = 1
|
||||||
|
actual override val property2 = 1
|
||||||
|
actual val property3 = 1
|
||||||
|
|
||||||
|
actual override fun function1() = 1
|
||||||
|
actual override fun function2() = 1
|
||||||
|
actual fun function3() = 1
|
||||||
|
}
|
||||||
|
|
||||||
|
actual interface B1 {
|
||||||
|
actual val property1: Int
|
||||||
|
val property2: Int
|
||||||
|
|
||||||
|
actual fun function1(): Int
|
||||||
|
fun function2(): Int
|
||||||
|
}
|
||||||
|
|
||||||
|
actual class B3 actual constructor(): B1 {
|
||||||
|
actual override val property1 = 1
|
||||||
|
actual override val property2 = 1
|
||||||
|
actual val property3 = 1
|
||||||
|
|
||||||
|
actual override fun function1() = 1
|
||||||
|
actual override fun function2() = 1
|
||||||
|
actual fun function3() = 1
|
||||||
|
}
|
||||||
|
|
||||||
|
actual interface C1 {
|
||||||
|
actual val property1: Int
|
||||||
|
actual fun function1(): Int
|
||||||
|
}
|
||||||
|
|
||||||
|
actual class C3 actual constructor(): C1 {
|
||||||
|
actual override val property1 = 1
|
||||||
|
actual val property2 = 1
|
||||||
|
actual val property3 = 1
|
||||||
|
|
||||||
|
actual override fun function1() = 1
|
||||||
|
actual fun function2() = 1
|
||||||
|
actual fun function3() = 1
|
||||||
|
}
|
||||||
|
|
||||||
|
abstract class D1 {
|
||||||
|
abstract val property1: Int
|
||||||
|
abstract fun function1(): Int
|
||||||
|
}
|
||||||
|
|
||||||
|
actual interface D2 {
|
||||||
|
actual val property2: Int
|
||||||
|
actual fun function2(): Int
|
||||||
|
}
|
||||||
|
|
||||||
|
actual class D3 actual constructor(): D1(), D2 {
|
||||||
|
actual override val property1 = 1
|
||||||
|
actual override val property2 = 1
|
||||||
|
actual val property3 = 1
|
||||||
|
|
||||||
|
actual override fun function1() = 1
|
||||||
|
actual override fun function2() = 1
|
||||||
|
actual fun function3() = 1
|
||||||
|
}
|
||||||
+79
@@ -0,0 +1,79 @@
|
|||||||
|
interface A1 {
|
||||||
|
val property1: Int
|
||||||
|
fun function1(): Int
|
||||||
|
}
|
||||||
|
|
||||||
|
abstract class A2 : A1 {
|
||||||
|
abstract val property2: Int
|
||||||
|
abstract fun function2(): Int
|
||||||
|
}
|
||||||
|
|
||||||
|
class A3 : A2() {
|
||||||
|
override val property1 = 1
|
||||||
|
override val property2 = 1
|
||||||
|
val property3 = 1
|
||||||
|
|
||||||
|
override fun function1() = 1
|
||||||
|
override fun function2() = 1
|
||||||
|
fun function3() = 1
|
||||||
|
}
|
||||||
|
|
||||||
|
interface B1 {
|
||||||
|
val property1: Int
|
||||||
|
fun function1(): Int
|
||||||
|
}
|
||||||
|
|
||||||
|
interface B2 {
|
||||||
|
val property2: Int
|
||||||
|
fun function2(): Int
|
||||||
|
}
|
||||||
|
|
||||||
|
class B3 : B1, B2 {
|
||||||
|
override val property1 = 1
|
||||||
|
override val property2 = 1
|
||||||
|
val property3 = 1
|
||||||
|
|
||||||
|
override fun function1() = 1
|
||||||
|
override fun function2() = 1
|
||||||
|
fun function3() = 1
|
||||||
|
}
|
||||||
|
|
||||||
|
interface C1 {
|
||||||
|
val property1: Int
|
||||||
|
fun function1(): Int
|
||||||
|
}
|
||||||
|
|
||||||
|
interface C2 {
|
||||||
|
val property2: Int
|
||||||
|
fun function2(): Int
|
||||||
|
}
|
||||||
|
|
||||||
|
class C3 : C1, C2 {
|
||||||
|
override val property1 = 1
|
||||||
|
override val property2 = 1
|
||||||
|
val property3 = 1
|
||||||
|
|
||||||
|
override fun function1() = 1
|
||||||
|
override fun function2() = 1
|
||||||
|
fun function3() = 1
|
||||||
|
}
|
||||||
|
|
||||||
|
interface D1 {
|
||||||
|
val property1: Int
|
||||||
|
fun function1(): Int
|
||||||
|
}
|
||||||
|
|
||||||
|
interface D2 {
|
||||||
|
val property2: Int
|
||||||
|
fun function2(): Int
|
||||||
|
}
|
||||||
|
|
||||||
|
class D3 : D1, D2 {
|
||||||
|
override val property1 = 1
|
||||||
|
override val property2 = 1
|
||||||
|
val property3 = 1
|
||||||
|
|
||||||
|
override fun function1() = 1
|
||||||
|
override fun function2() = 1
|
||||||
|
fun function3() = 1
|
||||||
|
}
|
||||||
+72
@@ -0,0 +1,72 @@
|
|||||||
|
interface A1 {
|
||||||
|
val property1: Int
|
||||||
|
fun function1(): Int
|
||||||
|
}
|
||||||
|
|
||||||
|
abstract class A2 : A1 {
|
||||||
|
abstract val property2: Int
|
||||||
|
abstract fun function2(): Int
|
||||||
|
}
|
||||||
|
|
||||||
|
class A3 : A2(), A1 {
|
||||||
|
override val property1 = 1
|
||||||
|
override val property2 = 1
|
||||||
|
val property3 = 1
|
||||||
|
|
||||||
|
override fun function1() = 1
|
||||||
|
override fun function2() = 1
|
||||||
|
fun function3() = 1
|
||||||
|
}
|
||||||
|
|
||||||
|
interface B1 {
|
||||||
|
val property1: Int
|
||||||
|
val property2: Int
|
||||||
|
|
||||||
|
fun function1(): Int
|
||||||
|
fun function2(): Int
|
||||||
|
}
|
||||||
|
|
||||||
|
class B3 : B1 {
|
||||||
|
override val property1 = 1
|
||||||
|
override val property2 = 1
|
||||||
|
val property3 = 1
|
||||||
|
|
||||||
|
override fun function1() = 1
|
||||||
|
override fun function2() = 1
|
||||||
|
fun function3() = 1
|
||||||
|
}
|
||||||
|
|
||||||
|
interface C1 {
|
||||||
|
val property1: Int
|
||||||
|
fun function1(): Int
|
||||||
|
}
|
||||||
|
|
||||||
|
class C3 : C1 {
|
||||||
|
override val property1 = 1
|
||||||
|
val property2 = 1
|
||||||
|
val property3 = 1
|
||||||
|
|
||||||
|
override fun function1() = 1
|
||||||
|
fun function2() = 1
|
||||||
|
fun function3() = 1
|
||||||
|
}
|
||||||
|
|
||||||
|
abstract class D1 {
|
||||||
|
abstract val property1: Int
|
||||||
|
abstract fun function1(): Int
|
||||||
|
}
|
||||||
|
|
||||||
|
interface D2 {
|
||||||
|
val property2: Int
|
||||||
|
fun function2(): Int
|
||||||
|
}
|
||||||
|
|
||||||
|
class D3 : D1(), D2 {
|
||||||
|
override val property1 = 1
|
||||||
|
override val property2 = 1
|
||||||
|
val property3 = 1
|
||||||
|
|
||||||
|
override fun function1() = 1
|
||||||
|
override fun function2() = 1
|
||||||
|
fun function3() = 1
|
||||||
|
}
|
||||||
Vendored
+2
@@ -0,0 +1,2 @@
|
|||||||
|
expect class A ()
|
||||||
|
expect class B
|
||||||
Vendored
+8
@@ -0,0 +1,8 @@
|
|||||||
|
actual class A actual constructor()
|
||||||
|
actual typealias B = A
|
||||||
|
typealias C = B
|
||||||
|
typealias D = List<String>
|
||||||
|
typealias E<T> = List<T>
|
||||||
|
typealias F<R> = Function<R>
|
||||||
|
typealias G = () -> Unit
|
||||||
|
typealias H = (String) -> Int
|
||||||
Vendored
+8
@@ -0,0 +1,8 @@
|
|||||||
|
actual class A actual constructor()
|
||||||
|
actual typealias B = A
|
||||||
|
typealias C = B
|
||||||
|
typealias D = List<String>
|
||||||
|
typealias E<T> = List<T>
|
||||||
|
typealias F<R> = Function<R>
|
||||||
|
typealias G = () -> Unit
|
||||||
|
typealias H = (String) -> Int
|
||||||
+8
@@ -0,0 +1,8 @@
|
|||||||
|
class A
|
||||||
|
typealias B = A
|
||||||
|
typealias C = B
|
||||||
|
typealias D = List<String>
|
||||||
|
typealias E<T> = List<T>
|
||||||
|
typealias F<R> = Function<R>
|
||||||
|
typealias G = () -> Unit
|
||||||
|
typealias H = (String) -> Int
|
||||||
+8
@@ -0,0 +1,8 @@
|
|||||||
|
class A
|
||||||
|
typealias B = A
|
||||||
|
typealias C = B
|
||||||
|
typealias D = List<String>
|
||||||
|
typealias E<T> = List<T>
|
||||||
|
typealias F<R> = Function<R>
|
||||||
|
typealias G = () -> Unit
|
||||||
|
typealias H = (String) -> Int
|
||||||
Vendored
+126
@@ -0,0 +1,126 @@
|
|||||||
|
expect class A2<T : Any?>() {
|
||||||
|
val property: T
|
||||||
|
fun function(value: T): T
|
||||||
|
|
||||||
|
expect class Nested<T : Any?>() {
|
||||||
|
val property: T
|
||||||
|
fun function(value: T): T
|
||||||
|
}
|
||||||
|
|
||||||
|
expect inner class Inner() {
|
||||||
|
val property: T
|
||||||
|
fun function(value: T): T
|
||||||
|
}
|
||||||
|
}
|
||||||
|
expect class B4<T : Any>() {
|
||||||
|
val property: T
|
||||||
|
fun function(value: T): T
|
||||||
|
|
||||||
|
expect class Nested<T : Any>() {
|
||||||
|
val property: T
|
||||||
|
fun function(value: T): T
|
||||||
|
}
|
||||||
|
|
||||||
|
expect inner class Inner() {
|
||||||
|
val property: T
|
||||||
|
fun function(value: T): T
|
||||||
|
}
|
||||||
|
}
|
||||||
|
expect class C5<T : CharSequence>() {
|
||||||
|
val property: T
|
||||||
|
fun function(value: T): T
|
||||||
|
|
||||||
|
expect class Nested<T : CharSequence>() {
|
||||||
|
val property: T
|
||||||
|
fun function(value: T): T
|
||||||
|
}
|
||||||
|
|
||||||
|
expect inner class Inner() {
|
||||||
|
val property: T
|
||||||
|
fun function(value: T): T
|
||||||
|
}
|
||||||
|
}
|
||||||
|
expect class D6<T : String>() {
|
||||||
|
val property: T
|
||||||
|
fun function(value: T): T
|
||||||
|
|
||||||
|
expect class Nested<T : String>() {
|
||||||
|
val property: T
|
||||||
|
fun function(value: T): T
|
||||||
|
}
|
||||||
|
|
||||||
|
expect inner class Inner() {
|
||||||
|
val property: T
|
||||||
|
fun function(value: T): T
|
||||||
|
}
|
||||||
|
}
|
||||||
|
expect class E7<String>() {
|
||||||
|
val property: String
|
||||||
|
fun function(value: String): String
|
||||||
|
|
||||||
|
expect class Nested<String>() {
|
||||||
|
val property: String
|
||||||
|
fun function(value: String): String
|
||||||
|
}
|
||||||
|
|
||||||
|
expect inner class Inner() {
|
||||||
|
val property: String
|
||||||
|
fun function(value: String): String
|
||||||
|
}
|
||||||
|
}
|
||||||
|
expect class F1<T>() {
|
||||||
|
val property: T
|
||||||
|
fun function(value: T): T
|
||||||
|
|
||||||
|
expect class Nested<T>() {
|
||||||
|
val property: T
|
||||||
|
fun function(value: T): T
|
||||||
|
}
|
||||||
|
|
||||||
|
expect inner class Inner() {
|
||||||
|
val property: T
|
||||||
|
fun function(value: T): T
|
||||||
|
}
|
||||||
|
}
|
||||||
|
expect class G1<T, R>() {
|
||||||
|
val property1: T
|
||||||
|
val property2: R
|
||||||
|
fun function(value: T): R
|
||||||
|
|
||||||
|
expect class Nested<T, R>() {
|
||||||
|
val property1: T
|
||||||
|
val property2: R
|
||||||
|
fun function(value: T): R
|
||||||
|
}
|
||||||
|
|
||||||
|
expect inner class Inner() {
|
||||||
|
val property1: T
|
||||||
|
val property2: R
|
||||||
|
fun function(value: T): R
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
expect class H1<T>() {
|
||||||
|
val dependentProperty: T
|
||||||
|
fun dependentFunction(value: T): T
|
||||||
|
|
||||||
|
val T.dependentExtensionProperty: T
|
||||||
|
fun T.dependentExtensionFunction(): T
|
||||||
|
|
||||||
|
fun <T> independentFunction(): T
|
||||||
|
|
||||||
|
val <T> T.independentExtensionProperty: T
|
||||||
|
fun <T> T.independentExtensionFunction(): T
|
||||||
|
}
|
||||||
|
expect class H2<T>() {
|
||||||
|
val dependentProperty: T
|
||||||
|
fun dependentFunction(value: T): T
|
||||||
|
|
||||||
|
val T.dependentExtensionProperty: T
|
||||||
|
fun T.dependentExtensionFunction(): T
|
||||||
|
}
|
||||||
|
|
||||||
|
expect class I<T : I<T>>() {
|
||||||
|
val property: T
|
||||||
|
fun function(value: T): T
|
||||||
|
}
|
||||||
Vendored
+636
@@ -0,0 +1,636 @@
|
|||||||
|
class A1<T> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
actual class A2<T> actual constructor() {
|
||||||
|
actual val property: T get() = TODO()
|
||||||
|
actual fun function(value: T): T = value
|
||||||
|
|
||||||
|
actual class Nested<T> actual constructor() {
|
||||||
|
actual val property: T get() = TODO()
|
||||||
|
actual fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
actual inner class Inner actual constructor() {
|
||||||
|
actual val property: T get() = TODO()
|
||||||
|
actual fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class A3<T> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class A4<T> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class A5<T> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class A6<T> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class A7<T> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class B1<T : Any> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T : Any> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class B2<T : Any> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T : Any> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class B3<T : Any> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T : Any> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
actual class B4<T : Any> actual constructor() {
|
||||||
|
actual val property: T get() = TODO()
|
||||||
|
actual fun function(value: T): T = value
|
||||||
|
|
||||||
|
actual class Nested<T : Any> actual constructor() {
|
||||||
|
actual val property: T get() = TODO()
|
||||||
|
actual fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
actual inner class Inner actual constructor() {
|
||||||
|
actual val property: T get() = TODO()
|
||||||
|
actual fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class B5<T : Any> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T : Any> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class B6<T : Any> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T : Any> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class B7<T : Any> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T : Any> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class C1<T : CharSequence> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T : CharSequence> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class C2<T : CharSequence> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T : CharSequence> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class C3<T : CharSequence> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T : CharSequence> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class C4<T : CharSequence> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T : CharSequence> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
actual class C5<T : CharSequence> actual constructor() {
|
||||||
|
actual val property: T get() = TODO()
|
||||||
|
actual fun function(value: T): T = value
|
||||||
|
|
||||||
|
actual class Nested<T : CharSequence> actual constructor() {
|
||||||
|
actual val property: T get() = TODO()
|
||||||
|
actual fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
actual inner class Inner actual constructor() {
|
||||||
|
actual val property: T get() = TODO()
|
||||||
|
actual fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class C6<T : CharSequence> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T : CharSequence> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class C7<T : CharSequence> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T : CharSequence> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class D1<T : String> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T : String> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class D2<T : String> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T : String> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class D3<T : String> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T : String> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class D4<T : String> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T : String> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class D5<T : String> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T : String> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
actual class D6<T : String> actual constructor() {
|
||||||
|
actual val property: T get() = TODO()
|
||||||
|
actual fun function(value: T): T = value
|
||||||
|
|
||||||
|
actual class Nested<T : String> actual constructor() {
|
||||||
|
actual val property: T get() = TODO()
|
||||||
|
actual fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
actual inner class Inner actual constructor() {
|
||||||
|
actual val property: T get() = TODO()
|
||||||
|
actual fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class D7<T : String> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T : String> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class E1<String> {
|
||||||
|
val property: String get() = TODO()
|
||||||
|
fun function(value: String): String = value
|
||||||
|
|
||||||
|
class Nested<String> {
|
||||||
|
val property: String get() = TODO()
|
||||||
|
fun function(value: String): String = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: String get() = TODO()
|
||||||
|
fun function(value: String): String = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class E2<String> {
|
||||||
|
val property: String get() = TODO()
|
||||||
|
fun function(value: String): String = value
|
||||||
|
|
||||||
|
class Nested<String> {
|
||||||
|
val property: String get() = TODO()
|
||||||
|
fun function(value: String): String = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: String get() = TODO()
|
||||||
|
fun function(value: String): String = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class E3<String> {
|
||||||
|
val property: String get() = TODO()
|
||||||
|
fun function(value: String): String = value
|
||||||
|
|
||||||
|
class Nested<String> {
|
||||||
|
val property: String get() = TODO()
|
||||||
|
fun function(value: String): String = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: String get() = TODO()
|
||||||
|
fun function(value: String): String = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class E4<String> {
|
||||||
|
val property: String get() = TODO()
|
||||||
|
fun function(value: String): String = value
|
||||||
|
|
||||||
|
class Nested<String> {
|
||||||
|
val property: String get() = TODO()
|
||||||
|
fun function(value: String): String = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: String get() = TODO()
|
||||||
|
fun function(value: String): String = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class E5<String> {
|
||||||
|
val property: String get() = TODO()
|
||||||
|
fun function(value: String): String = value
|
||||||
|
|
||||||
|
class Nested<String> {
|
||||||
|
val property: String get() = TODO()
|
||||||
|
fun function(value: String): String = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: String get() = TODO()
|
||||||
|
fun function(value: String): String = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class E6<String> {
|
||||||
|
val property: String get() = TODO()
|
||||||
|
fun function(value: String): String = value
|
||||||
|
|
||||||
|
class Nested<String> {
|
||||||
|
val property: String get() = TODO()
|
||||||
|
fun function(value: String): String = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: String get() = TODO()
|
||||||
|
fun function(value: String): String = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
actual class E7<String> actual constructor() {
|
||||||
|
actual val property: String get() = TODO()
|
||||||
|
actual fun function(value: String): String = value
|
||||||
|
|
||||||
|
actual class Nested<String> actual constructor() {
|
||||||
|
actual val property: String get() = TODO()
|
||||||
|
actual fun function(value: String): String = value
|
||||||
|
}
|
||||||
|
|
||||||
|
actual inner class Inner actual constructor() {
|
||||||
|
actual val property: String get() = TODO()
|
||||||
|
actual fun function(value: String): String = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
actual class F1<T> actual constructor() {
|
||||||
|
actual val property: T get() = TODO()
|
||||||
|
actual fun function(value: T): T = value
|
||||||
|
|
||||||
|
actual class Nested<T> actual constructor() {
|
||||||
|
actual val property: T get() = TODO()
|
||||||
|
actual fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
actual inner class Inner actual constructor() {
|
||||||
|
actual val property: T get() = TODO()
|
||||||
|
actual fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class F2<T> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class F3<T> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
actual class G1<T, R> actual constructor() {
|
||||||
|
actual val property1: T get() = TODO()
|
||||||
|
actual val property2: R get() = TODO()
|
||||||
|
actual fun function(value: T): R = TODO()
|
||||||
|
|
||||||
|
actual class Nested<T, R> actual constructor() {
|
||||||
|
actual val property1: T get() = TODO()
|
||||||
|
actual val property2: R get() = TODO()
|
||||||
|
actual fun function(value: T): R = TODO()
|
||||||
|
}
|
||||||
|
|
||||||
|
actual inner class Inner actual constructor() {
|
||||||
|
actual val property1: T get() = TODO()
|
||||||
|
actual val property2: R get() = TODO()
|
||||||
|
actual fun function(value: T): R = TODO()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class G2<T, R> {
|
||||||
|
val property1: T get() = TODO()
|
||||||
|
val property2: R get() = TODO()
|
||||||
|
fun function(value: T): R = TODO()
|
||||||
|
|
||||||
|
class Nested<T, R> {
|
||||||
|
val property1: T get() = TODO()
|
||||||
|
val property2: R get() = TODO()
|
||||||
|
fun function(value: T): R = TODO()
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property1: T get() = TODO()
|
||||||
|
val property2: R get() = TODO()
|
||||||
|
fun function(value: T): R = TODO()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class G3<T, R> {
|
||||||
|
val property1: T get() = TODO()
|
||||||
|
val property2: R get() = TODO()
|
||||||
|
fun function(value: T): R = TODO()
|
||||||
|
|
||||||
|
class Nested<T, R> {
|
||||||
|
val property1: T get() = TODO()
|
||||||
|
val property2: R get() = TODO()
|
||||||
|
fun function(value: T): R = TODO()
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property1: T get() = TODO()
|
||||||
|
val property2: R get() = TODO()
|
||||||
|
fun function(value: T): R = TODO()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class G4<T, R> {
|
||||||
|
val property1: T get() = TODO()
|
||||||
|
val property2: R get() = TODO()
|
||||||
|
fun function(value: T): R = TODO()
|
||||||
|
|
||||||
|
class Nested<T, R> {
|
||||||
|
val property1: T get() = TODO()
|
||||||
|
val property2: R get() = TODO()
|
||||||
|
fun function(value: T): R = TODO()
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property1: T get() = TODO()
|
||||||
|
val property2: R get() = TODO()
|
||||||
|
fun function(value: T): R = TODO()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
actual class H1<T> actual constructor() {
|
||||||
|
actual val dependentProperty: T get() = TODO()
|
||||||
|
actual fun dependentFunction(value: T): T = value
|
||||||
|
|
||||||
|
actual val T.dependentExtensionProperty: T get() = this
|
||||||
|
actual fun T.dependentExtensionFunction(): T = this
|
||||||
|
|
||||||
|
actual fun <T> independentFunction(): T = TODO()
|
||||||
|
|
||||||
|
actual val <T> T.independentExtensionProperty: T get() = this
|
||||||
|
actual fun <T> T.independentExtensionFunction(): T = this
|
||||||
|
}
|
||||||
|
actual class H2<T> actual constructor() {
|
||||||
|
actual val dependentProperty: T get() = TODO()
|
||||||
|
actual fun dependentFunction(value: T): T = value
|
||||||
|
|
||||||
|
actual val T.dependentExtensionProperty: T get() = this
|
||||||
|
actual fun T.dependentExtensionFunction(): T = this
|
||||||
|
|
||||||
|
fun <T> independentFunction(): T = TODO()
|
||||||
|
|
||||||
|
val <T> T.independentExtensionProperty: T get() = this
|
||||||
|
fun <T> T.independentExtensionFunction(): T = this
|
||||||
|
}
|
||||||
|
|
||||||
|
actual class I<T : I<T>> actual constructor() {
|
||||||
|
actual val property: T get() = TODO()
|
||||||
|
actual fun function(value: T): T = value
|
||||||
|
}
|
||||||
Vendored
+636
@@ -0,0 +1,636 @@
|
|||||||
|
class A1 {
|
||||||
|
val property: Any get() = TODO()
|
||||||
|
fun function(value: Any): Any = value
|
||||||
|
|
||||||
|
class Nested {
|
||||||
|
val property: Any get() = TODO()
|
||||||
|
fun function(value: Any): Any = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: Any get() = TODO()
|
||||||
|
fun function(value: Any): Any = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
actual class A2<T : Any?> actual constructor() {
|
||||||
|
actual val property: T get() = TODO()
|
||||||
|
actual fun function(value: T): T = value
|
||||||
|
|
||||||
|
actual class Nested<T : Any?> actual constructor() {
|
||||||
|
actual val property: T get() = TODO()
|
||||||
|
actual fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
actual inner class Inner actual constructor() {
|
||||||
|
actual val property: T get() = TODO()
|
||||||
|
actual fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class A3<R : Any?> {
|
||||||
|
val property: R get() = TODO()
|
||||||
|
fun function(value: R): R = value
|
||||||
|
|
||||||
|
class Nested<R : Any?> {
|
||||||
|
val property: R get() = TODO()
|
||||||
|
fun function(value: R): R = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: R get() = TODO()
|
||||||
|
fun function(value: R): R = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class A4<T : Any> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T : Any> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class A5<T : CharSequence> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T : CharSequence> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class A6<T : String> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T : String> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class A7<String> {
|
||||||
|
val property: String get() = TODO()
|
||||||
|
fun function(value: String): String = value
|
||||||
|
|
||||||
|
class Nested<String> {
|
||||||
|
val property: String get() = TODO()
|
||||||
|
fun function(value: String): String = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: String get() = TODO()
|
||||||
|
fun function(value: String): String = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class B1 {
|
||||||
|
val property: Any get() = TODO()
|
||||||
|
fun function(value: Any): Any = value
|
||||||
|
|
||||||
|
class Nested {
|
||||||
|
val property: Any get() = TODO()
|
||||||
|
fun function(value: Any): Any = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: Any get() = TODO()
|
||||||
|
fun function(value: Any): Any = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class B2<T : Any?> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T : Any?> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class B3<R : Any?> {
|
||||||
|
val property: R get() = TODO()
|
||||||
|
fun function(value: R): R = value
|
||||||
|
|
||||||
|
class Nested<R : Any?> {
|
||||||
|
val property: R get() = TODO()
|
||||||
|
fun function(value: R): R = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: R get() = TODO()
|
||||||
|
fun function(value: R): R = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
actual class B4<T : Any> actual constructor() {
|
||||||
|
actual val property: T get() = TODO()
|
||||||
|
actual fun function(value: T): T = value
|
||||||
|
|
||||||
|
actual class Nested<T : Any> actual constructor() {
|
||||||
|
actual val property: T get() = TODO()
|
||||||
|
actual fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
actual inner class Inner actual constructor() {
|
||||||
|
actual val property: T get() = TODO()
|
||||||
|
actual fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class B5<T : CharSequence> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T : CharSequence> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class B6<T : String> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T : String> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class B7<String> {
|
||||||
|
val property: String get() = TODO()
|
||||||
|
fun function(value: String): String = value
|
||||||
|
|
||||||
|
class Nested<String> {
|
||||||
|
val property: String get() = TODO()
|
||||||
|
fun function(value: String): String = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: String get() = TODO()
|
||||||
|
fun function(value: String): String = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class C1 {
|
||||||
|
val property: Any get() = TODO()
|
||||||
|
fun function(value: Any): Any = value
|
||||||
|
|
||||||
|
class Nested {
|
||||||
|
val property: Any get() = TODO()
|
||||||
|
fun function(value: Any): Any = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: Any get() = TODO()
|
||||||
|
fun function(value: Any): Any = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class C2<T : Any?> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T : Any?>{
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class C3<R : Any?> {
|
||||||
|
val property: R get() = TODO()
|
||||||
|
fun function(value: R): R = value
|
||||||
|
|
||||||
|
class Nested<R : Any?> {
|
||||||
|
val property: R get() = TODO()
|
||||||
|
fun function(value: R): R = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: R get() = TODO()
|
||||||
|
fun function(value: R): R = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class C4<T : Any> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T : Any> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
actual class C5<T : CharSequence> actual constructor() {
|
||||||
|
actual val property: T get() = TODO()
|
||||||
|
actual fun function(value: T): T = value
|
||||||
|
|
||||||
|
actual class Nested<T : CharSequence> actual constructor() {
|
||||||
|
actual val property: T get() = TODO()
|
||||||
|
actual fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
actual inner class Inner actual constructor() {
|
||||||
|
actual val property: T get() = TODO()
|
||||||
|
actual fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class C6<T : String> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T : String> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class C7<String> {
|
||||||
|
val property: String get() = TODO()
|
||||||
|
fun function(value: String): String = value
|
||||||
|
|
||||||
|
class Nested<String> {
|
||||||
|
val property: String get() = TODO()
|
||||||
|
fun function(value: String): String = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: String get() = TODO()
|
||||||
|
fun function(value: String): String = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class D1 {
|
||||||
|
val property: Any get() = TODO()
|
||||||
|
fun function(value: Any): Any = value
|
||||||
|
|
||||||
|
class Nested {
|
||||||
|
val property: Any get() = TODO()
|
||||||
|
fun function(value: Any): Any = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: Any get() = TODO()
|
||||||
|
fun function(value: Any): Any = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class D2<T : Any?> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T : Any?> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class D3<R : Any?> {
|
||||||
|
val property: R get() = TODO()
|
||||||
|
fun function(value: R): R = value
|
||||||
|
|
||||||
|
class Nested<R : Any?> {
|
||||||
|
val property: R get() = TODO()
|
||||||
|
fun function(value: R): R = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: R get() = TODO()
|
||||||
|
fun function(value: R): R = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class D4<T : Any> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T : Any> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class D5<T : CharSequence> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T : CharSequence> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
actual class D6<T : String> actual constructor() {
|
||||||
|
actual val property: T get() = TODO()
|
||||||
|
actual fun function(value: T): T = value
|
||||||
|
|
||||||
|
actual class Nested<T : String> actual constructor() {
|
||||||
|
actual val property: T get() = TODO()
|
||||||
|
actual fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
actual inner class Inner actual constructor() {
|
||||||
|
actual val property: T get() = TODO()
|
||||||
|
actual fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class D7<String> {
|
||||||
|
val property: String get() = TODO()
|
||||||
|
fun function(value: String): String = value
|
||||||
|
|
||||||
|
class Nested<String> {
|
||||||
|
val property: String get() = TODO()
|
||||||
|
fun function(value: String): String = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: String get() = TODO()
|
||||||
|
fun function(value: String): String = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class E1 {
|
||||||
|
val property: Any get() = TODO()
|
||||||
|
fun function(value: Any): Any = value
|
||||||
|
|
||||||
|
class Nested {
|
||||||
|
val property: Any get() = TODO()
|
||||||
|
fun function(value: Any): Any = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: Any get() = TODO()
|
||||||
|
fun function(value: Any): Any = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class E2<T : Any?> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T : Any?> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class E3<R : Any?> {
|
||||||
|
val property: R get() = TODO()
|
||||||
|
fun function(value: R): R = value
|
||||||
|
|
||||||
|
class Nested<R : Any?> {
|
||||||
|
val property: R get() = TODO()
|
||||||
|
fun function(value: R): R = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: R get() = TODO()
|
||||||
|
fun function(value: R): R = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class E4<T : Any> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T : Any> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class E5<T : CharSequence> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T : CharSequence> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class E6<T : String> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T : String> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
actual class E7<String> actual constructor() {
|
||||||
|
actual val property: String get() = TODO()
|
||||||
|
actual fun function(value: String): String = value
|
||||||
|
|
||||||
|
actual class Nested<String> actual constructor() {
|
||||||
|
actual val property: String get() = TODO()
|
||||||
|
actual fun function(value: String): String = value
|
||||||
|
}
|
||||||
|
|
||||||
|
actual inner class Inner actual constructor() {
|
||||||
|
actual val property: String get() = TODO()
|
||||||
|
actual fun function(value: String): String = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
actual class F1<T> actual constructor() {
|
||||||
|
actual val property: T get() = TODO()
|
||||||
|
actual fun function(value: T): T = value
|
||||||
|
|
||||||
|
actual class Nested<T> actual constructor() {
|
||||||
|
actual val property: T get() = TODO()
|
||||||
|
actual fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
actual inner class Inner actual constructor() {
|
||||||
|
actual val property: T get() = TODO()
|
||||||
|
actual fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class F2<in T> {
|
||||||
|
val property: String get() = TODO()
|
||||||
|
fun function(value: T): Any = TODO()
|
||||||
|
|
||||||
|
class Nested<in T> {
|
||||||
|
val property: String get() = TODO()
|
||||||
|
fun function(value: T): Any = TODO()
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: String get() = TODO()
|
||||||
|
fun function(value: T): Any = TODO()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class F3<out T> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: Any): T = TODO()
|
||||||
|
|
||||||
|
class Nested<out T> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: Any): T = TODO()
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: Any): T = TODO()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
actual class G1<T, R> actual constructor() {
|
||||||
|
actual val property1: T get() = TODO()
|
||||||
|
actual val property2: R get() = TODO()
|
||||||
|
actual fun function(value: T): R = TODO()
|
||||||
|
|
||||||
|
actual class Nested<T, R> actual constructor() {
|
||||||
|
actual val property1: T get() = TODO()
|
||||||
|
actual val property2: R get() = TODO()
|
||||||
|
actual fun function(value: T): R = TODO()
|
||||||
|
}
|
||||||
|
|
||||||
|
actual inner class Inner actual constructor() {
|
||||||
|
actual val property1: T get() = TODO()
|
||||||
|
actual val property2: R get() = TODO()
|
||||||
|
actual fun function(value: T): R = TODO()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class G2<T> {
|
||||||
|
val property1: T get() = TODO()
|
||||||
|
val property2: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T> {
|
||||||
|
val property1: T get() = TODO()
|
||||||
|
val property2: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property1: T get() = TODO()
|
||||||
|
val property2: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class G3<R> {
|
||||||
|
val property1: R get() = TODO()
|
||||||
|
val property2: R get() = TODO()
|
||||||
|
fun function(value: R): R = value
|
||||||
|
|
||||||
|
class Nested<R> {
|
||||||
|
val property1: R get() = TODO()
|
||||||
|
val property2: R get() = TODO()
|
||||||
|
fun function(value: R): R = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property1: R get() = TODO()
|
||||||
|
val property2: R get() = TODO()
|
||||||
|
fun function(value: R): R = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class G4<R, T> {
|
||||||
|
val property1: T get() = TODO()
|
||||||
|
val property2: R get() = TODO()
|
||||||
|
fun function(value: T): R = TODO()
|
||||||
|
|
||||||
|
class Nested<R, T> {
|
||||||
|
val property1: T get() = TODO()
|
||||||
|
val property2: R get() = TODO()
|
||||||
|
fun function(value: T): R = TODO()
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property1: T get() = TODO()
|
||||||
|
val property2: R get() = TODO()
|
||||||
|
fun function(value: T): R = TODO()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
actual class H1<T> actual constructor() {
|
||||||
|
actual val dependentProperty: T get() = TODO()
|
||||||
|
actual fun dependentFunction(value: T): T = value
|
||||||
|
|
||||||
|
actual val T.dependentExtensionProperty: T get() = this
|
||||||
|
actual fun T.dependentExtensionFunction(): T = this
|
||||||
|
|
||||||
|
actual fun <T> independentFunction(): T = TODO()
|
||||||
|
|
||||||
|
actual val <T> T.independentExtensionProperty: T get() = this
|
||||||
|
actual fun <T> T.independentExtensionFunction(): T = this
|
||||||
|
}
|
||||||
|
actual class H2<T> actual constructor() {
|
||||||
|
actual val dependentProperty: T get() = TODO()
|
||||||
|
actual fun dependentFunction(value: T): T = value
|
||||||
|
|
||||||
|
actual val T.dependentExtensionProperty: T get() = this
|
||||||
|
actual fun T.dependentExtensionFunction(): T = this
|
||||||
|
|
||||||
|
fun independentFunction(): T = TODO()
|
||||||
|
|
||||||
|
val T.independentExtensionProperty: T get() = this
|
||||||
|
fun T.independentExtensionFunction(): T = this
|
||||||
|
}
|
||||||
|
|
||||||
|
actual class I<T : I<T>> actual constructor() {
|
||||||
|
actual val property: T get() = TODO()
|
||||||
|
actual fun function(value: T): T = value
|
||||||
|
}
|
||||||
Vendored
+636
@@ -0,0 +1,636 @@
|
|||||||
|
class A1<T> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class A2<T> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class A3<T> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class A4<T> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class A5<T> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class A6<T> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class A7<T> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class B1<T : Any> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T : Any> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class B2<T : Any> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T : Any> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class B3<T : Any> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T : Any> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class B4<T : Any> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T : Any> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class B5<T : Any> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T : Any> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class B6<T : Any> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T : Any> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class B7<T : Any> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T : Any> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class C1<T : CharSequence> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T : CharSequence> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class C2<T : CharSequence> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T : CharSequence> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class C3<T : CharSequence> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T : CharSequence> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class C4<T : CharSequence> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T : CharSequence> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class C5<T : CharSequence> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T : CharSequence> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class C6<T : CharSequence> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T : CharSequence> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class C7<T : CharSequence> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T : CharSequence> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class D1<T : String> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T : String> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class D2<T : String> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T : String> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class D3<T : String> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T : String> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class D4<T : String> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T : String> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class D5<T : String> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T : String> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class D6<T : String> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T : String> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class D7<T : String> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T : String> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class E1<String> {
|
||||||
|
val property: String get() = TODO()
|
||||||
|
fun function(value: String): String = value
|
||||||
|
|
||||||
|
class Nested<String> {
|
||||||
|
val property: String get() = TODO()
|
||||||
|
fun function(value: String): String = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: String get() = TODO()
|
||||||
|
fun function(value: String): String = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class E2<String> {
|
||||||
|
val property: String get() = TODO()
|
||||||
|
fun function(value: String): String = value
|
||||||
|
|
||||||
|
class Nested<String> {
|
||||||
|
val property: String get() = TODO()
|
||||||
|
fun function(value: String): String = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: String get() = TODO()
|
||||||
|
fun function(value: String): String = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class E3<String> {
|
||||||
|
val property: String get() = TODO()
|
||||||
|
fun function(value: String): String = value
|
||||||
|
|
||||||
|
class Nested<String> {
|
||||||
|
val property: String get() = TODO()
|
||||||
|
fun function(value: String): String = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: String get() = TODO()
|
||||||
|
fun function(value: String): String = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class E4<String> {
|
||||||
|
val property: String get() = TODO()
|
||||||
|
fun function(value: String): String = value
|
||||||
|
|
||||||
|
class Nested<String> {
|
||||||
|
val property: String get() = TODO()
|
||||||
|
fun function(value: String): String = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: String get() = TODO()
|
||||||
|
fun function(value: String): String = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class E5<String> {
|
||||||
|
val property: String get() = TODO()
|
||||||
|
fun function(value: String): String = value
|
||||||
|
|
||||||
|
class Nested<String> {
|
||||||
|
val property: String get() = TODO()
|
||||||
|
fun function(value: String): String = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: String get() = TODO()
|
||||||
|
fun function(value: String): String = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class E6<String> {
|
||||||
|
val property: String get() = TODO()
|
||||||
|
fun function(value: String): String = value
|
||||||
|
|
||||||
|
class Nested<String> {
|
||||||
|
val property: String get() = TODO()
|
||||||
|
fun function(value: String): String = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: String get() = TODO()
|
||||||
|
fun function(value: String): String = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class E7<String> {
|
||||||
|
val property: String get() = TODO()
|
||||||
|
fun function(value: String): String = value
|
||||||
|
|
||||||
|
class Nested<String> {
|
||||||
|
val property: String get() = TODO()
|
||||||
|
fun function(value: String): String = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: String get() = TODO()
|
||||||
|
fun function(value: String): String = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class F1<T> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class F2<T> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class F3<T> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class G1<T, R> {
|
||||||
|
val property1: T get() = TODO()
|
||||||
|
val property2: R get() = TODO()
|
||||||
|
fun function(value: T): R = TODO()
|
||||||
|
|
||||||
|
class Nested<T, R> {
|
||||||
|
val property1: T get() = TODO()
|
||||||
|
val property2: R get() = TODO()
|
||||||
|
fun function(value: T): R = TODO()
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property1: T get() = TODO()
|
||||||
|
val property2: R get() = TODO()
|
||||||
|
fun function(value: T): R = TODO()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class G2<T, R> {
|
||||||
|
val property1: T get() = TODO()
|
||||||
|
val property2: R get() = TODO()
|
||||||
|
fun function(value: T): R = TODO()
|
||||||
|
|
||||||
|
class Nested<T, R> {
|
||||||
|
val property1: T get() = TODO()
|
||||||
|
val property2: R get() = TODO()
|
||||||
|
fun function(value: T): R = TODO()
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property1: T get() = TODO()
|
||||||
|
val property2: R get() = TODO()
|
||||||
|
fun function(value: T): R = TODO()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class G3<T, R> {
|
||||||
|
val property1: T get() = TODO()
|
||||||
|
val property2: R get() = TODO()
|
||||||
|
fun function(value: T): R = TODO()
|
||||||
|
|
||||||
|
class Nested<T, R> {
|
||||||
|
val property1: T get() = TODO()
|
||||||
|
val property2: R get() = TODO()
|
||||||
|
fun function(value: T): R = TODO()
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property1: T get() = TODO()
|
||||||
|
val property2: R get() = TODO()
|
||||||
|
fun function(value: T): R = TODO()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class G4<T, R> {
|
||||||
|
val property1: T get() = TODO()
|
||||||
|
val property2: R get() = TODO()
|
||||||
|
fun function(value: T): R = TODO()
|
||||||
|
|
||||||
|
class Nested<T, R> {
|
||||||
|
val property1: T get() = TODO()
|
||||||
|
val property2: R get() = TODO()
|
||||||
|
fun function(value: T): R = TODO()
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property1: T get() = TODO()
|
||||||
|
val property2: R get() = TODO()
|
||||||
|
fun function(value: T): R = TODO()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class H1<T> {
|
||||||
|
val dependentProperty: T get() = TODO()
|
||||||
|
fun dependentFunction(value: T): T = value
|
||||||
|
|
||||||
|
val T.dependentExtensionProperty: T get() = this
|
||||||
|
fun T.dependentExtensionFunction(): T = this
|
||||||
|
|
||||||
|
fun <T> independentFunction(): T = TODO()
|
||||||
|
|
||||||
|
val <T> T.independentExtensionProperty: T get() = this
|
||||||
|
fun <T> T.independentExtensionFunction(): T = this
|
||||||
|
}
|
||||||
|
class H2<T> {
|
||||||
|
val dependentProperty: T get() = TODO()
|
||||||
|
fun dependentFunction(value: T): T = value
|
||||||
|
|
||||||
|
val T.dependentExtensionProperty: T get() = this
|
||||||
|
fun T.dependentExtensionFunction(): T = this
|
||||||
|
|
||||||
|
fun <T> independentFunction(): T = TODO()
|
||||||
|
|
||||||
|
val <T> T.independentExtensionProperty: T get() = this
|
||||||
|
fun <T> T.independentExtensionFunction(): T = this
|
||||||
|
}
|
||||||
|
|
||||||
|
class I<T : I<T>> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
Vendored
+636
@@ -0,0 +1,636 @@
|
|||||||
|
class A1 {
|
||||||
|
val property: Any get() = TODO()
|
||||||
|
fun function(value: Any): Any = value
|
||||||
|
|
||||||
|
class Nested {
|
||||||
|
val property: Any get() = TODO()
|
||||||
|
fun function(value: Any): Any = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: Any get() = TODO()
|
||||||
|
fun function(value: Any): Any = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class A2<T : Any?> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T : Any?> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class A3<R : Any?> {
|
||||||
|
val property: R get() = TODO()
|
||||||
|
fun function(value: R): R = value
|
||||||
|
|
||||||
|
class Nested<R : Any?> {
|
||||||
|
val property: R get() = TODO()
|
||||||
|
fun function(value: R): R = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: R get() = TODO()
|
||||||
|
fun function(value: R): R = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class A4<T : Any> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T : Any> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class A5<T : CharSequence> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T : CharSequence> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class A6<T : String> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T : String> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class A7<String> {
|
||||||
|
val property: String get() = TODO()
|
||||||
|
fun function(value: String): String = value
|
||||||
|
|
||||||
|
class Nested<String> {
|
||||||
|
val property: String get() = TODO()
|
||||||
|
fun function(value: String): String = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: String get() = TODO()
|
||||||
|
fun function(value: String): String = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class B1 {
|
||||||
|
val property: Any get() = TODO()
|
||||||
|
fun function(value: Any): Any = value
|
||||||
|
|
||||||
|
class Nested {
|
||||||
|
val property: Any get() = TODO()
|
||||||
|
fun function(value: Any): Any = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: Any get() = TODO()
|
||||||
|
fun function(value: Any): Any = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class B2<T : Any?> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T : Any?> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class B3<R : Any?> {
|
||||||
|
val property: R get() = TODO()
|
||||||
|
fun function(value: R): R = value
|
||||||
|
|
||||||
|
class Nested<R : Any?> {
|
||||||
|
val property: R get() = TODO()
|
||||||
|
fun function(value: R): R = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: R get() = TODO()
|
||||||
|
fun function(value: R): R = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class B4<T : Any> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T : Any> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class B5<T : CharSequence> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T : CharSequence> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class B6<T : String> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T : String> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class B7<String> {
|
||||||
|
val property: String get() = TODO()
|
||||||
|
fun function(value: String): String = value
|
||||||
|
|
||||||
|
class Nested<String> {
|
||||||
|
val property: String get() = TODO()
|
||||||
|
fun function(value: String): String = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: String get() = TODO()
|
||||||
|
fun function(value: String): String = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class C1 {
|
||||||
|
val property: Any get() = TODO()
|
||||||
|
fun function(value: Any): Any = value
|
||||||
|
|
||||||
|
class Nested {
|
||||||
|
val property: Any get() = TODO()
|
||||||
|
fun function(value: Any): Any = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: Any get() = TODO()
|
||||||
|
fun function(value: Any): Any = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class C2<T : Any?> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T : Any?>{
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class C3<R : Any?> {
|
||||||
|
val property: R get() = TODO()
|
||||||
|
fun function(value: R): R = value
|
||||||
|
|
||||||
|
class Nested<R : Any?> {
|
||||||
|
val property: R get() = TODO()
|
||||||
|
fun function(value: R): R = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: R get() = TODO()
|
||||||
|
fun function(value: R): R = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class C4<T : Any> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T : Any> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class C5<T : CharSequence> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T : CharSequence> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class C6<T : String> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T : String> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class C7<String> {
|
||||||
|
val property: String get() = TODO()
|
||||||
|
fun function(value: String): String = value
|
||||||
|
|
||||||
|
class Nested<String> {
|
||||||
|
val property: String get() = TODO()
|
||||||
|
fun function(value: String): String = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: String get() = TODO()
|
||||||
|
fun function(value: String): String = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class D1 {
|
||||||
|
val property: Any get() = TODO()
|
||||||
|
fun function(value: Any): Any = value
|
||||||
|
|
||||||
|
class Nested {
|
||||||
|
val property: Any get() = TODO()
|
||||||
|
fun function(value: Any): Any = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: Any get() = TODO()
|
||||||
|
fun function(value: Any): Any = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class D2<T : Any?> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T : Any?> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class D3<R : Any?> {
|
||||||
|
val property: R get() = TODO()
|
||||||
|
fun function(value: R): R = value
|
||||||
|
|
||||||
|
class Nested<R : Any?> {
|
||||||
|
val property: R get() = TODO()
|
||||||
|
fun function(value: R): R = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: R get() = TODO()
|
||||||
|
fun function(value: R): R = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class D4<T : Any> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T : Any> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class D5<T : CharSequence> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T : CharSequence> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class D6<T : String> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T : String> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class D7<String> {
|
||||||
|
val property: String get() = TODO()
|
||||||
|
fun function(value: String): String = value
|
||||||
|
|
||||||
|
class Nested<String> {
|
||||||
|
val property: String get() = TODO()
|
||||||
|
fun function(value: String): String = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: String get() = TODO()
|
||||||
|
fun function(value: String): String = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class E1 {
|
||||||
|
val property: Any get() = TODO()
|
||||||
|
fun function(value: Any): Any = value
|
||||||
|
|
||||||
|
class Nested {
|
||||||
|
val property: Any get() = TODO()
|
||||||
|
fun function(value: Any): Any = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: Any get() = TODO()
|
||||||
|
fun function(value: Any): Any = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class E2<T : Any?> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T : Any?> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class E3<R : Any?> {
|
||||||
|
val property: R get() = TODO()
|
||||||
|
fun function(value: R): R = value
|
||||||
|
|
||||||
|
class Nested<R : Any?> {
|
||||||
|
val property: R get() = TODO()
|
||||||
|
fun function(value: R): R = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: R get() = TODO()
|
||||||
|
fun function(value: R): R = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class E4<T : Any> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T : Any> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class E5<T : CharSequence> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T : CharSequence> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class E6<T : String> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T : String> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class E7<String> {
|
||||||
|
val property: String get() = TODO()
|
||||||
|
fun function(value: String): String = value
|
||||||
|
|
||||||
|
class Nested<String> {
|
||||||
|
val property: String get() = TODO()
|
||||||
|
fun function(value: String): String = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: String get() = TODO()
|
||||||
|
fun function(value: String): String = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class F1<T> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class F2<in T> {
|
||||||
|
val property: String get() = TODO()
|
||||||
|
fun function(value: T): Any = TODO()
|
||||||
|
|
||||||
|
class Nested<in T> {
|
||||||
|
val property: String get() = TODO()
|
||||||
|
fun function(value: T): Any = TODO()
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: String get() = TODO()
|
||||||
|
fun function(value: T): Any = TODO()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class F3<out T> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: Any): T = TODO()
|
||||||
|
|
||||||
|
class Nested<out T> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: Any): T = TODO()
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: Any): T = TODO()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class G1<T, R> {
|
||||||
|
val property1: T get() = TODO()
|
||||||
|
val property2: R get() = TODO()
|
||||||
|
fun function(value: T): R = TODO()
|
||||||
|
|
||||||
|
class Nested<T, R> {
|
||||||
|
val property1: T get() = TODO()
|
||||||
|
val property2: R get() = TODO()
|
||||||
|
fun function(value: T): R = TODO()
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property1: T get() = TODO()
|
||||||
|
val property2: R get() = TODO()
|
||||||
|
fun function(value: T): R = TODO()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class G2<T> {
|
||||||
|
val property1: T get() = TODO()
|
||||||
|
val property2: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
|
||||||
|
class Nested<T> {
|
||||||
|
val property1: T get() = TODO()
|
||||||
|
val property2: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property1: T get() = TODO()
|
||||||
|
val property2: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class G3<R> {
|
||||||
|
val property1: R get() = TODO()
|
||||||
|
val property2: R get() = TODO()
|
||||||
|
fun function(value: R): R = value
|
||||||
|
|
||||||
|
class Nested<R> {
|
||||||
|
val property1: R get() = TODO()
|
||||||
|
val property2: R get() = TODO()
|
||||||
|
fun function(value: R): R = value
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property1: R get() = TODO()
|
||||||
|
val property2: R get() = TODO()
|
||||||
|
fun function(value: R): R = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class G4<R, T> {
|
||||||
|
val property1: T get() = TODO()
|
||||||
|
val property2: R get() = TODO()
|
||||||
|
fun function(value: T): R = TODO()
|
||||||
|
|
||||||
|
class Nested<R, T> {
|
||||||
|
val property1: T get() = TODO()
|
||||||
|
val property2: R get() = TODO()
|
||||||
|
fun function(value: T): R = TODO()
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class Inner {
|
||||||
|
val property1: T get() = TODO()
|
||||||
|
val property2: R get() = TODO()
|
||||||
|
fun function(value: T): R = TODO()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class H1<T> {
|
||||||
|
val dependentProperty: T get() = TODO()
|
||||||
|
fun dependentFunction(value: T): T = value
|
||||||
|
|
||||||
|
val T.dependentExtensionProperty: T get() = this
|
||||||
|
fun T.dependentExtensionFunction(): T = this
|
||||||
|
|
||||||
|
fun <T> independentFunction(): T = TODO()
|
||||||
|
|
||||||
|
val <T> T.independentExtensionProperty: T get() = this
|
||||||
|
fun <T> T.independentExtensionFunction(): T = this
|
||||||
|
}
|
||||||
|
class H2<T> {
|
||||||
|
val dependentProperty: T get() = TODO()
|
||||||
|
fun dependentFunction(value: T): T = value
|
||||||
|
|
||||||
|
val T.dependentExtensionProperty: T get() = this
|
||||||
|
fun T.dependentExtensionFunction(): T = this
|
||||||
|
|
||||||
|
fun independentFunction(): T = TODO()
|
||||||
|
|
||||||
|
val T.independentExtensionProperty: T get() = this
|
||||||
|
fun T.independentExtensionFunction(): T = this
|
||||||
|
}
|
||||||
|
|
||||||
|
class I<T : I<T>> {
|
||||||
|
val property: T get() = TODO()
|
||||||
|
fun function(value: T): T = value
|
||||||
|
}
|
||||||
Vendored
+20
@@ -0,0 +1,20 @@
|
|||||||
|
expect public class A1()
|
||||||
|
expect protected class B1()
|
||||||
|
expect internal class C1()
|
||||||
|
|
||||||
|
expect public class E1
|
||||||
|
expect protected class E2
|
||||||
|
expect internal class E3
|
||||||
|
expect private class E4
|
||||||
|
|
||||||
|
expect protected class F1
|
||||||
|
expect private class F3
|
||||||
|
|
||||||
|
expect internal class G1
|
||||||
|
expect private class G2
|
||||||
|
|
||||||
|
expect private class H1
|
||||||
|
|
||||||
|
expect public class I1
|
||||||
|
expect public class I2
|
||||||
|
expect public class I3
|
||||||
+32
@@ -0,0 +1,32 @@
|
|||||||
|
actual public class A1 actual constructor()
|
||||||
|
public class A2
|
||||||
|
public class A3
|
||||||
|
public class A4
|
||||||
|
|
||||||
|
actual protected class B1 actual constructor()
|
||||||
|
protected class B2
|
||||||
|
protected class B3
|
||||||
|
|
||||||
|
actual internal class C1 actual constructor()
|
||||||
|
internal class C2
|
||||||
|
|
||||||
|
private class D1
|
||||||
|
|
||||||
|
actual public typealias E1 = A1
|
||||||
|
actual public typealias E2 = A1
|
||||||
|
actual public typealias E3 = A1
|
||||||
|
actual public typealias E4 = A1
|
||||||
|
|
||||||
|
actual protected typealias F1 = A1
|
||||||
|
protected typealias F2 = A1
|
||||||
|
actual protected typealias F3 = A1
|
||||||
|
|
||||||
|
actual internal typealias G1 = A1
|
||||||
|
actual internal typealias G2 = A1
|
||||||
|
|
||||||
|
actual private typealias H1 = A1
|
||||||
|
|
||||||
|
actual public typealias I1 = A1 // points to public
|
||||||
|
actual public typealias I2 = B1 // points to protected
|
||||||
|
actual public typealias I3 = C1 // points to internal
|
||||||
|
public typealias I4 = D1 // points to private
|
||||||
Vendored
+32
@@ -0,0 +1,32 @@
|
|||||||
|
actual public class A1 actual constructor()
|
||||||
|
protected class A2
|
||||||
|
internal class A3
|
||||||
|
private class A4
|
||||||
|
|
||||||
|
actual protected class B1 actual constructor()
|
||||||
|
internal class B2
|
||||||
|
private class B3
|
||||||
|
|
||||||
|
actual internal class C1 actual constructor()
|
||||||
|
private class C2
|
||||||
|
|
||||||
|
private class D1
|
||||||
|
|
||||||
|
actual public typealias E1 = A1
|
||||||
|
actual protected typealias E2 = A1
|
||||||
|
actual internal typealias E3 = A1
|
||||||
|
actual private typealias E4 = A1
|
||||||
|
|
||||||
|
actual protected typealias F1 = A1
|
||||||
|
internal typealias F2 = A1
|
||||||
|
actual private typealias F3 = A1
|
||||||
|
|
||||||
|
actual internal typealias G1 = A1
|
||||||
|
actual private typealias G2 = A1
|
||||||
|
|
||||||
|
actual private typealias H1 = A1
|
||||||
|
|
||||||
|
actual public typealias I1 = A1 // points to public
|
||||||
|
actual public typealias I2 = B1 // points to protected
|
||||||
|
actual public typealias I3 = C1 // points to internal
|
||||||
|
public typealias I4 = D1 // points to private
|
||||||
+32
@@ -0,0 +1,32 @@
|
|||||||
|
public class A1
|
||||||
|
public class A2
|
||||||
|
public class A3
|
||||||
|
public class A4
|
||||||
|
|
||||||
|
protected class B1
|
||||||
|
protected class B2
|
||||||
|
protected class B3
|
||||||
|
|
||||||
|
internal class C1
|
||||||
|
internal class C2
|
||||||
|
|
||||||
|
private class D1
|
||||||
|
|
||||||
|
public typealias E1 = A1
|
||||||
|
public typealias E2 = A1
|
||||||
|
public typealias E3 = A1
|
||||||
|
public typealias E4 = A1
|
||||||
|
|
||||||
|
protected typealias F1 = A1
|
||||||
|
protected typealias F2 = A1
|
||||||
|
protected typealias F3 = A1
|
||||||
|
|
||||||
|
internal typealias G1 = A1
|
||||||
|
internal typealias G2 = A1
|
||||||
|
|
||||||
|
private typealias H1 = A1
|
||||||
|
|
||||||
|
public typealias I1 = A1 // points to public
|
||||||
|
public typealias I2 = B1 // points to protected
|
||||||
|
public typealias I3 = C1 // points to internal
|
||||||
|
public typealias I4 = D1 // points to private
|
||||||
+32
@@ -0,0 +1,32 @@
|
|||||||
|
public class A1
|
||||||
|
protected class A2
|
||||||
|
internal class A3
|
||||||
|
private class A4
|
||||||
|
|
||||||
|
protected class B1
|
||||||
|
internal class B2
|
||||||
|
private class B3
|
||||||
|
|
||||||
|
internal class C1
|
||||||
|
private class C2
|
||||||
|
|
||||||
|
private class D1
|
||||||
|
|
||||||
|
public typealias E1 = A1
|
||||||
|
protected typealias E2 = A1
|
||||||
|
internal typealias E3 = A1
|
||||||
|
private typealias E4 = A1
|
||||||
|
|
||||||
|
protected typealias F1 = A1
|
||||||
|
internal typealias F2 = A1
|
||||||
|
private typealias F3 = A1
|
||||||
|
|
||||||
|
internal typealias G1 = A1
|
||||||
|
private typealias G2 = A1
|
||||||
|
|
||||||
|
private typealias H1 = A1
|
||||||
|
|
||||||
|
public typealias I1 = A1 // points to public
|
||||||
|
public typealias I2 = B1 // points to protected
|
||||||
|
public typealias I3 = C1 // points to internal
|
||||||
|
public typealias I4 = D1 // points to private
|
||||||
Vendored
+6
@@ -1,3 +1,6 @@
|
|||||||
|
expect annotation class CommonAnnotationForAnnotationClassesOnly(text: String) { val text: String }
|
||||||
|
expect annotation class CommonAnnotation(text: String) { val text: String }
|
||||||
|
|
||||||
expect var propertyWithoutBackingField: Double
|
expect var propertyWithoutBackingField: Double
|
||||||
expect val propertyWithBackingField: Double
|
expect val propertyWithBackingField: Double
|
||||||
expect val propertyWithDelegateField: Int
|
expect val propertyWithDelegateField: Int
|
||||||
@@ -5,3 +8,6 @@ expect val <T : CharSequence> T.propertyWithExtensionReceiver: Int
|
|||||||
|
|
||||||
expect fun function1(text: String): String
|
expect fun function1(text: String): String
|
||||||
expect fun <Q : Number> Q.function2(): Q
|
expect fun <Q : Number> Q.function2(): Q
|
||||||
|
|
||||||
|
expect class AnnotatedClass(value: String) { val value: String }
|
||||||
|
expect class AnnotatedTypeAlias
|
||||||
|
|||||||
+38
-15
@@ -1,27 +1,50 @@
|
|||||||
import kotlin.annotation.AnnotationTarget.*
|
import kotlin.annotation.AnnotationTarget.*
|
||||||
|
|
||||||
@Target(PROPERTY, PROPERTY_GETTER, PROPERTY_SETTER, FIELD, VALUE_PARAMETER)
|
@Target(ANNOTATION_CLASS)
|
||||||
annotation class Foo(val text: String)
|
actual annotation class CommonAnnotationForAnnotationClassesOnly actual constructor(actual val text: String)
|
||||||
|
|
||||||
@property:Foo("property")
|
@Target(PROPERTY, PROPERTY_GETTER, PROPERTY_SETTER, FIELD, VALUE_PARAMETER, TYPE_PARAMETER, FUNCTION, CLASS, CONSTRUCTOR, TYPEALIAS, TYPE)
|
||||||
@get:Foo("getter")
|
@JsAnnotationForAnnotationClassesOnly("annotation-class")
|
||||||
@set:Foo("setter")
|
@CommonAnnotationForAnnotationClassesOnly("annotation-class")
|
||||||
@setparam:Foo("parameter")
|
actual annotation class CommonAnnotation actual constructor(actual val text: String)
|
||||||
|
|
||||||
|
@Target(ANNOTATION_CLASS)
|
||||||
|
annotation class JsAnnotationForAnnotationClassesOnly(val text: String)
|
||||||
|
|
||||||
|
@Target(PROPERTY, PROPERTY_GETTER, PROPERTY_SETTER, FIELD, VALUE_PARAMETER, TYPE_PARAMETER, FUNCTION, CLASS, CONSTRUCTOR, TYPEALIAS, TYPE)
|
||||||
|
@JsAnnotationForAnnotationClassesOnly("annotation-class")
|
||||||
|
@CommonAnnotationForAnnotationClassesOnly("annotation-class")
|
||||||
|
annotation class JsAnnotation(val text: String)
|
||||||
|
|
||||||
|
@JsAnnotation("property")
|
||||||
|
@CommonAnnotation("property")
|
||||||
actual var propertyWithoutBackingField
|
actual var propertyWithoutBackingField
|
||||||
get() = 3.14
|
@JsAnnotation("getter") @CommonAnnotation("getter") get() = 3.14
|
||||||
set(value) = Unit
|
@JsAnnotation("setter") @CommonAnnotation("setter") set(@JsAnnotation("parameter") @CommonAnnotation("parameter") value) = Unit
|
||||||
|
|
||||||
@field:Foo("field")
|
@field:JsAnnotation("field")
|
||||||
|
@field:CommonAnnotation("field")
|
||||||
actual val propertyWithBackingField = 3.14
|
actual val propertyWithBackingField = 3.14
|
||||||
|
|
||||||
@delegate:Foo("field")
|
@delegate:JsAnnotation("field")
|
||||||
|
@delegate:CommonAnnotation("field")
|
||||||
actual val propertyWithDelegateField: Int by lazy { 42 }
|
actual val propertyWithDelegateField: Int by lazy { 42 }
|
||||||
|
|
||||||
actual val <@Foo("type-parameter") T : CharSequence> @receiver:Foo("receiver") T.propertyWithExtensionReceiver: Int
|
actual val <@JsAnnotation("type-parameter") @CommonAnnotation("type-parameter") T : CharSequence> @receiver:JsAnnotation("receiver") @receiver:CommonAnnotation("receiver") T.propertyWithExtensionReceiver: Int
|
||||||
get() = length
|
get() = length
|
||||||
|
|
||||||
@Foo("function")
|
@JsAnnotation("function")
|
||||||
actual fun function1(@Foo("parameter") text: String) = text
|
@CommonAnnotation("function")
|
||||||
|
actual fun function1(@JsAnnotation("parameter") @CommonAnnotation("parameter") text: String) = text
|
||||||
|
|
||||||
@Foo("function")
|
@JsAnnotation("function")
|
||||||
actual fun <@Foo("type-parameter") Q : Number> @receiver:Foo("receiver") Q.function2() = this
|
@CommonAnnotation("function")
|
||||||
|
actual fun <@JsAnnotation("type-parameter") @CommonAnnotation("type-parameter") Q : @JsAnnotation("type1") @CommonAnnotation("type1") Number> @receiver:JsAnnotation("receiver") @receiver:CommonAnnotation("receiver") Q.function2(): @JsAnnotation("type2") @CommonAnnotation("type2") Q = this
|
||||||
|
|
||||||
|
@JsAnnotation("class")
|
||||||
|
@CommonAnnotation("class")
|
||||||
|
actual class AnnotatedClass @JsAnnotation("constructor") @CommonAnnotation("constructor") actual constructor(actual val value: String)
|
||||||
|
|
||||||
|
@JsAnnotation("type-alias")
|
||||||
|
@CommonAnnotation("type-alias")
|
||||||
|
actual typealias AnnotatedTypeAlias = AnnotatedClass
|
||||||
|
|||||||
+38
-12
@@ -1,24 +1,50 @@
|
|||||||
import kotlin.annotation.AnnotationTarget.*
|
import kotlin.annotation.AnnotationTarget.*
|
||||||
|
|
||||||
@Target(PROPERTY, PROPERTY_GETTER, PROPERTY_SETTER, FIELD, VALUE_PARAMETER)
|
@Target(ANNOTATION_CLASS)
|
||||||
annotation class Bar(val text: String)
|
actual annotation class CommonAnnotationForAnnotationClassesOnly actual constructor(actual val text: String)
|
||||||
|
|
||||||
@Bar("property")
|
@Target(PROPERTY, PROPERTY_GETTER, PROPERTY_SETTER, FIELD, VALUE_PARAMETER, TYPE_PARAMETER, FUNCTION, CLASS, CONSTRUCTOR, TYPEALIAS, TYPE)
|
||||||
|
@JvmAnnotationForAnnotationClassesOnly("annotation-class")
|
||||||
|
@CommonAnnotationForAnnotationClassesOnly("annotation-class")
|
||||||
|
actual annotation class CommonAnnotation actual constructor(actual val text: String)
|
||||||
|
|
||||||
|
@Target(ANNOTATION_CLASS)
|
||||||
|
annotation class JvmAnnotationForAnnotationClassesOnly(val text: String)
|
||||||
|
|
||||||
|
@Target(PROPERTY, PROPERTY_GETTER, PROPERTY_SETTER, FIELD, VALUE_PARAMETER, TYPE_PARAMETER, FUNCTION, CLASS, CONSTRUCTOR, TYPEALIAS, TYPE)
|
||||||
|
@JvmAnnotationForAnnotationClassesOnly("annotation-class")
|
||||||
|
@CommonAnnotationForAnnotationClassesOnly("annotation-class")
|
||||||
|
annotation class JvmAnnotation(val text: String)
|
||||||
|
|
||||||
|
@JvmAnnotation("property")
|
||||||
|
@CommonAnnotation("property")
|
||||||
actual var propertyWithoutBackingField
|
actual var propertyWithoutBackingField
|
||||||
@Bar("getter") get() = 3.14
|
@JvmAnnotation("getter") @CommonAnnotation("getter") get() = 3.14
|
||||||
@Bar("setter") set(@Bar("parameter") value) = Unit
|
@JvmAnnotation("setter") @CommonAnnotation("setter") set(@JvmAnnotation("parameter") @CommonAnnotation("parameter") value) = Unit
|
||||||
|
|
||||||
@field:Bar("field")
|
@field:JvmAnnotation("field")
|
||||||
|
@field:CommonAnnotation("field")
|
||||||
actual val propertyWithBackingField = 3.14
|
actual val propertyWithBackingField = 3.14
|
||||||
|
|
||||||
@delegate:Bar("field")
|
@delegate:JvmAnnotation("field")
|
||||||
|
@delegate:CommonAnnotation("field")
|
||||||
actual val propertyWithDelegateField: Int by lazy { 42 }
|
actual val propertyWithDelegateField: Int by lazy { 42 }
|
||||||
|
|
||||||
actual val <@Bar("type-parameter") T : CharSequence> @receiver:Bar("receiver") T.propertyWithExtensionReceiver: Int
|
actual val <@JvmAnnotation("type-parameter") @CommonAnnotation("type-parameter") T : CharSequence> @receiver:JvmAnnotation("receiver") @receiver:CommonAnnotation("receiver") T.propertyWithExtensionReceiver: Int
|
||||||
get() = length
|
get() = length
|
||||||
|
|
||||||
@Bar("function")
|
@JvmAnnotation("function")
|
||||||
actual fun function1(@Bar("parameter") text: String) = text
|
@CommonAnnotation("function")
|
||||||
|
actual fun function1(@JvmAnnotation("parameter") @CommonAnnotation("parameter") text: String) = text
|
||||||
|
|
||||||
@Bar("function")
|
@JvmAnnotation("function")
|
||||||
actual fun <@Bar("type-parameter") Q : Number> @receiver:Bar("receiver") Q.function2() = this
|
@CommonAnnotation("function")
|
||||||
|
actual fun <@JvmAnnotation("type-parameter") @CommonAnnotation("type-parameter") Q : @JvmAnnotation("type1") @CommonAnnotation("type1") Number> @receiver:JvmAnnotation("receiver") @receiver:CommonAnnotation("receiver") Q.function2(): @JvmAnnotation("type2") @CommonAnnotation("type2") Q = this
|
||||||
|
|
||||||
|
@JvmAnnotation("class")
|
||||||
|
@CommonAnnotation("class")
|
||||||
|
actual class AnnotatedClass @JvmAnnotation("constructor") @CommonAnnotation("constructor") actual constructor(actual val value: String)
|
||||||
|
|
||||||
|
@JvmAnnotation("type-alias")
|
||||||
|
@CommonAnnotation("type-alias")
|
||||||
|
actual typealias AnnotatedTypeAlias = AnnotatedClass
|
||||||
|
|||||||
+38
-12
@@ -1,24 +1,50 @@
|
|||||||
import kotlin.annotation.AnnotationTarget.*
|
import kotlin.annotation.AnnotationTarget.*
|
||||||
|
|
||||||
@Target(PROPERTY, PROPERTY_GETTER, PROPERTY_SETTER, FIELD, VALUE_PARAMETER, TYPE_PARAMETER, FUNCTION)
|
@Target(ANNOTATION_CLASS)
|
||||||
annotation class Foo(val text: String)
|
annotation class CommonAnnotationForAnnotationClassesOnly(val text: String)
|
||||||
|
|
||||||
@Foo("property")
|
@Target(PROPERTY, PROPERTY_GETTER, PROPERTY_SETTER, FIELD, VALUE_PARAMETER, TYPE_PARAMETER, FUNCTION, CLASS, CONSTRUCTOR, TYPEALIAS, TYPE)
|
||||||
|
@JsAnnotationForAnnotationClassesOnly("annotation-class")
|
||||||
|
@CommonAnnotationForAnnotationClassesOnly("annotation-class")
|
||||||
|
annotation class CommonAnnotation(val text: String)
|
||||||
|
|
||||||
|
@Target(ANNOTATION_CLASS)
|
||||||
|
annotation class JsAnnotationForAnnotationClassesOnly(val text: String)
|
||||||
|
|
||||||
|
@Target(PROPERTY, PROPERTY_GETTER, PROPERTY_SETTER, FIELD, VALUE_PARAMETER, TYPE_PARAMETER, FUNCTION, CLASS, CONSTRUCTOR, TYPEALIAS, TYPE)
|
||||||
|
@JsAnnotationForAnnotationClassesOnly("annotation-class")
|
||||||
|
@CommonAnnotationForAnnotationClassesOnly("annotation-class")
|
||||||
|
annotation class JsAnnotation(val text: String)
|
||||||
|
|
||||||
|
@JsAnnotation("property")
|
||||||
|
@CommonAnnotation("property")
|
||||||
var propertyWithoutBackingField
|
var propertyWithoutBackingField
|
||||||
@Foo("getter") get() = 3.14
|
@JsAnnotation("getter") @CommonAnnotation("getter") get() = 3.14
|
||||||
@Foo("setter") set(@Foo("parameter") value) = Unit
|
@JsAnnotation("setter") @CommonAnnotation("setter") set(@JsAnnotation("parameter") @CommonAnnotation("parameter") value) = Unit
|
||||||
|
|
||||||
@field:Foo("field")
|
@field:JsAnnotation("field")
|
||||||
|
@field:CommonAnnotation("field")
|
||||||
val propertyWithBackingField = 3.14
|
val propertyWithBackingField = 3.14
|
||||||
|
|
||||||
@delegate:Foo("field")
|
@delegate:JsAnnotation("field")
|
||||||
|
@delegate:CommonAnnotation("field")
|
||||||
val propertyWithDelegateField: Int by lazy { 42 }
|
val propertyWithDelegateField: Int by lazy { 42 }
|
||||||
|
|
||||||
val <@Foo("type-parameter") T : CharSequence> @receiver:Foo("receiver") T.propertyWithExtensionReceiver: Int
|
val <@JsAnnotation("type-parameter") @CommonAnnotation("type-parameter") T : CharSequence> @receiver:JsAnnotation("receiver") @receiver:CommonAnnotation("receiver") T.propertyWithExtensionReceiver: Int
|
||||||
get() = length
|
get() = length
|
||||||
|
|
||||||
@Foo("function")
|
@JsAnnotation("function")
|
||||||
fun function1(@Foo("parameter") text: String) = text
|
@CommonAnnotation("function")
|
||||||
|
fun function1(@JsAnnotation("parameter") @CommonAnnotation("parameter") text: String) = text
|
||||||
|
|
||||||
@Foo("function")
|
@JsAnnotation("function")
|
||||||
fun <@Foo("type-parameter") Q : Number> @receiver:Foo("receiver") Q.function2() = this
|
@CommonAnnotation("function")
|
||||||
|
fun <@JsAnnotation("type-parameter") @CommonAnnotation("type-parameter") Q : @JsAnnotation("type1") @CommonAnnotation("type1") Number> @receiver:JsAnnotation("receiver") @receiver:CommonAnnotation("receiver") Q.function2(): @JsAnnotation("type2") @CommonAnnotation("type2") Q = this
|
||||||
|
|
||||||
|
@JsAnnotation("class")
|
||||||
|
@CommonAnnotation("class")
|
||||||
|
class AnnotatedClass @JsAnnotation("constructor") @CommonAnnotation("constructor") constructor(val value: String)
|
||||||
|
|
||||||
|
@JsAnnotation("type-alias")
|
||||||
|
@CommonAnnotation("type-alias")
|
||||||
|
typealias AnnotatedTypeAlias = AnnotatedClass
|
||||||
|
|||||||
+38
-12
@@ -1,24 +1,50 @@
|
|||||||
import kotlin.annotation.AnnotationTarget.*
|
import kotlin.annotation.AnnotationTarget.*
|
||||||
|
|
||||||
@Target(PROPERTY, PROPERTY_GETTER, PROPERTY_SETTER, FIELD, VALUE_PARAMETER)
|
@Target(ANNOTATION_CLASS)
|
||||||
annotation class Bar(val text: String)
|
annotation class CommonAnnotationForAnnotationClassesOnly(val text: String)
|
||||||
|
|
||||||
@Bar("property")
|
@Target(PROPERTY, PROPERTY_GETTER, PROPERTY_SETTER, FIELD, VALUE_PARAMETER, TYPE_PARAMETER, FUNCTION, CLASS, CONSTRUCTOR, TYPEALIAS, TYPE)
|
||||||
|
@JvmAnnotationForAnnotationClassesOnly("annotation-class")
|
||||||
|
@CommonAnnotationForAnnotationClassesOnly("annotation-class")
|
||||||
|
annotation class CommonAnnotation(val text: String)
|
||||||
|
|
||||||
|
@Target(ANNOTATION_CLASS)
|
||||||
|
annotation class JvmAnnotationForAnnotationClassesOnly(val text: String)
|
||||||
|
|
||||||
|
@Target(PROPERTY, PROPERTY_GETTER, PROPERTY_SETTER, FIELD, VALUE_PARAMETER, TYPE_PARAMETER, FUNCTION, CLASS, CONSTRUCTOR, TYPEALIAS, TYPE)
|
||||||
|
@JvmAnnotationForAnnotationClassesOnly("annotation-class")
|
||||||
|
@CommonAnnotationForAnnotationClassesOnly("annotation-class")
|
||||||
|
annotation class JvmAnnotation(val text: String)
|
||||||
|
|
||||||
|
@JvmAnnotation("property")
|
||||||
|
@CommonAnnotation("property")
|
||||||
var propertyWithoutBackingField
|
var propertyWithoutBackingField
|
||||||
@Bar("getter") get() = 3.14
|
@JvmAnnotation("getter") @CommonAnnotation("getter") get() = 3.14
|
||||||
@Bar("setter") set(@Bar("parameter") value) = Unit
|
@JvmAnnotation("setter") @CommonAnnotation("setter") set(@JvmAnnotation("parameter") @CommonAnnotation("parameter") value) = Unit
|
||||||
|
|
||||||
@field:Bar("field")
|
@field:JvmAnnotation("field")
|
||||||
|
@field:CommonAnnotation("field")
|
||||||
val propertyWithBackingField = 3.14
|
val propertyWithBackingField = 3.14
|
||||||
|
|
||||||
@delegate:Bar("field")
|
@delegate:JvmAnnotation("field")
|
||||||
|
@delegate:CommonAnnotation("field")
|
||||||
val propertyWithDelegateField: Int by lazy { 42 }
|
val propertyWithDelegateField: Int by lazy { 42 }
|
||||||
|
|
||||||
val <@Bar("type-parameter") T : CharSequence> @receiver:Bar("receiver") T.propertyWithExtensionReceiver: Int
|
val <@JvmAnnotation("type-parameter") @CommonAnnotation("type-parameter") T : CharSequence> @receiver:JvmAnnotation("receiver") @receiver:CommonAnnotation("receiver") T.propertyWithExtensionReceiver: Int
|
||||||
get() = length
|
get() = length
|
||||||
|
|
||||||
@Bar("function")
|
@JvmAnnotation("function")
|
||||||
fun function1(@Bar("parameter") text: String) = text
|
@CommonAnnotation("function")
|
||||||
|
fun function1(@JvmAnnotation("parameter") @CommonAnnotation("parameter") text: String) = text
|
||||||
|
|
||||||
@Bar("function")
|
@JvmAnnotation("function")
|
||||||
fun <@Bar("type-parameter") Q : Number> @receiver:Bar("receiver") Q.function2() = this
|
@CommonAnnotation("function")
|
||||||
|
fun <@JvmAnnotation("type-parameter") @CommonAnnotation("type-parameter") Q : @JvmAnnotation("type1") @CommonAnnotation("type1") Number> @receiver:JvmAnnotation("receiver") @receiver:CommonAnnotation("receiver") Q.function2(): @JvmAnnotation("type2") @CommonAnnotation("type2") Q = this
|
||||||
|
|
||||||
|
@JvmAnnotation("class")
|
||||||
|
@CommonAnnotation("class")
|
||||||
|
class AnnotatedClass @JvmAnnotation("constructor") @CommonAnnotation("constructor") constructor(val value: String)
|
||||||
|
|
||||||
|
@JvmAnnotation("type-alias")
|
||||||
|
@CommonAnnotation("type-alias")
|
||||||
|
typealias AnnotatedTypeAlias = AnnotatedClass
|
||||||
|
|||||||
+8
@@ -12,6 +12,10 @@ import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
|
|||||||
import org.jetbrains.kotlin.config.CommonConfigurationKeys
|
import org.jetbrains.kotlin.config.CommonConfigurationKeys
|
||||||
import org.jetbrains.kotlin.config.languageVersionSettings
|
import org.jetbrains.kotlin.config.languageVersionSettings
|
||||||
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||||
|
import org.jetbrains.kotlin.descriptors.commonizer.utils.assertCommonizationPerformed
|
||||||
|
import org.jetbrains.kotlin.descriptors.commonizer.utils.assertIsDirectory
|
||||||
|
import org.jetbrains.kotlin.descriptors.commonizer.utils.assertModulesAreEqual
|
||||||
|
import org.jetbrains.kotlin.descriptors.commonizer.utils.assertValidModule
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.psi.KtPsiFactory
|
import org.jetbrains.kotlin.psi.KtPsiFactory
|
||||||
import org.jetbrains.kotlin.test.KotlinTestUtils.*
|
import org.jetbrains.kotlin.test.KotlinTestUtils.*
|
||||||
@@ -130,6 +134,8 @@ abstract class AbstractCommonizationFromSourcesTest : KtUsefulTestCase() {
|
|||||||
val commonModuleAsExpected = commonizedModules.getValue("common")
|
val commonModuleAsExpected = commonizedModules.getValue("common")
|
||||||
val commonModuleByCommonizer = result.commonModules.single()
|
val commonModuleByCommonizer = result.commonModules.single()
|
||||||
|
|
||||||
|
assertValidModule(commonModuleAsExpected)
|
||||||
|
assertValidModule(commonModuleByCommonizer)
|
||||||
assertModulesAreEqual(commonModuleAsExpected, commonModuleByCommonizer, "\"common\" target")
|
assertModulesAreEqual(commonModuleAsExpected, commonModuleByCommonizer, "\"common\" target")
|
||||||
|
|
||||||
val concreteTargetNames = commonizedModules.keys - "common"
|
val concreteTargetNames = commonizedModules.keys - "common"
|
||||||
@@ -139,6 +145,8 @@ abstract class AbstractCommonizationFromSourcesTest : KtUsefulTestCase() {
|
|||||||
val targetModuleAsExpected = commonizedModules.getValue(targetName)
|
val targetModuleAsExpected = commonizedModules.getValue(targetName)
|
||||||
val targetModuleByCommonizer = result.modulesByTargets.getValue(targetName).single()
|
val targetModuleByCommonizer = result.modulesByTargets.getValue(targetName).single()
|
||||||
|
|
||||||
|
assertValidModule(targetModuleAsExpected)
|
||||||
|
assertValidModule(targetModuleByCommonizer)
|
||||||
assertModulesAreEqual(targetModuleAsExpected, targetModuleByCommonizer, "\"$targetName\" target")
|
assertModulesAreEqual(targetModuleAsExpected, targetModuleByCommonizer, "\"$targetName\" target")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
-3
@@ -15,7 +15,4 @@ class CallableMemberCommonizationFromSourcesTest : AbstractCommonizationFromSour
|
|||||||
fun testReturnTypes() = doTestSuccessfulCommonization()
|
fun testReturnTypes() = doTestSuccessfulCommonization()
|
||||||
|
|
||||||
fun testExtensionReceivers() = doTestSuccessfulCommonization()
|
fun testExtensionReceivers() = doTestSuccessfulCommonization()
|
||||||
|
|
||||||
// TODO: test modality (possible only inside classes)
|
|
||||||
// TODO: test virtual val/fun visibility commonization (possible only inside classes)
|
|
||||||
}
|
}
|
||||||
|
|||||||
+26
@@ -0,0 +1,26 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||||
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.jetbrains.kotlin.descriptors.commonizer
|
||||||
|
|
||||||
|
import kotlin.contracts.ExperimentalContracts
|
||||||
|
|
||||||
|
@ExperimentalContracts
|
||||||
|
class ClassifierCommonizationFromSourcesTest : AbstractCommonizationFromSourcesTest() {
|
||||||
|
|
||||||
|
fun testClassKindAndModifiers() = doTestSuccessfulCommonization()
|
||||||
|
|
||||||
|
fun testModality() = doTestSuccessfulCommonization()
|
||||||
|
|
||||||
|
fun testVisibility() = doTestSuccessfulCommonization()
|
||||||
|
|
||||||
|
fun testConstructors() = doTestSuccessfulCommonization()
|
||||||
|
|
||||||
|
fun testTypeParameters() = doTestSuccessfulCommonization()
|
||||||
|
|
||||||
|
fun testSupertypes() = doTestSuccessfulCommonization()
|
||||||
|
|
||||||
|
fun testTypeAliases() = doTestSuccessfulCommonization()
|
||||||
|
}
|
||||||
+3
-1
@@ -6,9 +6,11 @@
|
|||||||
package org.jetbrains.kotlin.descriptors.commonizer
|
package org.jetbrains.kotlin.descriptors.commonizer
|
||||||
|
|
||||||
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||||
import org.junit.Assert.*
|
import kotlin.test.*
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
import org.jetbrains.kotlin.descriptors.commonizer.AbstractCommonizationFromSourcesTest.Companion.eachModuleAsTarget
|
import org.jetbrains.kotlin.descriptors.commonizer.AbstractCommonizationFromSourcesTest.Companion.eachModuleAsTarget
|
||||||
|
import org.jetbrains.kotlin.descriptors.commonizer.utils.assertCommonizationPerformed
|
||||||
|
import org.jetbrains.kotlin.descriptors.commonizer.utils.mockEmptyModule
|
||||||
import kotlin.contracts.ExperimentalContracts
|
import kotlin.contracts.ExperimentalContracts
|
||||||
|
|
||||||
@ExperimentalContracts
|
@ExperimentalContracts
|
||||||
|
|||||||
+1
-1
@@ -5,8 +5,8 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.descriptors.commonizer.core
|
package org.jetbrains.kotlin.descriptors.commonizer.core
|
||||||
|
|
||||||
import org.junit.Assert.*
|
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
|
import kotlin.test.*
|
||||||
|
|
||||||
abstract class AbstractCommonizerTest<T, R> {
|
abstract class AbstractCommonizerTest<T, R> {
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -6,9 +6,9 @@
|
|||||||
package org.jetbrains.kotlin.descriptors.commonizer.core
|
package org.jetbrains.kotlin.descriptors.commonizer.core
|
||||||
|
|
||||||
import org.jetbrains.kotlin.descriptors.annotations.Annotations
|
import org.jetbrains.kotlin.descriptors.annotations.Annotations
|
||||||
import org.jetbrains.kotlin.descriptors.commonizer.EMPTY_CLASSIFIERS_CACHE
|
import org.jetbrains.kotlin.descriptors.commonizer.utils.EMPTY_CLASSIFIERS_CACHE
|
||||||
import org.jetbrains.kotlin.descriptors.commonizer.mergedtree.ir.ExtensionReceiver
|
import org.jetbrains.kotlin.descriptors.commonizer.mergedtree.ir.ExtensionReceiver
|
||||||
import org.jetbrains.kotlin.descriptors.commonizer.mockClassType
|
import org.jetbrains.kotlin.descriptors.commonizer.utils.mockClassType
|
||||||
import org.jetbrains.kotlin.types.UnwrappedType
|
import org.jetbrains.kotlin.types.UnwrappedType
|
||||||
import org.jetbrains.kotlin.types.refinement.TypeRefinement
|
import org.jetbrains.kotlin.types.refinement.TypeRefinement
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
|
|||||||
+2
-2
@@ -11,8 +11,8 @@ import org.jetbrains.kotlin.descriptors.commonizer.CommonizedGroupMap
|
|||||||
import org.jetbrains.kotlin.descriptors.commonizer.mergedtree.ir.RootNode.ClassifiersCacheImpl
|
import org.jetbrains.kotlin.descriptors.commonizer.mergedtree.ir.RootNode.ClassifiersCacheImpl
|
||||||
import org.jetbrains.kotlin.descriptors.commonizer.mergedtree.ir.buildClassNode
|
import org.jetbrains.kotlin.descriptors.commonizer.mergedtree.ir.buildClassNode
|
||||||
import org.jetbrains.kotlin.descriptors.commonizer.mergedtree.ir.buildTypeAliasNode
|
import org.jetbrains.kotlin.descriptors.commonizer.mergedtree.ir.buildTypeAliasNode
|
||||||
import org.jetbrains.kotlin.descriptors.commonizer.mockClassType
|
import org.jetbrains.kotlin.descriptors.commonizer.utils.mockClassType
|
||||||
import org.jetbrains.kotlin.descriptors.commonizer.mockTAType
|
import org.jetbrains.kotlin.descriptors.commonizer.utils.mockTAType
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe
|
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe
|
||||||
import org.jetbrains.kotlin.storage.LockBasedStorageManager
|
import org.jetbrains.kotlin.storage.LockBasedStorageManager
|
||||||
|
|||||||
+2
-2
@@ -5,10 +5,10 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.descriptors.commonizer.core
|
package org.jetbrains.kotlin.descriptors.commonizer.core
|
||||||
|
|
||||||
import org.jetbrains.kotlin.descriptors.commonizer.EMPTY_CLASSIFIERS_CACHE
|
import org.jetbrains.kotlin.descriptors.commonizer.utils.EMPTY_CLASSIFIERS_CACHE
|
||||||
import org.jetbrains.kotlin.descriptors.commonizer.mergedtree.ir.CommonTypeParameter
|
import org.jetbrains.kotlin.descriptors.commonizer.mergedtree.ir.CommonTypeParameter
|
||||||
import org.jetbrains.kotlin.descriptors.commonizer.mergedtree.ir.TypeParameter
|
import org.jetbrains.kotlin.descriptors.commonizer.mergedtree.ir.TypeParameter
|
||||||
import org.jetbrains.kotlin.descriptors.commonizer.mockClassType
|
import org.jetbrains.kotlin.descriptors.commonizer.utils.mockClassType
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.types.Variance
|
import org.jetbrains.kotlin.types.Variance
|
||||||
import org.jetbrains.kotlin.types.refinement.TypeRefinement
|
import org.jetbrains.kotlin.types.refinement.TypeRefinement
|
||||||
|
|||||||
+1
-1
@@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.descriptors.commonizer.core
|
package org.jetbrains.kotlin.descriptors.commonizer.core
|
||||||
|
|
||||||
import org.jetbrains.kotlin.descriptors.commonizer.EMPTY_CLASSIFIERS_CACHE
|
import org.jetbrains.kotlin.descriptors.commonizer.utils.EMPTY_CLASSIFIERS_CACHE
|
||||||
import org.jetbrains.kotlin.descriptors.commonizer.mergedtree.ir.TypeParameter
|
import org.jetbrains.kotlin.descriptors.commonizer.mergedtree.ir.TypeParameter
|
||||||
import org.jetbrains.kotlin.types.refinement.TypeRefinement
|
import org.jetbrains.kotlin.types.refinement.TypeRefinement
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
|
|||||||
+2
-2
@@ -6,11 +6,11 @@
|
|||||||
package org.jetbrains.kotlin.descriptors.commonizer.core
|
package org.jetbrains.kotlin.descriptors.commonizer.core
|
||||||
|
|
||||||
import org.jetbrains.kotlin.descriptors.annotations.Annotations
|
import org.jetbrains.kotlin.descriptors.annotations.Annotations
|
||||||
import org.jetbrains.kotlin.descriptors.commonizer.EMPTY_CLASSIFIERS_CACHE
|
import org.jetbrains.kotlin.descriptors.commonizer.utils.EMPTY_CLASSIFIERS_CACHE
|
||||||
import org.jetbrains.kotlin.descriptors.commonizer.core.TestValueParameter.Companion.areEqual
|
import org.jetbrains.kotlin.descriptors.commonizer.core.TestValueParameter.Companion.areEqual
|
||||||
import org.jetbrains.kotlin.descriptors.commonizer.mergedtree.ir.ClassifiersCache
|
import org.jetbrains.kotlin.descriptors.commonizer.mergedtree.ir.ClassifiersCache
|
||||||
import org.jetbrains.kotlin.descriptors.commonizer.mergedtree.ir.ValueParameter
|
import org.jetbrains.kotlin.descriptors.commonizer.mergedtree.ir.ValueParameter
|
||||||
import org.jetbrains.kotlin.descriptors.commonizer.mockClassType
|
import org.jetbrains.kotlin.descriptors.commonizer.utils.mockClassType
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.types.UnwrappedType
|
import org.jetbrains.kotlin.types.UnwrappedType
|
||||||
import org.jetbrains.kotlin.types.refinement.TypeRefinement
|
import org.jetbrains.kotlin.types.refinement.TypeRefinement
|
||||||
|
|||||||
+1
-1
@@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.descriptors.commonizer.core
|
package org.jetbrains.kotlin.descriptors.commonizer.core
|
||||||
|
|
||||||
import org.jetbrains.kotlin.descriptors.commonizer.EMPTY_CLASSIFIERS_CACHE
|
import org.jetbrains.kotlin.descriptors.commonizer.utils.EMPTY_CLASSIFIERS_CACHE
|
||||||
import org.jetbrains.kotlin.descriptors.commonizer.core.TestValueParameter.Companion.areEqual
|
import org.jetbrains.kotlin.descriptors.commonizer.core.TestValueParameter.Companion.areEqual
|
||||||
import org.jetbrains.kotlin.descriptors.commonizer.mergedtree.ir.ValueParameter
|
import org.jetbrains.kotlin.descriptors.commonizer.mergedtree.ir.ValueParameter
|
||||||
import org.jetbrains.kotlin.types.refinement.TypeRefinement
|
import org.jetbrains.kotlin.types.refinement.TypeRefinement
|
||||||
|
|||||||
+16
-4
@@ -7,8 +7,10 @@ package org.jetbrains.kotlin.descriptors.commonizer.core
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.descriptors.*
|
import org.jetbrains.kotlin.descriptors.*
|
||||||
import org.jetbrains.kotlin.descriptors.Visibilities.*
|
import org.jetbrains.kotlin.descriptors.Visibilities.*
|
||||||
import org.jetbrains.kotlin.descriptors.commonizer.mergedtree.ir.DeclarationWithVisibility
|
import org.jetbrains.kotlin.descriptors.annotations.Annotations
|
||||||
import org.jetbrains.kotlin.descriptors.commonizer.mergedtree.ir.MaybeVirtualCallableMember
|
import org.jetbrains.kotlin.descriptors.commonizer.mergedtree.ir.*
|
||||||
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
import org.jetbrains.kotlin.types.UnwrappedType
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
|
|
||||||
abstract class LoweringVisibilityCommonizerTest(
|
abstract class LoweringVisibilityCommonizerTest(
|
||||||
@@ -30,9 +32,19 @@ abstract class LoweringVisibilityCommonizerTest(
|
|||||||
|
|
||||||
final override fun createCommonizer() = VisibilityCommonizer.lowering(allowPrivate = allowPrivate)
|
final override fun createCommonizer() = VisibilityCommonizer.lowering(allowPrivate = allowPrivate)
|
||||||
|
|
||||||
protected fun Visibility.toMock() = object : MaybeVirtualCallableMember {
|
protected fun Visibility.toMock() = object : FunctionOrProperty {
|
||||||
override val visibility: Visibility = this@toMock
|
override val visibility: Visibility = this@toMock
|
||||||
override val isVirtual: Boolean = !isPrivate(visibility) && areMembersVirtual
|
override val modality: Modality get() = if (areMembersVirtual) Modality.OPEN else Modality.FINAL
|
||||||
|
override val containingClassModality: Modality? get() = if (areMembersVirtual) Modality.OPEN else null
|
||||||
|
override val containingClassKind: ClassKind? get() = if (areMembersVirtual) ClassKind.CLASS else null
|
||||||
|
override val isExternal: Boolean get() = unsupported()
|
||||||
|
override val extensionReceiver: ExtensionReceiver? get() = unsupported()
|
||||||
|
override val returnType: UnwrappedType get() = unsupported()
|
||||||
|
override val kind: CallableMemberDescriptor.Kind get() = unsupported()
|
||||||
|
override val annotations: Annotations get() = unsupported()
|
||||||
|
override val name: Name get() = unsupported()
|
||||||
|
override val containingClassIsData: Boolean? get() = unsupported()
|
||||||
|
override val typeParameters: List<TypeParameter> get() = unsupported()
|
||||||
}
|
}
|
||||||
|
|
||||||
class PrivateMembers : LoweringVisibilityCommonizerTest(true, false) {
|
class PrivateMembers : LoweringVisibilityCommonizerTest(true, false) {
|
||||||
|
|||||||
+25
-32
@@ -3,47 +3,25 @@
|
|||||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package org.jetbrains.kotlin.descriptors.commonizer
|
package org.jetbrains.kotlin.descriptors.commonizer.utils
|
||||||
|
|
||||||
import junit.framework.TestCase.fail
|
|
||||||
import org.jetbrains.kotlin.descriptors.*
|
import org.jetbrains.kotlin.descriptors.*
|
||||||
import org.jetbrains.kotlin.descriptors.annotations.Annotations
|
import org.jetbrains.kotlin.descriptors.annotations.Annotations
|
||||||
|
import org.jetbrains.kotlin.descriptors.commonizer.fqName
|
||||||
|
import org.jetbrains.kotlin.descriptors.commonizer.fqNameWithTypeParameters
|
||||||
|
import org.jetbrains.kotlin.descriptors.commonizer.isNull
|
||||||
import org.jetbrains.kotlin.descriptors.commonizer.mergedtree.*
|
import org.jetbrains.kotlin.descriptors.commonizer.mergedtree.*
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe
|
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe
|
||||||
import org.jetbrains.kotlin.resolve.scopes.MemberScope
|
import org.jetbrains.kotlin.resolve.scopes.MemberScope
|
||||||
import org.jetbrains.kotlin.types.KotlinType
|
import org.jetbrains.kotlin.types.KotlinType
|
||||||
import org.jetbrains.kotlin.types.getAbbreviation
|
import org.jetbrains.kotlin.types.getAbbreviation
|
||||||
import java.io.File
|
|
||||||
import kotlin.contracts.ExperimentalContracts
|
import kotlin.contracts.ExperimentalContracts
|
||||||
import kotlin.contracts.contract
|
|
||||||
import kotlin.reflect.KCallable
|
import kotlin.reflect.KCallable
|
||||||
|
import kotlin.test.fail
|
||||||
fun assertIsDirectory(file: File) {
|
|
||||||
if (!file.isDirectory)
|
|
||||||
fail("Not a directory: $file")
|
|
||||||
}
|
|
||||||
|
|
||||||
@ExperimentalContracts
|
@ExperimentalContracts
|
||||||
fun assertCommonizationPerformed(result: CommonizationResult) {
|
internal class ComparingDeclarationsVisitor(
|
||||||
contract {
|
|
||||||
returns() implies (result is CommonizationPerformed)
|
|
||||||
}
|
|
||||||
|
|
||||||
if (result !is CommonizationPerformed)
|
|
||||||
fail("$result is not instance of ${CommonizationPerformed::class}")
|
|
||||||
}
|
|
||||||
|
|
||||||
@ExperimentalContracts
|
|
||||||
fun assertModulesAreEqual(expected: ModuleDescriptor, actual: ModuleDescriptor, designatorMessage: String) {
|
|
||||||
val visitor = ComparingDeclarationsVisitor(designatorMessage)
|
|
||||||
val context = visitor.Context(actual)
|
|
||||||
|
|
||||||
expected.accept(visitor, context)
|
|
||||||
}
|
|
||||||
|
|
||||||
@ExperimentalContracts
|
|
||||||
private class ComparingDeclarationsVisitor(
|
|
||||||
val designatorMessage: String
|
val designatorMessage: String
|
||||||
) : DeclarationDescriptorVisitor<Unit, ComparingDeclarationsVisitor.Context> {
|
) : DeclarationDescriptorVisitor<Unit, ComparingDeclarationsVisitor.Context> {
|
||||||
|
|
||||||
@@ -91,7 +69,7 @@ private class ComparingDeclarationsVisitor(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun visitMemberScopes(expected: MemberScope, actual: MemberScope, context: Context) {
|
private fun visitMemberScopes(expected: MemberScope, actual: MemberScope, context: Context) {
|
||||||
val expectedProperties = mutableMapOf<PropertyApproximationKey, PropertyDescriptor>()
|
val expectedProperties = mutableMapOf<PropertyApproximationKey, PropertyDescriptor>()
|
||||||
val expectedFunctions = mutableMapOf<FunctionApproximationKey, SimpleFunctionDescriptor>()
|
val expectedFunctions = mutableMapOf<FunctionApproximationKey, SimpleFunctionDescriptor>()
|
||||||
val expectedClasses = mutableMapOf<FqName, ClassDescriptor>()
|
val expectedClasses = mutableMapOf<FqName, ClassDescriptor>()
|
||||||
@@ -162,10 +140,16 @@ private class ComparingDeclarationsVisitor(
|
|||||||
context.assertFieldsEqual(expected::isSuspend, actual::isSuspend)
|
context.assertFieldsEqual(expected::isSuspend, actual::isSuspend)
|
||||||
context.assertFieldsEqual(expected::isExternal, actual::isExternal)
|
context.assertFieldsEqual(expected::isExternal, actual::isExternal)
|
||||||
context.assertFieldsEqual(expected::isExpect, actual::isExpect)
|
context.assertFieldsEqual(expected::isExpect, actual::isExpect)
|
||||||
context.assertFieldsEqual(expected::isActual, actual::isActual)
|
|
||||||
context.assertFieldsEqual(expected::hasStableParameterNames, actual::hasStableParameterNames)
|
context.assertFieldsEqual(expected::hasStableParameterNames, actual::hasStableParameterNames)
|
||||||
context.assertFieldsEqual(expected::hasSynthesizedParameterNames, actual::hasSynthesizedParameterNames)
|
context.assertFieldsEqual(expected::hasSynthesizedParameterNames, actual::hasSynthesizedParameterNames)
|
||||||
|
|
||||||
|
if (!expected.isActual || actual.kind != CallableMemberDescriptor.Kind.DELEGATION) {
|
||||||
|
context.assertFieldsEqual(expected::isActual, actual::isActual)
|
||||||
|
} /* else {
|
||||||
|
// don't check, because there can be any value in expect.isActual
|
||||||
|
// see org.jetbrains.kotlin.resolve.DelegationResolver
|
||||||
|
} */
|
||||||
|
|
||||||
visitType(expected.returnType, actual.returnType, context.nextLevel("Function type"))
|
visitType(expected.returnType, actual.returnType, context.nextLevel("Function type"))
|
||||||
|
|
||||||
visitValueParameterDescriptorList(expected.valueParameters, actual.valueParameters, context.nextLevel("Function value parameters"))
|
visitValueParameterDescriptorList(expected.valueParameters, actual.valueParameters, context.nextLevel("Function value parameters"))
|
||||||
@@ -176,7 +160,7 @@ private class ComparingDeclarationsVisitor(
|
|||||||
visitTypeParameters(expected.typeParameters, actual.typeParameters, context.nextLevel("Function type parameters"))
|
visitTypeParameters(expected.typeParameters, actual.typeParameters, context.nextLevel("Function type parameters"))
|
||||||
}
|
}
|
||||||
|
|
||||||
fun visitValueParameterDescriptorList(
|
private fun visitValueParameterDescriptorList(
|
||||||
expected: List<ValueParameterDescriptor>,
|
expected: List<ValueParameterDescriptor>,
|
||||||
actual: List<ValueParameterDescriptor>,
|
actual: List<ValueParameterDescriptor>,
|
||||||
context: Context
|
context: Context
|
||||||
@@ -339,9 +323,17 @@ private class ComparingDeclarationsVisitor(
|
|||||||
context.assertFieldsEqual(expected::isConst, actual::isConst)
|
context.assertFieldsEqual(expected::isConst, actual::isConst)
|
||||||
context.assertFieldsEqual(expected::isExternal, actual::isExternal)
|
context.assertFieldsEqual(expected::isExternal, actual::isExternal)
|
||||||
context.assertFieldsEqual(expected::isExpect, actual::isExpect)
|
context.assertFieldsEqual(expected::isExpect, actual::isExpect)
|
||||||
context.assertFieldsEqual(expected::isActual, actual::isActual)
|
|
||||||
|
if (!expected.isActual || actual.kind != CallableMemberDescriptor.Kind.DELEGATION) {
|
||||||
|
context.assertFieldsEqual(expected::isActual, actual::isActual)
|
||||||
|
} /* else {
|
||||||
|
// don't check, because there can be any value in expect.isActual
|
||||||
|
// see org.jetbrains.kotlin.resolve.DelegationResolver
|
||||||
|
} */
|
||||||
|
|
||||||
@Suppress("DEPRECATION")
|
@Suppress("DEPRECATION")
|
||||||
context.assertFieldsEqual(expected::isDelegated, actual::isDelegated)
|
context.assertFieldsEqual(expected::isDelegated, actual::isDelegated)
|
||||||
|
|
||||||
visitAnnotations(
|
visitAnnotations(
|
||||||
expected.delegateField?.annotations,
|
expected.delegateField?.annotations,
|
||||||
actual.delegateField?.annotations,
|
actual.delegateField?.annotations,
|
||||||
@@ -352,6 +344,7 @@ private class ComparingDeclarationsVisitor(
|
|||||||
actual.backingField?.annotations,
|
actual.backingField?.annotations,
|
||||||
context.nextLevel("Property backing field annotations")
|
context.nextLevel("Property backing field annotations")
|
||||||
)
|
)
|
||||||
|
|
||||||
context.assertEquals(expected.compileTimeInitializer.isNull(), actual.compileTimeInitializer.isNull(), "compile-time initializers")
|
context.assertEquals(expected.compileTimeInitializer.isNull(), actual.compileTimeInitializer.isNull(), "compile-time initializers")
|
||||||
visitType(expected.type, actual.type, context.nextLevel("Property type"))
|
visitType(expected.type, actual.type, context.nextLevel("Property type"))
|
||||||
|
|
||||||
+76
@@ -0,0 +1,76 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||||
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.jetbrains.kotlin.descriptors.commonizer.utils
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.descriptors.*
|
||||||
|
import org.jetbrains.kotlin.descriptors.commonizer.CommonizationPerformed
|
||||||
|
import org.jetbrains.kotlin.descriptors.commonizer.CommonizationResult
|
||||||
|
import org.jetbrains.kotlin.test.util.DescriptorValidator.*
|
||||||
|
import org.jetbrains.kotlin.types.ErrorUtils
|
||||||
|
import java.io.File
|
||||||
|
import kotlin.contracts.ExperimentalContracts
|
||||||
|
import kotlin.contracts.contract
|
||||||
|
import kotlin.test.assertFalse
|
||||||
|
import kotlin.test.fail
|
||||||
|
|
||||||
|
fun assertIsDirectory(file: File) {
|
||||||
|
if (!file.isDirectory)
|
||||||
|
fail("Not a directory: $file")
|
||||||
|
}
|
||||||
|
|
||||||
|
@ExperimentalContracts
|
||||||
|
fun assertCommonizationPerformed(result: CommonizationResult) {
|
||||||
|
contract {
|
||||||
|
returns() implies (result is CommonizationPerformed)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (result !is CommonizationPerformed)
|
||||||
|
fail("$result is not instance of ${CommonizationPerformed::class}")
|
||||||
|
}
|
||||||
|
|
||||||
|
@ExperimentalContracts
|
||||||
|
fun assertModulesAreEqual(expected: ModuleDescriptor, actual: ModuleDescriptor, designatorMessage: String) {
|
||||||
|
val visitor = ComparingDeclarationsVisitor(designatorMessage)
|
||||||
|
val context = visitor.Context(actual)
|
||||||
|
|
||||||
|
expected.accept(visitor, context)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun assertValidModule(module: ModuleDescriptor) = validate(
|
||||||
|
object : ValidationVisitor() {
|
||||||
|
override fun visitModuleDeclaration(descriptor: ModuleDescriptor, collector: DiagnosticCollector): Boolean {
|
||||||
|
assertValid(descriptor)
|
||||||
|
return super.visitModuleDeclaration(descriptor, collector)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun visitClassDescriptor(descriptor: ClassDescriptor, collector: DiagnosticCollector): Boolean {
|
||||||
|
assertValid(descriptor)
|
||||||
|
return super.visitClassDescriptor(descriptor, collector)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun visitFunctionDescriptor(descriptor: FunctionDescriptor, collector: DiagnosticCollector): Boolean {
|
||||||
|
assertValid(descriptor)
|
||||||
|
return super.visitFunctionDescriptor(descriptor, collector)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun visitPropertyDescriptor(descriptor: PropertyDescriptor, collector: DiagnosticCollector): Boolean {
|
||||||
|
assertValid(descriptor)
|
||||||
|
return super.visitPropertyDescriptor(descriptor, collector)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun visitConstructorDescriptor(constructorDescriptor: ConstructorDescriptor, collector: DiagnosticCollector): Boolean {
|
||||||
|
assertValid(constructorDescriptor)
|
||||||
|
return super.visitConstructorDescriptor(constructorDescriptor, collector)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
module
|
||||||
|
)
|
||||||
|
|
||||||
|
@Suppress("NOTHING_TO_INLINE")
|
||||||
|
private inline fun assertValid(descriptor: DeclarationDescriptor) = when (descriptor) {
|
||||||
|
is ModuleDescriptor -> descriptor.assertValid()
|
||||||
|
else -> assertFalse(ErrorUtils.isError(descriptor), "$descriptor is error")
|
||||||
|
}
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package org.jetbrains.kotlin.descriptors.commonizer
|
package org.jetbrains.kotlin.descriptors.commonizer.utils
|
||||||
|
|
||||||
import org.jetbrains.kotlin.descriptors.*
|
import org.jetbrains.kotlin.descriptors.*
|
||||||
import org.jetbrains.kotlin.descriptors.annotations.Annotations
|
import org.jetbrains.kotlin.descriptors.annotations.Annotations
|
||||||
Reference in New Issue
Block a user