[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
@@ -24,7 +24,7 @@ class AccessorForCompanionObjectInstanceFieldDescriptor(
init {
initialize(
null, null, emptyList(), emptyList(),
null, null, emptyList(), emptyList(), emptyList(),
companionObjectDescriptor.defaultType,
Modality.FINAL,
DescriptorVisibilities.LOCAL
@@ -57,6 +57,7 @@ class AccessorForConstructorDescriptor(
initialize(
calleeDescriptor.extensionReceiverParameter?.copy(this),
calleeDescriptor.dispatchReceiverParameter,
calleeDescriptor.contextReceiverParameters.map { p -> p.copy(this) },
copyTypeParameters(calleeDescriptor),
copyValueParameters(calleeDescriptor),
calleeDescriptor.returnType,
@@ -39,6 +39,7 @@ class AccessorForFunctionDescriptor(
null
else
calleeDescriptor.dispatchReceiverParameter,
calleeDescriptor.contextReceiverParameters.map { p -> p.copy(this) },
copyTypeParameters(calleeDescriptor),
copyValueParameters(calleeDescriptor),
calleeDescriptor.returnType,
@@ -98,7 +98,7 @@ open class AccessorForPropertyDescriptor private constructor(
init {
setType(
propertyType, emptyList<TypeParameterDescriptorImpl>(), dispatchReceiverParameter,
DescriptorFactory.createExtensionReceiverParameterForCallable(this, receiverType, Annotations.EMPTY)
DescriptorFactory.createExtensionReceiverParameterForCallable(this, receiverType, Annotations.EMPTY), emptyList() // TODO: Pass context receivers
)
val getterDescriptor =
@@ -261,6 +261,7 @@ public class ClosureCodegen extends MemberCodegen<KtElement> {
descriptorForBridges
.initialize(erasedInterfaceFunction.getExtensionReceiverParameter(), erasedInterfaceFunction.getDispatchReceiverParameter(),
erasedInterfaceFunction.getContextReceiverParameters(),
erasedInterfaceFunction.getTypeParameters(), erasedInterfaceFunction.getValueParameters(),
erasedInterfaceFunction.getReturnType(), Modality.OPEN, erasedInterfaceFunction.getVisibility());
@@ -487,7 +487,7 @@ public abstract class MemberCodegen<T extends KtPureElement/* TODO: & KtDeclarat
private SimpleFunctionDescriptorImpl createClInitFunctionDescriptor(@NotNull DeclarationDescriptor descriptor) {
SimpleFunctionDescriptorImpl clInit = SimpleFunctionDescriptorImpl.create(descriptor, Annotations.Companion.getEMPTY(),
Name.special("<clinit>"), SYNTHESIZED, KotlinSourceElementKt.toSourceElement(element));
clInit.initialize(null, null, Collections.emptyList(), Collections.emptyList(),
clInit.initialize(null, null, Collections.emptyList(), Collections.emptyList(), Collections.emptyList(),
DescriptorUtilsKt.getModule(descriptor).getBuiltIns().getUnitType(),
Modality.FINAL, DescriptorVisibilities.PRIVATE);
return clInit;
@@ -73,6 +73,7 @@ abstract class AbstractCoroutineCodegen(
null,
classDescriptor.thisAsReceiverParameter,
emptyList(),
emptyList(),
listOf(
ValueParameterDescriptorImpl(
this, null, 0, Annotations.EMPTY, Name.identifier(SUSPEND_CALL_RESULT_NAME),
@@ -188,6 +189,7 @@ class CoroutineCodegenForLambda private constructor(
it.initialize(
funDescriptor.extensionReceiverParameter?.copy(it),
funDescriptor.dispatchReceiverParameter,
funDescriptor.contextReceiverParameters.map { p -> p.copy(it) },
funDescriptor.typeParameters,
funDescriptor.valueParameters,
funDescriptor.module.getContinuationOfTypeOrAny(
@@ -132,7 +132,7 @@ fun createFreeFakeLocalPropertyDescriptor(descriptor: LocalVariableDescriptor, t
)
property.setType(
descriptor.type, descriptor.typeParameters,
descriptor.dispatchReceiverParameter, descriptor.extensionReceiverParameter
descriptor.dispatchReceiverParameter, descriptor.extensionReceiverParameter, descriptor.contextReceiverParameters
)
property.initialize(
@@ -30,7 +30,7 @@ internal class FictitiousArrayConstructor(arrayClass: ClassDescriptor) : SimpleF
val arrayClass = arrayConstructor.constructedClass
return FictitiousArrayConstructor(arrayClass).apply {
this.initialize(
null, null, arrayConstructor.typeParameters, arrayConstructor.valueParameters, arrayClass.defaultType,
null, null, emptyList<ReceiverParameterDescriptor>(), arrayConstructor.typeParameters, arrayConstructor.valueParameters, arrayClass.defaultType,
Modality.FINAL, DescriptorVisibilities.PUBLIC
)
this.isInline = true