[Commonizer] Drop CirContainingClassdetails in favor of CirClass entity
This commit is contained in:
@@ -5,14 +5,11 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.descriptors.commonizer.cir
|
package org.jetbrains.kotlin.descriptors.commonizer.cir
|
||||||
|
|
||||||
import org.jetbrains.kotlin.descriptors.ClassKind
|
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
|
||||||
interface CirClass : CirClassifier, CirHasModality {
|
interface CirClass : CirClassifier, CirContainingClass {
|
||||||
val kind: ClassKind
|
|
||||||
var companion: Name? // null means no companion object
|
var companion: Name? // null means no companion object
|
||||||
val isCompanion: Boolean
|
val isCompanion: Boolean
|
||||||
val isData: Boolean
|
|
||||||
val isInline: Boolean
|
val isInline: Boolean
|
||||||
val isInner: Boolean
|
val isInner: Boolean
|
||||||
val isExternal: Boolean
|
val isExternal: Boolean
|
||||||
|
|||||||
+1
-1
@@ -14,5 +14,5 @@ interface CirClassConstructor :
|
|||||||
CirCallableMemberWithParameters {
|
CirCallableMemberWithParameters {
|
||||||
|
|
||||||
val isPrimary: Boolean
|
val isPrimary: Boolean
|
||||||
override val containingClassDetails: CirContainingClassDetails // non-nullable
|
override val containingClass: CirContainingClass // non-nullable
|
||||||
}
|
}
|
||||||
|
|||||||
-15
@@ -1,15 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2010-2020 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.cir
|
|
||||||
|
|
||||||
import org.jetbrains.kotlin.descriptors.ClassKind
|
|
||||||
import org.jetbrains.kotlin.descriptors.Modality
|
|
||||||
|
|
||||||
data class CirContainingClassDetails(
|
|
||||||
val kind: ClassKind,
|
|
||||||
override val modality: Modality,
|
|
||||||
val isData: Boolean
|
|
||||||
) : CirHasModality
|
|
||||||
+9
-1
@@ -44,7 +44,15 @@ interface CirHasModality {
|
|||||||
}
|
}
|
||||||
|
|
||||||
interface CirMaybeCallableMemberOfClass {
|
interface CirMaybeCallableMemberOfClass {
|
||||||
val containingClassDetails: CirContainingClassDetails? // null assumes no containing class
|
val containingClass: CirContainingClass? // null assumes no containing class
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A subset of containing [CirClass] visible to such class members as [CirFunction], [CirProperty] and [CirClassConstructor].
|
||||||
|
*/
|
||||||
|
interface CirContainingClass : CirHasModality {
|
||||||
|
val kind: ClassKind
|
||||||
|
val isData: Boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
interface CirHasTypeParameters {
|
interface CirHasTypeParameters {
|
||||||
|
|||||||
+1
-1
@@ -26,5 +26,5 @@ interface CirFunctionOrProperty :
|
|||||||
fun isVirtual(): Boolean =
|
fun isVirtual(): Boolean =
|
||||||
visibility != DescriptorVisibilities.PRIVATE
|
visibility != DescriptorVisibilities.PRIVATE
|
||||||
&& modality != Modality.FINAL
|
&& modality != Modality.FINAL
|
||||||
&& !(containingClassDetails?.modality == Modality.FINAL && containingClassDetails?.kind != ClassKind.ENUM_CLASS)
|
&& !(containingClass?.modality == Modality.FINAL && containingClass?.kind != ClassKind.ENUM_CLASS)
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-4
@@ -14,7 +14,7 @@ import org.jetbrains.kotlin.descriptors.commonizer.utils.compactMap
|
|||||||
import org.jetbrains.kotlin.descriptors.commonizer.utils.compactMapNotNull
|
import org.jetbrains.kotlin.descriptors.commonizer.utils.compactMapNotNull
|
||||||
|
|
||||||
object CirClassConstructorFactory {
|
object CirClassConstructorFactory {
|
||||||
fun create(source: ClassConstructorDescriptor): CirClassConstructor {
|
fun create(source: ClassConstructorDescriptor, containingClass: CirContainingClass): CirClassConstructor {
|
||||||
check(source.kind == CallableMemberDescriptor.Kind.DECLARATION) {
|
check(source.kind == CallableMemberDescriptor.Kind.DECLARATION) {
|
||||||
"Unexpected ${CallableMemberDescriptor.Kind::class.java} for class constructor $source, ${source::class.java}: ${source.kind}"
|
"Unexpected ${CallableMemberDescriptor.Kind::class.java} for class constructor $source, ${source::class.java}: ${source.kind}"
|
||||||
}
|
}
|
||||||
@@ -26,7 +26,7 @@ object CirClassConstructorFactory {
|
|||||||
typeParameter.takeIf { it.containingDeclaration == source }?.let(CirTypeParameterFactory::create)
|
typeParameter.takeIf { it.containingDeclaration == source }?.let(CirTypeParameterFactory::create)
|
||||||
},
|
},
|
||||||
visibility = source.visibility,
|
visibility = source.visibility,
|
||||||
containingClassDetails = CirContainingClassDetailsFactory.create(source),
|
containingClass = containingClass,
|
||||||
valueParameters = source.valueParameters.compactMap(CirValueParameterFactory::create),
|
valueParameters = source.valueParameters.compactMap(CirValueParameterFactory::create),
|
||||||
hasStableParameterNames = source.hasStableParameterNames(),
|
hasStableParameterNames = source.hasStableParameterNames(),
|
||||||
isPrimary = source.isPrimary
|
isPrimary = source.isPrimary
|
||||||
@@ -38,7 +38,7 @@ object CirClassConstructorFactory {
|
|||||||
annotations: List<CirAnnotation>,
|
annotations: List<CirAnnotation>,
|
||||||
typeParameters: List<CirTypeParameter>,
|
typeParameters: List<CirTypeParameter>,
|
||||||
visibility: DescriptorVisibility,
|
visibility: DescriptorVisibility,
|
||||||
containingClassDetails: CirContainingClassDetails,
|
containingClass: CirContainingClass,
|
||||||
valueParameters: List<CirValueParameter>,
|
valueParameters: List<CirValueParameter>,
|
||||||
hasStableParameterNames: Boolean,
|
hasStableParameterNames: Boolean,
|
||||||
isPrimary: Boolean
|
isPrimary: Boolean
|
||||||
@@ -47,7 +47,7 @@ object CirClassConstructorFactory {
|
|||||||
annotations = annotations,
|
annotations = annotations,
|
||||||
typeParameters = typeParameters,
|
typeParameters = typeParameters,
|
||||||
visibility = visibility,
|
visibility = visibility,
|
||||||
containingClassDetails = containingClassDetails,
|
containingClass = containingClass,
|
||||||
valueParameters = valueParameters,
|
valueParameters = valueParameters,
|
||||||
hasStableParameterNames = hasStableParameterNames,
|
hasStableParameterNames = hasStableParameterNames,
|
||||||
isPrimary = isPrimary
|
isPrimary = isPrimary
|
||||||
|
|||||||
-49
@@ -1,49 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2010-2020 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.cir.factory
|
|
||||||
|
|
||||||
import org.jetbrains.kotlin.descriptors.*
|
|
||||||
import org.jetbrains.kotlin.descriptors.commonizer.cir.CirContainingClassDetails
|
|
||||||
import org.jetbrains.kotlin.descriptors.commonizer.utils.Interner
|
|
||||||
|
|
||||||
object CirContainingClassDetailsFactory {
|
|
||||||
private val interner = Interner<CirContainingClassDetails>()
|
|
||||||
|
|
||||||
// speed optimization
|
|
||||||
val DOES_NOT_MATTER: CirContainingClassDetails = create(
|
|
||||||
kind = ClassKind.CLASS,
|
|
||||||
modality = Modality.FINAL,
|
|
||||||
isData = false
|
|
||||||
)
|
|
||||||
|
|
||||||
fun create(source: ClassConstructorDescriptor): CirContainingClassDetails = doCreate(source.containingDeclaration)
|
|
||||||
|
|
||||||
fun create(source: CallableMemberDescriptor): CirContainingClassDetails? {
|
|
||||||
val containingClass: ClassDescriptor = source.containingDeclaration as? ClassDescriptor ?: return null
|
|
||||||
return doCreate(containingClass)
|
|
||||||
}
|
|
||||||
|
|
||||||
@Suppress("NOTHING_TO_INLINE")
|
|
||||||
private inline fun doCreate(containingClass: ClassDescriptor): CirContainingClassDetails = create(
|
|
||||||
kind = containingClass.kind,
|
|
||||||
modality = containingClass.modality,
|
|
||||||
isData = containingClass.isData
|
|
||||||
)
|
|
||||||
|
|
||||||
fun create(
|
|
||||||
kind: ClassKind,
|
|
||||||
modality: Modality,
|
|
||||||
isData: Boolean
|
|
||||||
): CirContainingClassDetails {
|
|
||||||
return interner.intern(
|
|
||||||
CirContainingClassDetails(
|
|
||||||
kind = kind,
|
|
||||||
modality = modality,
|
|
||||||
isData = isData
|
|
||||||
)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
+4
-4
@@ -13,13 +13,13 @@ import org.jetbrains.kotlin.descriptors.commonizer.utils.intern
|
|||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
|
||||||
object CirFunctionFactory {
|
object CirFunctionFactory {
|
||||||
fun create(source: SimpleFunctionDescriptor): CirFunction = create(
|
fun create(source: SimpleFunctionDescriptor, containingClass: CirContainingClass?): CirFunction = create(
|
||||||
annotations = source.annotations.compactMap(CirAnnotationFactory::create),
|
annotations = source.annotations.compactMap(CirAnnotationFactory::create),
|
||||||
name = source.name.intern(),
|
name = source.name.intern(),
|
||||||
typeParameters = source.typeParameters.compactMap(CirTypeParameterFactory::create),
|
typeParameters = source.typeParameters.compactMap(CirTypeParameterFactory::create),
|
||||||
visibility = source.visibility,
|
visibility = source.visibility,
|
||||||
modality = source.modality,
|
modality = source.modality,
|
||||||
containingClassDetails = CirContainingClassDetailsFactory.create(source),
|
containingClass = containingClass,
|
||||||
valueParameters = source.valueParameters.compactMap(CirValueParameterFactory::create),
|
valueParameters = source.valueParameters.compactMap(CirValueParameterFactory::create),
|
||||||
hasStableParameterNames = source.hasStableParameterNames(),
|
hasStableParameterNames = source.hasStableParameterNames(),
|
||||||
extensionReceiver = source.extensionReceiverParameter?.let(CirExtensionReceiverFactory::create),
|
extensionReceiver = source.extensionReceiverParameter?.let(CirExtensionReceiverFactory::create),
|
||||||
@@ -35,7 +35,7 @@ object CirFunctionFactory {
|
|||||||
typeParameters: List<CirTypeParameter>,
|
typeParameters: List<CirTypeParameter>,
|
||||||
visibility: DescriptorVisibility,
|
visibility: DescriptorVisibility,
|
||||||
modality: Modality,
|
modality: Modality,
|
||||||
containingClassDetails: CirContainingClassDetails?,
|
containingClass: CirContainingClass?,
|
||||||
valueParameters: List<CirValueParameter>,
|
valueParameters: List<CirValueParameter>,
|
||||||
hasStableParameterNames: Boolean,
|
hasStableParameterNames: Boolean,
|
||||||
extensionReceiver: CirExtensionReceiver?,
|
extensionReceiver: CirExtensionReceiver?,
|
||||||
@@ -49,7 +49,7 @@ object CirFunctionFactory {
|
|||||||
typeParameters = typeParameters,
|
typeParameters = typeParameters,
|
||||||
visibility = visibility,
|
visibility = visibility,
|
||||||
modality = modality,
|
modality = modality,
|
||||||
containingClassDetails = containingClassDetails,
|
containingClass = containingClass,
|
||||||
valueParameters = valueParameters,
|
valueParameters = valueParameters,
|
||||||
hasStableParameterNames = hasStableParameterNames,
|
hasStableParameterNames = hasStableParameterNames,
|
||||||
extensionReceiver = extensionReceiver,
|
extensionReceiver = extensionReceiver,
|
||||||
|
|||||||
+4
-4
@@ -18,7 +18,7 @@ import org.jetbrains.kotlin.name.Name
|
|||||||
import org.jetbrains.kotlin.resolve.constants.ConstantValue
|
import org.jetbrains.kotlin.resolve.constants.ConstantValue
|
||||||
|
|
||||||
object CirPropertyFactory {
|
object CirPropertyFactory {
|
||||||
fun create(source: PropertyDescriptor): CirProperty {
|
fun create(source: PropertyDescriptor, containingClass: CirContainingClass?): CirProperty {
|
||||||
val compileTimeInitializer: ConstantValue<*>? = source.compileTimeInitializer
|
val compileTimeInitializer: ConstantValue<*>? = source.compileTimeInitializer
|
||||||
if (compileTimeInitializer != null) {
|
if (compileTimeInitializer != null) {
|
||||||
checkConstantSupportedInCommonization(
|
checkConstantSupportedInCommonization(
|
||||||
@@ -34,7 +34,7 @@ object CirPropertyFactory {
|
|||||||
typeParameters = source.typeParameters.compactMap(CirTypeParameterFactory::create),
|
typeParameters = source.typeParameters.compactMap(CirTypeParameterFactory::create),
|
||||||
visibility = source.visibility,
|
visibility = source.visibility,
|
||||||
modality = source.modality,
|
modality = source.modality,
|
||||||
containingClassDetails = CirContainingClassDetailsFactory.create(source),
|
containingClass = containingClass,
|
||||||
isExternal = source.isExternal,
|
isExternal = source.isExternal,
|
||||||
extensionReceiver = source.extensionReceiverParameter?.let(CirExtensionReceiverFactory::create),
|
extensionReceiver = source.extensionReceiverParameter?.let(CirExtensionReceiverFactory::create),
|
||||||
returnType = CirTypeFactory.create(source.returnType!!),
|
returnType = CirTypeFactory.create(source.returnType!!),
|
||||||
@@ -58,7 +58,7 @@ object CirPropertyFactory {
|
|||||||
typeParameters: List<CirTypeParameter>,
|
typeParameters: List<CirTypeParameter>,
|
||||||
visibility: DescriptorVisibility,
|
visibility: DescriptorVisibility,
|
||||||
modality: Modality,
|
modality: Modality,
|
||||||
containingClassDetails: CirContainingClassDetails?,
|
containingClass: CirContainingClass?,
|
||||||
isExternal: Boolean,
|
isExternal: Boolean,
|
||||||
extensionReceiver: CirExtensionReceiver?,
|
extensionReceiver: CirExtensionReceiver?,
|
||||||
returnType: CirType,
|
returnType: CirType,
|
||||||
@@ -79,7 +79,7 @@ object CirPropertyFactory {
|
|||||||
typeParameters = typeParameters,
|
typeParameters = typeParameters,
|
||||||
visibility = visibility,
|
visibility = visibility,
|
||||||
modality = modality,
|
modality = modality,
|
||||||
containingClassDetails = containingClassDetails,
|
containingClass = containingClass,
|
||||||
isExternal = isExternal,
|
isExternal = isExternal,
|
||||||
extensionReceiver = extensionReceiver,
|
extensionReceiver = extensionReceiver,
|
||||||
returnType = returnType,
|
returnType = returnType,
|
||||||
|
|||||||
+1
-1
@@ -12,7 +12,7 @@ data class CirClassConstructorImpl(
|
|||||||
override val annotations: List<CirAnnotation>,
|
override val annotations: List<CirAnnotation>,
|
||||||
override val typeParameters: List<CirTypeParameter>,
|
override val typeParameters: List<CirTypeParameter>,
|
||||||
override val visibility: DescriptorVisibility,
|
override val visibility: DescriptorVisibility,
|
||||||
override val containingClassDetails: CirContainingClassDetails,
|
override val containingClass: CirContainingClass,
|
||||||
override var valueParameters: List<CirValueParameter>,
|
override var valueParameters: List<CirValueParameter>,
|
||||||
override var hasStableParameterNames: Boolean,
|
override var hasStableParameterNames: Boolean,
|
||||||
override val isPrimary: Boolean
|
override val isPrimary: Boolean
|
||||||
|
|||||||
+1
-1
@@ -17,7 +17,7 @@ data class CirFunctionImpl(
|
|||||||
override val typeParameters: List<CirTypeParameter>,
|
override val typeParameters: List<CirTypeParameter>,
|
||||||
override val visibility: DescriptorVisibility,
|
override val visibility: DescriptorVisibility,
|
||||||
override val modality: Modality,
|
override val modality: Modality,
|
||||||
override val containingClassDetails: CirContainingClassDetails?,
|
override val containingClass: CirContainingClass?,
|
||||||
override var valueParameters: List<CirValueParameter>,
|
override var valueParameters: List<CirValueParameter>,
|
||||||
override var hasStableParameterNames: Boolean,
|
override var hasStableParameterNames: Boolean,
|
||||||
override val extensionReceiver: CirExtensionReceiver?,
|
override val extensionReceiver: CirExtensionReceiver?,
|
||||||
|
|||||||
+1
-1
@@ -18,7 +18,7 @@ data class CirPropertyImpl(
|
|||||||
override val typeParameters: List<CirTypeParameter>,
|
override val typeParameters: List<CirTypeParameter>,
|
||||||
override val visibility: DescriptorVisibility,
|
override val visibility: DescriptorVisibility,
|
||||||
override val modality: Modality,
|
override val modality: Modality,
|
||||||
override val containingClassDetails: CirContainingClassDetails?,
|
override val containingClass: CirContainingClass?,
|
||||||
override val isExternal: Boolean,
|
override val isExternal: Boolean,
|
||||||
override val extensionReceiver: CirExtensionReceiver?,
|
override val extensionReceiver: CirExtensionReceiver?,
|
||||||
override val returnType: CirType,
|
override val returnType: CirType,
|
||||||
|
|||||||
+1
-1
@@ -30,7 +30,7 @@ abstract class AbstractFunctionOrPropertyCommonizer<T : CirFunctionOrProperty>(
|
|||||||
|
|
||||||
override fun doCommonizeWith(next: T): Boolean =
|
override fun doCommonizeWith(next: T): Boolean =
|
||||||
next.kind != DELEGATION // delegated members should not be commonized
|
next.kind != DELEGATION // delegated members should not be commonized
|
||||||
&& (next.kind != SYNTHESIZED || next.containingClassDetails?.isData != true) // synthesized members of data classes should not be commonized
|
&& (next.kind != SYNTHESIZED || next.containingClass?.isData != true) // synthesized members of data classes should not be commonized
|
||||||
&& kind == next.kind
|
&& kind == next.kind
|
||||||
&& modality.commonizeWith(next.modality)
|
&& modality.commonizeWith(next.modality)
|
||||||
&& visibility.commonizeWith(next)
|
&& visibility.commonizeWith(next)
|
||||||
|
|||||||
+13
-4
@@ -5,10 +5,11 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.descriptors.commonizer.core
|
package org.jetbrains.kotlin.descriptors.commonizer.core
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.descriptors.ClassKind
|
||||||
import org.jetbrains.kotlin.descriptors.Modality
|
import org.jetbrains.kotlin.descriptors.Modality
|
||||||
import org.jetbrains.kotlin.descriptors.commonizer.cir.CirClassConstructor
|
import org.jetbrains.kotlin.descriptors.commonizer.cir.CirClassConstructor
|
||||||
|
import org.jetbrains.kotlin.descriptors.commonizer.cir.CirContainingClass
|
||||||
import org.jetbrains.kotlin.descriptors.commonizer.cir.factory.CirClassConstructorFactory
|
import org.jetbrains.kotlin.descriptors.commonizer.cir.factory.CirClassConstructorFactory
|
||||||
import org.jetbrains.kotlin.descriptors.commonizer.cir.factory.CirContainingClassDetailsFactory
|
|
||||||
import org.jetbrains.kotlin.descriptors.commonizer.mergedtree.CirKnownClassifiers
|
import org.jetbrains.kotlin.descriptors.commonizer.mergedtree.CirKnownClassifiers
|
||||||
|
|
||||||
class ClassConstructorCommonizer(
|
class ClassConstructorCommonizer(
|
||||||
@@ -27,7 +28,7 @@ class ClassConstructorCommonizer(
|
|||||||
annotations = emptyList(),
|
annotations = emptyList(),
|
||||||
typeParameters = typeParameters.result,
|
typeParameters = typeParameters.result,
|
||||||
visibility = visibility.result,
|
visibility = visibility.result,
|
||||||
containingClassDetails = CirContainingClassDetailsFactory.DOES_NOT_MATTER,
|
containingClass = CONTAINING_CLASS_DOES_NOT_MATTER, // does not matter
|
||||||
valueParameters = valueParameters.valueParameters,
|
valueParameters = valueParameters.valueParameters,
|
||||||
hasStableParameterNames = valueParameters.hasStableParameterNames,
|
hasStableParameterNames = valueParameters.hasStableParameterNames,
|
||||||
isPrimary = isPrimary
|
isPrimary = isPrimary
|
||||||
@@ -39,11 +40,19 @@ class ClassConstructorCommonizer(
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun doCommonizeWith(next: CirClassConstructor): Boolean {
|
override fun doCommonizeWith(next: CirClassConstructor): Boolean {
|
||||||
return !next.containingClassDetails.kind.isSingleton // don't commonize constructors for objects and enum entries
|
return !next.containingClass.kind.isSingleton // don't commonize constructors for objects and enum entries
|
||||||
&& next.containingClassDetails.modality != Modality.SEALED // don't commonize constructors for sealed classes (not not their subclasses)
|
&& next.containingClass.modality != Modality.SEALED // don't commonize constructors for sealed classes (not not their subclasses)
|
||||||
&& isPrimary == next.isPrimary
|
&& isPrimary == next.isPrimary
|
||||||
&& visibility.commonizeWith(next)
|
&& visibility.commonizeWith(next)
|
||||||
&& typeParameters.commonizeWith(next.typeParameters)
|
&& typeParameters.commonizeWith(next.typeParameters)
|
||||||
&& valueParameters.commonizeWith(next)
|
&& valueParameters.commonizeWith(next)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
private val CONTAINING_CLASS_DOES_NOT_MATTER = object : CirContainingClass {
|
||||||
|
override val modality get() = Modality.FINAL
|
||||||
|
override val kind get() = ClassKind.CLASS
|
||||||
|
override val isData get() = false
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -24,7 +24,7 @@ class FunctionCommonizer(classifiers: CirKnownClassifiers) : AbstractFunctionOrP
|
|||||||
typeParameters = typeParameters.result,
|
typeParameters = typeParameters.result,
|
||||||
visibility = visibility.result,
|
visibility = visibility.result,
|
||||||
modality = modality.result,
|
modality = modality.result,
|
||||||
containingClassDetails = null,
|
containingClass = null, // does not matter
|
||||||
valueParameters = valueParameters.valueParameters,
|
valueParameters = valueParameters.valueParameters,
|
||||||
hasStableParameterNames = valueParameters.hasStableParameterNames,
|
hasStableParameterNames = valueParameters.hasStableParameterNames,
|
||||||
extensionReceiver = extensionReceiver.result,
|
extensionReceiver = extensionReceiver.result,
|
||||||
|
|||||||
+1
-1
@@ -34,7 +34,7 @@ class PropertyCommonizer(classifiers: CirKnownClassifiers) : AbstractFunctionOrP
|
|||||||
typeParameters = typeParameters.result,
|
typeParameters = typeParameters.result,
|
||||||
visibility = visibility.result,
|
visibility = visibility.result,
|
||||||
modality = modality.result,
|
modality = modality.result,
|
||||||
containingClassDetails = null,
|
containingClass = null, // does not matter
|
||||||
isExternal = isExternal,
|
isExternal = isExternal,
|
||||||
extensionReceiver = extensionReceiver.result,
|
extensionReceiver = extensionReceiver.result,
|
||||||
returnType = returnType.result,
|
returnType = returnType.result,
|
||||||
|
|||||||
+12
-3
@@ -171,7 +171,10 @@ class CirTreeMerger(
|
|||||||
val propertyNode: CirPropertyNode = ownerNode.properties.getOrPut(PropertyApproximationKey(propertyDescriptor)) {
|
val propertyNode: CirPropertyNode = ownerNode.properties.getOrPut(PropertyApproximationKey(propertyDescriptor)) {
|
||||||
buildPropertyNode(storageManager, size, classifiers, (ownerNode as? CirClassNode)?.commonDeclaration)
|
buildPropertyNode(storageManager, size, classifiers, (ownerNode as? CirClassNode)?.commonDeclaration)
|
||||||
}
|
}
|
||||||
propertyNode.targetDeclarations[targetIndex] = CirPropertyFactory.create(propertyDescriptor)
|
propertyNode.targetDeclarations[targetIndex] = CirPropertyFactory.create(
|
||||||
|
source = propertyDescriptor,
|
||||||
|
containingClass = (ownerNode as? CirClassNode)?.targetDeclarations?.get(targetIndex)
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun processFunction(
|
private fun processFunction(
|
||||||
@@ -182,7 +185,10 @@ class CirTreeMerger(
|
|||||||
val functionNode: CirFunctionNode = ownerNode.functions.getOrPut(FunctionApproximationKey(functionDescriptor)) {
|
val functionNode: CirFunctionNode = ownerNode.functions.getOrPut(FunctionApproximationKey(functionDescriptor)) {
|
||||||
buildFunctionNode(storageManager, size, classifiers, (ownerNode as? CirClassNode)?.commonDeclaration)
|
buildFunctionNode(storageManager, size, classifiers, (ownerNode as? CirClassNode)?.commonDeclaration)
|
||||||
}
|
}
|
||||||
functionNode.targetDeclarations[targetIndex] = CirFunctionFactory.create(functionDescriptor)
|
functionNode.targetDeclarations[targetIndex] = CirFunctionFactory.create(
|
||||||
|
source = functionDescriptor,
|
||||||
|
containingClass = (ownerNode as? CirClassNode)?.targetDeclarations?.get(targetIndex)
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun processClass(
|
private fun processClass(
|
||||||
@@ -228,7 +234,10 @@ class CirTreeMerger(
|
|||||||
val constructorNode: CirClassConstructorNode = classNode.constructors.getOrPut(ConstructorApproximationKey(constructorDescriptor)) {
|
val constructorNode: CirClassConstructorNode = classNode.constructors.getOrPut(ConstructorApproximationKey(constructorDescriptor)) {
|
||||||
buildClassConstructorNode(storageManager, size, classifiers, classNode.commonDeclaration)
|
buildClassConstructorNode(storageManager, size, classifiers, classNode.commonDeclaration)
|
||||||
}
|
}
|
||||||
constructorNode.targetDeclarations[targetIndex] = CirClassConstructorFactory.create(constructorDescriptor)
|
constructorNode.targetDeclarations[targetIndex] = CirClassConstructorFactory.create(
|
||||||
|
source = constructorDescriptor,
|
||||||
|
containingClass = classNode.targetDeclarations[targetIndex]!!
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun processTypeAlias(
|
private fun processTypeAlias(
|
||||||
|
|||||||
+7
-7
@@ -9,9 +9,9 @@ import org.jetbrains.kotlin.descriptors.ClassKind
|
|||||||
import org.jetbrains.kotlin.descriptors.Modality
|
import org.jetbrains.kotlin.descriptors.Modality
|
||||||
import org.jetbrains.kotlin.descriptors.DescriptorVisibilities.*
|
import org.jetbrains.kotlin.descriptors.DescriptorVisibilities.*
|
||||||
import org.jetbrains.kotlin.descriptors.DescriptorVisibility
|
import org.jetbrains.kotlin.descriptors.DescriptorVisibility
|
||||||
|
import org.jetbrains.kotlin.descriptors.commonizer.cir.CirContainingClass
|
||||||
import org.jetbrains.kotlin.descriptors.commonizer.cir.CirFunctionOrProperty
|
import org.jetbrains.kotlin.descriptors.commonizer.cir.CirFunctionOrProperty
|
||||||
import org.jetbrains.kotlin.descriptors.commonizer.cir.CirHasVisibility
|
import org.jetbrains.kotlin.descriptors.commonizer.cir.CirHasVisibility
|
||||||
import org.jetbrains.kotlin.descriptors.commonizer.cir.factory.CirContainingClassDetailsFactory
|
|
||||||
import org.jetbrains.kotlin.descriptors.commonizer.cir.impl.unsupported
|
import org.jetbrains.kotlin.descriptors.commonizer.cir.impl.unsupported
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
|
|
||||||
@@ -50,12 +50,12 @@ abstract class LoweringVisibilityCommonizerTest(
|
|||||||
override val typeParameters get() = unsupported()
|
override val typeParameters get() = unsupported()
|
||||||
override val visibility = this@toMock
|
override val visibility = this@toMock
|
||||||
override val modality get() = if (areMembersVirtual) Modality.OPEN else Modality.FINAL
|
override val modality get() = if (areMembersVirtual) Modality.OPEN else Modality.FINAL
|
||||||
override val containingClassDetails = if (areMembersVirtual)
|
override val containingClass = if (areMembersVirtual)
|
||||||
CirContainingClassDetailsFactory.create(
|
object : CirContainingClass {
|
||||||
kind = ClassKind.CLASS,
|
override val modality get() = Modality.OPEN
|
||||||
modality = Modality.OPEN,
|
override val kind get() = ClassKind.CLASS
|
||||||
isData = false
|
override val isData get() = false
|
||||||
) else null
|
} else null
|
||||||
override val extensionReceiver get() = unsupported()
|
override val extensionReceiver get() = unsupported()
|
||||||
override val returnType get() = unsupported()
|
override val returnType get() = unsupported()
|
||||||
override val kind get() = unsupported()
|
override val kind get() = unsupported()
|
||||||
|
|||||||
Reference in New Issue
Block a user