[FE] Add getContextReceivers to CallableDescriptor interface

This commit is contained in:
Anastasiya Shadrina
2020-07-15 17:57:19 +07:00
committed by TeamCityServer
parent 7de8380ddf
commit a39fbd3822
61 changed files with 194 additions and 63 deletions
@@ -71,7 +71,7 @@ open class ParcelableResolveExtension : SyntheticResolveExtension {
val valueParameters = parameters.mapIndexed { index, (name, type) -> functionDescriptor.makeValueParameter(name, type, index) }
functionDescriptor.initialize(
null, classDescriptor.thisAsReceiverParameter, emptyList(), valueParameters,
null, classDescriptor.thisAsReceiverParameter, emptyList(), emptyList(), valueParameters,
returnType, modality, DescriptorVisibilities.PUBLIC)
return functionDescriptor
@@ -49,7 +49,7 @@ internal fun genClearCacheFunction(packageFragmentDescriptor: PackageFragmentDes
val unitType = packageFragmentDescriptor.builtIns.unitType
return function.initialize(
DescriptorFactory.createExtensionReceiverParameterForCallable(function, receiverType, Annotations.EMPTY),
null, emptyList(), emptyList(), unitType, Modality.FINAL, DescriptorVisibilities.PUBLIC
null, emptyList(), emptyList(), emptyList(), unitType, Modality.FINAL, DescriptorVisibilities.PUBLIC
)
}
@@ -123,7 +123,8 @@ private fun genProperty(
flexibleType,
emptyList<TypeParameterDescriptor>(),
null,
DescriptorFactory.createExtensionReceiverParameterForCallable(property, receiverType, Annotations.EMPTY)
DescriptorFactory.createExtensionReceiverParameterForCallable(property, receiverType, Annotations.EMPTY),
emptyList<ReceiverParameterDescriptor>()
)
val getter = PropertyGetterDescriptorImpl(
@@ -33,7 +33,7 @@ class SimpleSyntheticPropertyDescriptor(
private val _backingField = FieldDescriptorImpl(Annotations.EMPTY, this)
init {
super.setType(type, emptyList(), owner.thisAsReceiverParameter, null)
super.setType(type, emptyList(), owner.thisAsReceiverParameter, null, emptyList())
super.initialize(null, null, _backingField, null)
}
}
@@ -625,6 +625,7 @@ internal fun createSingletonLambda(
lambdaCodegen.descriptor.thisAsReceiverParameter,
emptyList(),
emptyList(),
emptyList(),
resultSimpleType,
Modality.FINAL,
DescriptorVisibilities.PUBLIC
@@ -647,6 +648,7 @@ internal fun createSingletonLambda(
lambdaCodegen.descriptor.thisAsReceiverParameter,
emptyList(),
emptyList(),
emptyList(),
lambdaCodegen.descriptor.builtIns.anyType,
Modality.FINAL,
DescriptorVisibilities.PUBLIC
@@ -47,7 +47,7 @@ class SerialInfoCodegenImpl(val codegen: ImplementationBodyCodegen, val thisClas
codegen.v.newField(OtherOrigin(codegen.myClass.psiOrParent), Opcodes.ACC_PRIVATE or Opcodes.ACC_FINAL or Opcodes.ACC_SYNTHETIC,
propFieldName, propType.descriptor, null, null)
val f = SimpleFunctionDescriptorImpl.create(thisClass, Annotations.EMPTY, prop.name, CallableMemberDescriptor.Kind.SYNTHESIZED, thisClass.source)
f.initialize(null, thisClass.thisAsReceiverParameter, emptyList(), emptyList(), prop.type, Modality.FINAL, DescriptorVisibilities.PUBLIC)
f.initialize(null, thisClass.thisAsReceiverParameter, emptyList(), emptyList(), emptyList(), prop.type, Modality.FINAL, DescriptorVisibilities.PUBLIC)
codegen.generateMethod(f, { _, _ ->
load(0, thisAsmType)
getfield(thisAsmType.internalName, propFieldName, propType.descriptor)
@@ -244,7 +244,8 @@ object KSerializerDescriptorResolver {
propertyFromSerializer.type,
propertyFromSerializer.typeParameters,
companionDescriptor.thisAsReceiverParameter,
extensionReceiverParameter
extensionReceiverParameter,
emptyList()
)
val propertyGetter = PropertyGetterDescriptorImpl(
@@ -277,6 +278,7 @@ object KSerializerDescriptorResolver {
functionDescriptor.initialize(
null,
companionDescriptor.thisAsReceiverParameter,
emptyList(),
functionFromSerializer.typeParameters,
functionFromSerializer.valueParameters.map { it.copy(functionDescriptor, it.name, it.index) },
functionFromSerializer.returnType,
@@ -488,6 +490,7 @@ object KSerializerDescriptorResolver {
f.initialize(
null,
thisClass.thisAsReceiverParameter,
emptyList(),
listOf(),
listOf(vararg),
kSerializerStarType,
@@ -517,7 +520,7 @@ object KSerializerDescriptorResolver {
val serialReturnType =
KotlinTypeFactory.simpleNotNullType(Annotations.EMPTY, serializerClass, listOf(TypeProjectionImpl(newSerializableType)))
f.initialize(null, thisClass.thisAsReceiverParameter, typeArgs, args, serialReturnType, Modality.FINAL, DescriptorVisibilities.PUBLIC)
f.initialize(null, thisClass.thisAsReceiverParameter, emptyList(), typeArgs, args, serialReturnType, Modality.FINAL, DescriptorVisibilities.PUBLIC)
return f
}
@@ -602,6 +605,7 @@ object KSerializerDescriptorResolver {
f.initialize(
null,
null,
emptyList(),
typeArgs,
args,
returnType,
@@ -100,6 +100,7 @@ abstract class AbstractNoArgExpressionCodegenExtension(val invokeInitializers: B
calculateDispatchReceiverParameter(),
emptyList(),
emptyList(),
emptyList(),
containingClass.builtIns.unitType,
Modality.OPEN,
DescriptorVisibilities.PUBLIC
@@ -77,7 +77,7 @@ open class ParcelizeResolveExtension : SyntheticResolveExtension {
val valueParameters = parameters.mapIndexed { index, (name, type) -> functionDescriptor.makeValueParameter(name, type, index) }
functionDescriptor.initialize(
null, classDescriptor.thisAsReceiverParameter, emptyList(), valueParameters,
null, classDescriptor.thisAsReceiverParameter, emptyList(), emptyList(), valueParameters,
returnType, modality, DescriptorVisibilities.PUBLIC
)
@@ -31,7 +31,7 @@ class ReplResultPropertyDescriptor(
/* isDelegated = */ false
) {
init {
setType(kotlinType, emptyList(), receiver, null)
setType(kotlinType, emptyList(), receiver, null, emptyList())
initialize(
null, null
)
@@ -30,7 +30,7 @@ class ScriptProvidedPropertyDescriptor(
/* isDelegated = */ false
) {
init {
setType(typeDescriptor.defaultType, emptyList(), receiver, null)
setType(typeDescriptor.defaultType, emptyList(), receiver, null, emptyList())
// TODO: consider delegation instead
initialize(null, null, null, null)
}