[FE] Add getContextReceivers to CallableDescriptor interface
This commit is contained in:
committed by
TeamCityServer
parent
7de8380ddf
commit
a39fbd3822
+1
-1
@@ -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(
|
||||
|
||||
+1
-1
@@ -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
|
||||
|
||||
+2
-2
@@ -16,6 +16,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.load.java.sam;
|
||||
|
||||
import kotlin.collections.CollectionsKt;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.kotlin.descriptors.*;
|
||||
import org.jetbrains.kotlin.descriptors.impl.ValueParameterDescriptorImpl;
|
||||
@@ -75,8 +76,7 @@ public class JavaSingleAbstractMethodUtils {
|
||||
@NotNull KotlinType returnType
|
||||
) {
|
||||
result.initialize(
|
||||
null,
|
||||
original.getDispatchReceiverParameter(),
|
||||
null, original.getDispatchReceiverParameter(), CollectionsKt.emptyList(),
|
||||
typeParameters,
|
||||
valueParameters,
|
||||
returnType,
|
||||
|
||||
+1
-2
@@ -88,8 +88,7 @@ public class SignaturesPropagationData {
|
||||
false
|
||||
);
|
||||
autoMethodDescriptor.initialize(
|
||||
null,
|
||||
containingClass.getThisAsReceiverParameter(),
|
||||
null, containingClass.getThisAsReceiverParameter(), CollectionsKt.emptyList(),
|
||||
autoTypeParameters,
|
||||
autoValueParameters,
|
||||
autoReturnType,
|
||||
|
||||
+1
-1
@@ -375,7 +375,7 @@ class JavaSyntheticPropertiesScope(
|
||||
val receiverType = typeSubstitutor.safeSubstitute(ownerClass.defaultType, Variance.INVARIANT)
|
||||
descriptor.setType(
|
||||
propertyType, typeParameters, null,
|
||||
DescriptorFactory.createExtensionReceiverParameterForCallable(descriptor, receiverType, Annotations.EMPTY)
|
||||
DescriptorFactory.createExtensionReceiverParameterForCallable(descriptor, receiverType, Annotations.EMPTY), emptyList()
|
||||
)
|
||||
|
||||
val getter = PropertyGetterDescriptorImpl(
|
||||
|
||||
+1
-1
@@ -338,7 +338,7 @@ class SamAdapterFunctionsScope(
|
||||
val visibility = syntheticVisibility(sourceFunction, isUsedForExtension = false)
|
||||
|
||||
descriptor.initialize(
|
||||
null, ownerClass.thisAsReceiverParameter, typeParameters, valueParameters, returnType,
|
||||
null, ownerClass.thisAsReceiverParameter, emptyList(), typeParameters, valueParameters, returnType,
|
||||
Modality.FINAL, visibility
|
||||
)
|
||||
|
||||
|
||||
+1
-1
@@ -42,7 +42,7 @@ sealed class LocalVariableAccessorDescriptor(
|
||||
val returnType =
|
||||
if (isGetter) correspondingVariable.type else correspondingVariable.builtIns.unitType
|
||||
@Suppress("LeakingThis")
|
||||
initialize(null, null, emptyList(), valueParameters, returnType, Modality.FINAL, DescriptorVisibilities.LOCAL)
|
||||
initialize(null, null, emptyList(), emptyList(), valueParameters, returnType, Modality.FINAL, DescriptorVisibilities.LOCAL)
|
||||
}
|
||||
|
||||
private fun createValueParameter(name: Name, type: KotlinType): ValueParameterDescriptorImpl {
|
||||
|
||||
@@ -52,6 +52,7 @@ object DataClassDescriptorResolver {
|
||||
functionDescriptor.initialize(
|
||||
null,
|
||||
classDescriptor.thisAsReceiverParameter,
|
||||
emptyList<ReceiverParameterDescriptor>(),
|
||||
emptyList<TypeParameterDescriptor>(),
|
||||
emptyList<ValueParameterDescriptor>(),
|
||||
property.type,
|
||||
@@ -96,6 +97,7 @@ object DataClassDescriptorResolver {
|
||||
functionDescriptor.initialize(
|
||||
null,
|
||||
classDescriptor.thisAsReceiverParameter,
|
||||
emptyList<ReceiverParameterDescriptor>(),
|
||||
emptyList<TypeParameterDescriptor>(),
|
||||
parameterDescriptors,
|
||||
classDescriptor.defaultType,
|
||||
|
||||
@@ -63,6 +63,8 @@ import org.jetbrains.kotlin.types.expressions.*;
|
||||
import org.jetbrains.kotlin.types.typeUtil.TypeUtilsKt;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import static org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget.*;
|
||||
import static org.jetbrains.kotlin.diagnostics.Errors.*;
|
||||
@@ -927,6 +929,7 @@ public class DescriptorResolver {
|
||||
LexicalScope scopeForDeclarationResolutionWithTypeParameters;
|
||||
LexicalScope scopeForInitializerResolutionWithTypeParameters;
|
||||
KotlinType receiverType = null;
|
||||
Stream<KotlinType> contextReceiverTypes;
|
||||
|
||||
{
|
||||
List<KtTypeParameter> typeParameters = variableDeclaration.getTypeParameters();
|
||||
@@ -965,6 +968,8 @@ public class DescriptorResolver {
|
||||
for (KtTypeReference contextReceiverTypeRef: contextReceiverTypeRefs) {
|
||||
typeResolver.resolveType(scopeForDeclarationResolutionWithTypeParameters, contextReceiverTypeRef, trace, true);
|
||||
}
|
||||
contextReceiverTypes = contextReceiverTypeRefs.stream()
|
||||
.map((typeRef) -> typeResolver.resolveType(scopeForDeclarationResolutionWithTypeParameters, typeRef, trace, true));
|
||||
}
|
||||
|
||||
ReceiverParameterDescriptor receiverDescriptor;
|
||||
@@ -978,6 +983,13 @@ public class DescriptorResolver {
|
||||
receiverDescriptor = null;
|
||||
}
|
||||
|
||||
List<ReceiverParameterDescriptor> contextReceiverDescriptors = contextReceiverTypes.map((type) -> {
|
||||
AnnotationSplitter splitter = new AnnotationSplitter(storageManager, type.getAnnotations(), EnumSet.of(RECEIVER));
|
||||
return DescriptorFactory.createExtensionReceiverParameterForCallable(
|
||||
propertyDescriptor, type, splitter.getAnnotationsForTarget(RECEIVER)
|
||||
);
|
||||
}).collect(Collectors.toList());
|
||||
|
||||
LexicalScope scopeForInitializer = ScopeUtils.makeScopeForPropertyInitializer(scopeForInitializerResolutionWithTypeParameters, propertyDescriptor);
|
||||
KotlinType propertyType = propertyInfo.getVariableType();
|
||||
KotlinType typeIfKnown = propertyType != null ? propertyType : variableTypeAndInitializerResolver.resolveTypeNullable(
|
||||
@@ -1006,7 +1018,8 @@ public class DescriptorResolver {
|
||||
propertyDescriptor, scopeForInitializer, variableDeclaration, dataFlowInfo, type, inferenceSession, trace
|
||||
);
|
||||
|
||||
propertyDescriptor.setType(type, typeParameterDescriptors, getDispatchReceiverParameterIfNeeded(container), receiverDescriptor);
|
||||
propertyDescriptor.setType(type, typeParameterDescriptors, getDispatchReceiverParameterIfNeeded(container), receiverDescriptor,
|
||||
contextReceiverDescriptors);
|
||||
|
||||
PropertySetterDescriptor setter = resolvePropertySetterDescriptor(
|
||||
scopeForDeclarationResolutionWithTypeParameters,
|
||||
@@ -1304,7 +1317,8 @@ public class DescriptorResolver {
|
||||
false,
|
||||
false
|
||||
);
|
||||
propertyDescriptor.setType(type, Collections.emptyList(), getDispatchReceiverParameterIfNeeded(classDescriptor), null);
|
||||
propertyDescriptor.setType(type, Collections.emptyList(), getDispatchReceiverParameterIfNeeded(classDescriptor), null,
|
||||
CollectionsKt.emptyList());
|
||||
|
||||
Annotations setterAnnotations = annotationSplitter.getAnnotationsForTarget(PROPERTY_SETTER);
|
||||
Annotations getterAnnotations = new CompositeAnnotations(CollectionsKt.listOf(
|
||||
|
||||
@@ -197,7 +197,7 @@ class FunctionDescriptorResolver(
|
||||
if (function is KtFunctionLiteral) expectedFunctionType.getReceiverType() else null
|
||||
}
|
||||
|
||||
function.contextReceiverTypeReferences.onEach {
|
||||
val contextReceiverTypes = function.contextReceiverTypeReferences.map {
|
||||
typeResolver.resolveType(headerScope, it, trace, true)
|
||||
}
|
||||
|
||||
@@ -231,10 +231,17 @@ class FunctionDescriptorResolver(
|
||||
functionDescriptor, it, splitter.getAnnotationsForTarget(AnnotationUseSiteTarget.RECEIVER)
|
||||
)
|
||||
}
|
||||
val contextReceivers = contextReceiverTypes.map {
|
||||
val splitter = AnnotationSplitter(storageManager, it.annotations, EnumSet.of(AnnotationUseSiteTarget.RECEIVER))
|
||||
DescriptorFactory.createExtensionReceiverParameterForCallable(
|
||||
functionDescriptor, it, splitter.getAnnotationsForTarget(AnnotationUseSiteTarget.RECEIVER)
|
||||
)
|
||||
}
|
||||
|
||||
functionDescriptor.initialize(
|
||||
extensionReceiver,
|
||||
getDispatchReceiverParameterIfNeeded(container),
|
||||
contextReceivers,
|
||||
typeParameterDescriptors,
|
||||
valueParameterDescriptors,
|
||||
returnType,
|
||||
|
||||
@@ -98,6 +98,7 @@ object FunctionsFromAny {
|
||||
functionDescriptor.initialize(
|
||||
null,
|
||||
classDescriptor.thisAsReceiverParameter,
|
||||
emptyList(),
|
||||
functionFromAny.typeParameters,
|
||||
functionFromAny.valueParameters.map { it.copy(functionDescriptor, it.name, it.index) },
|
||||
functionFromAny.returnType,
|
||||
|
||||
@@ -70,6 +70,7 @@ object InlineClassDescriptorResolver {
|
||||
functionDescriptor.initialize(
|
||||
null,
|
||||
null,
|
||||
emptyList<ReceiverParameterDescriptor>(),
|
||||
emptyList<TypeParameterDescriptor>(),
|
||||
createValueParametersForSpecializedEquals(functionDescriptor, owner.inlineClassRepresentation!!.underlyingType),
|
||||
owner.builtIns.booleanType,
|
||||
@@ -93,6 +94,7 @@ object InlineClassDescriptorResolver {
|
||||
functionDescriptor.initialize(
|
||||
null,
|
||||
if (isBoxMethod) null else owner.thisAsReceiverParameter,
|
||||
emptyList<ReceiverParameterDescriptor>(),
|
||||
emptyList<TypeParameterDescriptor>(),
|
||||
if (isBoxMethod) listOf(createValueParameterForBoxing(functionDescriptor, underlyingType)) else emptyList(),
|
||||
if (isBoxMethod) owner.defaultType else underlyingType,
|
||||
|
||||
@@ -186,7 +186,7 @@ class LocalVariableResolver(
|
||||
)
|
||||
|
||||
val receiverParameter = (containingDeclaration as ScriptDescriptor).thisAsReceiverParameter
|
||||
propertyDescriptor.setType(type, emptyList<TypeParameterDescriptor>(), receiverParameter, null)
|
||||
propertyDescriptor.setType(type, emptyList<TypeParameterDescriptor>(), receiverParameter, null, emptyList<ReceiverParameterDescriptor>())
|
||||
initializeWithDefaultGetterSetter(propertyDescriptor)
|
||||
trace.record(BindingContext.VARIABLE, variable, propertyDescriptor)
|
||||
result = propertyDescriptor
|
||||
|
||||
@@ -105,7 +105,8 @@ class DynamicCallableDescriptors(private val storageManager: StorageManager, bui
|
||||
dynamicType,
|
||||
createTypeParameters(propertyDescriptor, call),
|
||||
createDynamicDispatchReceiverParameter(propertyDescriptor),
|
||||
null
|
||||
null,
|
||||
emptyList()
|
||||
)
|
||||
|
||||
val getter = DescriptorFactory.createDefaultGetter(propertyDescriptor, Annotations.EMPTY)
|
||||
@@ -128,6 +129,7 @@ class DynamicCallableDescriptors(private val storageManager: StorageManager, bui
|
||||
functionDescriptor.initialize(
|
||||
null,
|
||||
createDynamicDispatchReceiverParameter(functionDescriptor),
|
||||
emptyList(),
|
||||
createTypeParameters(functionDescriptor, call),
|
||||
createValueParameters(functionDescriptor, call),
|
||||
dynamicType,
|
||||
|
||||
@@ -82,6 +82,7 @@ public class ForceResolveUtil {
|
||||
}
|
||||
else if (object instanceof CallableDescriptor) {
|
||||
CallableDescriptor callableDescriptor = (CallableDescriptor) object;
|
||||
callableDescriptor.getContextReceiverParameters().forEach(p -> forceResolveAllContents(p.getType()));
|
||||
ReceiverParameterDescriptor parameter = callableDescriptor.getExtensionReceiverParameter();
|
||||
if (parameter != null) {
|
||||
forceResolveAllContents(parameter.getType());
|
||||
|
||||
+1
-1
@@ -319,7 +319,7 @@ public class LazyClassDescriptor extends ClassDescriptorBase implements ClassDes
|
||||
CallableMemberDescriptor.Kind.SYNTHESIZED, SourceElement.NO_SOURCE
|
||||
) {
|
||||
{
|
||||
initialize(null, null, Collections.emptyList(), Collections.emptyList(),
|
||||
initialize(null, null, CollectionsKt.emptyList(), Collections.emptyList(), Collections.emptyList(),
|
||||
null, Modality.FINAL, DescriptorVisibilities.PRIVATE);
|
||||
}
|
||||
|
||||
|
||||
+1
@@ -226,6 +226,7 @@ public class ControlStructureTypingUtils {
|
||||
function.initialize(
|
||||
null,
|
||||
null,
|
||||
Collections.emptyList(),
|
||||
Lists.newArrayList(typeParameter),
|
||||
valueParameters,
|
||||
returnType,
|
||||
|
||||
+1
-1
@@ -636,7 +636,7 @@ class DoubleColonExpressionResolver(
|
||||
)
|
||||
|
||||
functionDescriptor.initialize(
|
||||
null, null, emptyList(),
|
||||
null, null, emptyList(), emptyList(),
|
||||
createValueParametersForInvokeInFunctionType(functionDescriptor, type.arguments.dropLast(1)),
|
||||
type.arguments.last().type,
|
||||
Modality.FINAL,
|
||||
|
||||
@@ -88,6 +88,7 @@ private fun copyTypesFromExtensionAccessor(
|
||||
null,
|
||||
extensionAccessorDescriptor.extensionReceiverParameter?.copy(this),
|
||||
emptyList(),
|
||||
emptyList(),
|
||||
extensionAccessorDescriptor.valueParameters.map { it.copy(this, it.name, it.index) },
|
||||
extensionAccessorDescriptor.returnType,
|
||||
accessorFunctionDescriptor.modality,
|
||||
|
||||
@@ -133,6 +133,8 @@ abstract class IrBasedCallableDescriptor<T : IrDeclaration>(owner: T) : Callable
|
||||
|
||||
override fun getDispatchReceiverParameter(): ReceiverParameterDescriptor? = null
|
||||
|
||||
override fun getContextReceiverParameters(): List<ReceiverParameterDescriptor> = emptyList()
|
||||
|
||||
override fun getTypeParameters(): List<TypeParameterDescriptor> {
|
||||
TODO("not implemented")
|
||||
}
|
||||
@@ -859,6 +861,10 @@ open class IrBasedPropertyDescriptor(owner: IrProperty) :
|
||||
override fun getExtensionReceiverParameter() =
|
||||
owner.getter?.extensionReceiverParameter?.toIrBasedDescriptor() as? ReceiverParameterDescriptor
|
||||
|
||||
override fun getContextReceiverParameters(): List<ReceiverParameterDescriptor> {
|
||||
TODO("Not yet implemented")
|
||||
}
|
||||
|
||||
override fun isExternal() = owner.isExternal
|
||||
|
||||
override fun <R : Any?, D : Any?> accept(visitor: DeclarationDescriptorVisitor<R, D>?, data: D) =
|
||||
@@ -1043,6 +1049,10 @@ open class IrBasedFieldDescriptor(owner: IrField) : PropertyDescriptor, IrBasedD
|
||||
override fun getExtensionReceiverParameter(): ReceiverParameterDescriptor? =
|
||||
owner.correspondingPropertySymbol?.owner?.toIrBasedDescriptor()?.extensionReceiverParameter
|
||||
|
||||
override fun getContextReceiverParameters(): List<ReceiverParameterDescriptor> {
|
||||
TODO("Not yet implemented")
|
||||
}
|
||||
|
||||
override fun isExternal() = owner.isExternal
|
||||
|
||||
override fun <R : Any?, D : Any?> accept(visitor: DeclarationDescriptorVisitor<R, D>?, data: D) =
|
||||
|
||||
+1
-1
@@ -155,7 +155,7 @@ class IrBuiltInsOverDescriptors(
|
||||
returnKotlinType = typeParameterDescriptor.typeConstructor.makeNonNullType()
|
||||
|
||||
initialize(
|
||||
null, null, listOf(typeParameterDescriptor), listOf(valueParameterDescriptor), returnKotlinType,
|
||||
null, null, listOf(), listOf(typeParameterDescriptor), listOf(valueParameterDescriptor), returnKotlinType,
|
||||
Modality.FINAL, DescriptorVisibilities.PUBLIC
|
||||
)
|
||||
}
|
||||
|
||||
+1
@@ -35,6 +35,7 @@ abstract class IrBuiltinOperatorDescriptorBase(containingDeclaration: Declaratio
|
||||
IrBuiltinOperatorDescriptor {
|
||||
override fun getDispatchReceiverParameter(): ReceiverParameterDescriptor? = null
|
||||
override fun getExtensionReceiverParameter(): ReceiverParameterDescriptor? = null
|
||||
override fun getContextReceiverParameters(): List<ReceiverParameterDescriptor> = emptyList()
|
||||
override fun getOriginal(): SimpleFunctionDescriptor = this
|
||||
override fun substitute(substitutor: TypeSubstitutor): FunctionDescriptor = throw UnsupportedOperationException()
|
||||
override fun getOverriddenDescriptors(): Collection<FunctionDescriptor> = emptyList()
|
||||
|
||||
@@ -67,7 +67,7 @@ abstract class IrDelegateDescriptorBase(
|
||||
/* isDelegated = */ true
|
||||
) {
|
||||
init {
|
||||
setType(delegateType, emptyList(), (containingDeclaration as? ClassDescriptor)?.thisAsReceiverParameter, null)
|
||||
setType(delegateType, emptyList(), (containingDeclaration as? ClassDescriptor)?.thisAsReceiverParameter, null, emptyList())
|
||||
}
|
||||
|
||||
final override fun setOutType(outType: KotlinType?) {
|
||||
|
||||
+2
@@ -39,6 +39,8 @@ open class FakeCallableDescriptorForObject(
|
||||
|
||||
fun getReferencedObject(): ClassDescriptor = classDescriptor.getClassObjectReferenceTarget()
|
||||
|
||||
override fun getContextReceiverParameters(): List<ReceiverParameterDescriptor> = emptyList()
|
||||
|
||||
override fun getExtensionReceiverParameter(): ReceiverParameterDescriptor? = null
|
||||
|
||||
override fun getDispatchReceiverParameter(): ReceiverParameterDescriptor? = null
|
||||
|
||||
@@ -21,7 +21,7 @@ class CloneableClassScope(
|
||||
override fun computeDeclaredFunctions(): List<FunctionDescriptor> = listOf(
|
||||
SimpleFunctionDescriptorImpl.create(containingClass, Annotations.EMPTY, CLONE_NAME, DECLARATION, SourceElement.NO_SOURCE).apply {
|
||||
initialize(
|
||||
null, containingClass.thisAsReceiverParameter, emptyList(), emptyList(), containingClass.builtIns.anyType,
|
||||
null, containingClass.thisAsReceiverParameter, emptyList(), emptyList(), emptyList(), containingClass.builtIns.anyType,
|
||||
Modality.OPEN, DescriptorVisibilities.PROTECTED
|
||||
)
|
||||
}
|
||||
|
||||
+2
-2
@@ -17,6 +17,7 @@
|
||||
package org.jetbrains.kotlin.load.java.descriptors;
|
||||
|
||||
import kotlin.Pair;
|
||||
import kotlin.collections.CollectionsKt;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.kotlin.descriptors.*;
|
||||
@@ -132,8 +133,7 @@ public class JavaClassConstructorDescriptor extends ClassConstructorDescriptorIm
|
||||
);
|
||||
// We do not use doSubstitute here as in JavaMethodDescriptor.enhance because type parameters of constructor belongs to class
|
||||
enhanced.initialize(
|
||||
enhancedReceiver,
|
||||
getDispatchReceiverParameter(),
|
||||
enhancedReceiver, getDispatchReceiverParameter(), CollectionsKt.<ReceiverParameterDescriptor>emptyList(),
|
||||
getTypeParameters(),
|
||||
UtilKt.copyValueParameters(enhancedValueParameterTypes, getValueParameters(), enhanced),
|
||||
enhancedReturnType,
|
||||
|
||||
+2
-1
@@ -93,6 +93,7 @@ public class JavaMethodDescriptor extends SimpleFunctionDescriptorImpl implement
|
||||
public SimpleFunctionDescriptorImpl initialize(
|
||||
@Nullable ReceiverParameterDescriptor extensionReceiverParameter,
|
||||
@Nullable ReceiverParameterDescriptor dispatchReceiverParameter,
|
||||
@NotNull List<ReceiverParameterDescriptor> contextReceiverParameters,
|
||||
@NotNull List<? extends TypeParameterDescriptor> typeParameters,
|
||||
@NotNull List<ValueParameterDescriptor> unsubstitutedValueParameters,
|
||||
@Nullable KotlinType unsubstitutedReturnType,
|
||||
@@ -101,7 +102,7 @@ public class JavaMethodDescriptor extends SimpleFunctionDescriptorImpl implement
|
||||
@Nullable Map<? extends UserDataKey<?>, ?> userData
|
||||
) {
|
||||
SimpleFunctionDescriptorImpl descriptor = super.initialize(
|
||||
extensionReceiverParameter, dispatchReceiverParameter, typeParameters, unsubstitutedValueParameters,
|
||||
extensionReceiverParameter, dispatchReceiverParameter, contextReceiverParameters, typeParameters, unsubstitutedValueParameters,
|
||||
unsubstitutedReturnType, modality, visibility, userData
|
||||
);
|
||||
setOperator(OperatorChecks.INSTANCE.check(descriptor).isSuccess());
|
||||
|
||||
+3
-2
@@ -17,6 +17,7 @@
|
||||
package org.jetbrains.kotlin.load.java.descriptors;
|
||||
|
||||
import kotlin.Pair;
|
||||
import kotlin.collections.CollectionsKt;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns;
|
||||
@@ -162,8 +163,8 @@ public class JavaPropertyDescriptor extends PropertyDescriptorImpl implements Ja
|
||||
enhancedReturnType,
|
||||
getTypeParameters(), // TODO
|
||||
getDispatchReceiverParameter(),
|
||||
enhancedReceiver
|
||||
);
|
||||
enhancedReceiver,
|
||||
CollectionsKt.<ReceiverParameterDescriptor>emptyList());
|
||||
return enhanced;
|
||||
}
|
||||
|
||||
|
||||
+3
-2
@@ -515,6 +515,7 @@ class LazyJavaClassMemberScope(
|
||||
getDispatchReceiverParameter(),
|
||||
emptyList(),
|
||||
emptyList(),
|
||||
emptyList(),
|
||||
returnType,
|
||||
// Those functions are generated as open in bytecode
|
||||
// Actually, it should not be important because the class is final anyway, but leaving them open is convenient for consistency
|
||||
@@ -597,7 +598,7 @@ class LazyJavaClassMemberScope(
|
||||
propertyDescriptor.initialize(getter, null)
|
||||
|
||||
val returnType = givenType ?: computeMethodReturnType(method, c.childForMethod(propertyDescriptor, method))
|
||||
propertyDescriptor.setType(returnType, listOf(), getDispatchReceiverParameter(), null)
|
||||
propertyDescriptor.setType(returnType, listOf(), getDispatchReceiverParameter(), null, listOf())
|
||||
getter.initialize(returnType)
|
||||
|
||||
return propertyDescriptor
|
||||
@@ -623,7 +624,7 @@ class LazyJavaClassMemberScope(
|
||||
|
||||
val propertyDescriptor = JavaForKotlinOverridePropertyDescriptor(ownerDescriptor, getterMethod, setterMethod, overriddenProperty)
|
||||
|
||||
propertyDescriptor.setType(getterMethod.returnType!!, listOf(), getDispatchReceiverParameter(), null)
|
||||
propertyDescriptor.setType(getterMethod.returnType!!, listOf(), getDispatchReceiverParameter(), null, listOf())
|
||||
|
||||
val getter = DescriptorFactory.createGetter(
|
||||
propertyDescriptor, getterMethod.annotations, /* isDefault = */false,
|
||||
|
||||
+8
-1
@@ -174,6 +174,7 @@ abstract class LazyJavaScope(
|
||||
DescriptorFactory.createExtensionReceiverParameterForCallable(functionDescriptorImpl, it, Annotations.EMPTY)
|
||||
},
|
||||
getDispatchReceiverParameter(),
|
||||
emptyList(),
|
||||
effectiveSignature.typeParameters,
|
||||
effectiveSignature.valueParameters,
|
||||
effectiveSignature.returnType,
|
||||
@@ -297,7 +298,13 @@ abstract class LazyJavaScope(
|
||||
|
||||
val propertyType = getPropertyType(field)
|
||||
|
||||
propertyDescriptor.setType(propertyType, listOf(), getDispatchReceiverParameter(), null)
|
||||
propertyDescriptor.setType(
|
||||
propertyType,
|
||||
listOf(),
|
||||
getDispatchReceiverParameter(),
|
||||
null,
|
||||
emptyList()
|
||||
)
|
||||
|
||||
if (DescriptorUtils.shouldRecordInitializerForProperty(propertyDescriptor, propertyDescriptor.type)) {
|
||||
propertyDescriptor.setCompileTimeInitializer(
|
||||
|
||||
+1
-1
@@ -115,7 +115,7 @@ class FunctionInvokeDescriptor private constructor(
|
||||
result.initialize(
|
||||
null,
|
||||
functionClass.thisAsReceiverParameter,
|
||||
listOf(),
|
||||
listOf(), listOf(),
|
||||
typeParameters.takeWhile { it.variance == Variance.IN_VARIANCE }
|
||||
.withIndex()
|
||||
.map { createValueParameter(result, it.index, it.value) },
|
||||
|
||||
@@ -26,6 +26,10 @@ import java.util.List;
|
||||
|
||||
public interface CallableDescriptor extends DeclarationDescriptorWithVisibility, DeclarationDescriptorNonRoot,
|
||||
Substitutable<CallableDescriptor> {
|
||||
@NotNull
|
||||
@ReadOnly
|
||||
List<ReceiverParameterDescriptor> getContextReceiverParameters();
|
||||
|
||||
@Nullable
|
||||
ReceiverParameterDescriptor getExtensionReceiverParameter();
|
||||
|
||||
|
||||
+6
@@ -65,6 +65,12 @@ public abstract class AbstractReceiverParameterDescriptor extends DeclarationDes
|
||||
return visitor.visitReceiverParameterDescriptor(this, data);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public List<ReceiverParameterDescriptor> getContextReceiverParameters() {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public ReceiverParameterDescriptor getExtensionReceiverParameter() {
|
||||
|
||||
+1
-1
@@ -70,7 +70,7 @@ public class ClassConstructorDescriptorImpl extends FunctionDescriptorImpl imple
|
||||
@NotNull List<TypeParameterDescriptor> typeParameterDescriptors
|
||||
) {
|
||||
super.initialize(
|
||||
null, calculateDispatchReceiverParameter(),
|
||||
null, calculateDispatchReceiverParameter(), Collections.<ReceiverParameterDescriptor>emptyList(),
|
||||
typeParameterDescriptors,
|
||||
unsubstitutedValueParameters, null,
|
||||
Modality.FINAL, visibility);
|
||||
|
||||
+11
-2
@@ -23,6 +23,7 @@ public abstract class FunctionDescriptorImpl extends DeclarationDescriptorNonRoo
|
||||
private List<TypeParameterDescriptor> typeParameters;
|
||||
private List<ValueParameterDescriptor> unsubstitutedValueParameters;
|
||||
private KotlinType unsubstitutedReturnType;
|
||||
private List<ReceiverParameterDescriptor> contextReceiverParameters;
|
||||
private ReceiverParameterDescriptor extensionReceiverParameter;
|
||||
private ReceiverParameterDescriptor dispatchReceiverParameter;
|
||||
private Modality modality;
|
||||
@@ -68,6 +69,7 @@ public abstract class FunctionDescriptorImpl extends DeclarationDescriptorNonRoo
|
||||
public FunctionDescriptorImpl initialize(
|
||||
@Nullable ReceiverParameterDescriptor extensionReceiverParameter,
|
||||
@Nullable ReceiverParameterDescriptor dispatchReceiverParameter,
|
||||
@NotNull List<ReceiverParameterDescriptor> contextReceiverParameters,
|
||||
@NotNull List<? extends TypeParameterDescriptor> typeParameters,
|
||||
@NotNull List<ValueParameterDescriptor> unsubstitutedValueParameters,
|
||||
@Nullable KotlinType unsubstitutedReturnType,
|
||||
@@ -81,6 +83,7 @@ public abstract class FunctionDescriptorImpl extends DeclarationDescriptorNonRoo
|
||||
this.visibility = visibility;
|
||||
this.extensionReceiverParameter = extensionReceiverParameter;
|
||||
this.dispatchReceiverParameter = dispatchReceiverParameter;
|
||||
this.contextReceiverParameters = contextReceiverParameters;
|
||||
|
||||
for (int i = 0; i < typeParameters.size(); ++i) {
|
||||
TypeParameterDescriptor typeParameterDescriptor = typeParameters.get(i);
|
||||
@@ -165,6 +168,12 @@ public abstract class FunctionDescriptorImpl extends DeclarationDescriptorNonRoo
|
||||
this.extensionReceiverParameter = extensionReceiverParameter;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public List<ReceiverParameterDescriptor> getContextReceiverParameters() {
|
||||
return contextReceiverParameters;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public ReceiverParameterDescriptor getExtensionReceiverParameter() {
|
||||
@@ -663,9 +672,9 @@ public abstract class FunctionDescriptorImpl extends DeclarationDescriptorNonRoo
|
||||
return this;
|
||||
}
|
||||
|
||||
// TODO: Substitute context receivers
|
||||
substitutedDescriptor.initialize(
|
||||
substitutedReceiverParameter,
|
||||
substitutedExpectedThis,
|
||||
substitutedReceiverParameter, substitutedExpectedThis, CollectionsKt.<ReceiverParameterDescriptor>emptyList(),
|
||||
substitutedTypeParameters,
|
||||
substitutedValueParameters,
|
||||
substitutedReturnType,
|
||||
|
||||
+6
@@ -166,6 +166,12 @@ public abstract class PropertyAccessorDescriptorImpl extends DeclarationDescript
|
||||
return correspondingProperty;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public List<ReceiverParameterDescriptor> getContextReceiverParameters() {
|
||||
return getCorrespondingProperty().getContextReceiverParameters();
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public ReceiverParameterDescriptor getExtensionReceiverParameter() {
|
||||
|
||||
+38
-11
@@ -17,6 +17,7 @@
|
||||
package org.jetbrains.kotlin.descriptors.impl;
|
||||
|
||||
import kotlin.annotations.jvm.ReadOnly;
|
||||
import kotlin.collections.CollectionsKt;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.kotlin.descriptors.*;
|
||||
@@ -47,6 +48,7 @@ public class PropertyDescriptorImpl extends VariableDescriptorWithInitializerImp
|
||||
private final boolean isExternal;
|
||||
private final boolean isDelegated;
|
||||
|
||||
private List<ReceiverParameterDescriptor> contextReceiverParameters = Collections.emptyList();
|
||||
private ReceiverParameterDescriptor dispatchReceiverParameter;
|
||||
private ReceiverParameterDescriptor extensionReceiverParameter;
|
||||
private List<TypeParameterDescriptor> typeParameters;
|
||||
@@ -121,7 +123,8 @@ public class PropertyDescriptorImpl extends VariableDescriptorWithInitializerImp
|
||||
@NotNull KotlinType outType,
|
||||
@ReadOnly @NotNull List<? extends TypeParameterDescriptor> typeParameters,
|
||||
@Nullable ReceiverParameterDescriptor dispatchReceiverParameter,
|
||||
@Nullable ReceiverParameterDescriptor extensionReceiverParameter
|
||||
@Nullable ReceiverParameterDescriptor extensionReceiverParameter,
|
||||
@NotNull List<ReceiverParameterDescriptor> contextReceiverParameters
|
||||
) {
|
||||
setOutType(outType);
|
||||
|
||||
@@ -129,6 +132,7 @@ public class PropertyDescriptorImpl extends VariableDescriptorWithInitializerImp
|
||||
|
||||
this.extensionReceiverParameter = extensionReceiverParameter;
|
||||
this.dispatchReceiverParameter = dispatchReceiverParameter;
|
||||
this.contextReceiverParameters = contextReceiverParameters;
|
||||
}
|
||||
|
||||
public void initialize(
|
||||
@@ -169,6 +173,12 @@ public class PropertyDescriptorImpl extends VariableDescriptorWithInitializerImp
|
||||
return parameters;
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
public List<ReceiverParameterDescriptor> getContextReceiverParameters() {
|
||||
return contextReceiverParameters;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Nullable
|
||||
public ReceiverParameterDescriptor getExtensionReceiverParameter() {
|
||||
@@ -427,19 +437,22 @@ public class PropertyDescriptorImpl extends VariableDescriptorWithInitializerImp
|
||||
|
||||
ReceiverParameterDescriptor substitutedExtensionReceiver;
|
||||
if (extensionReceiverParameter != null) {
|
||||
KotlinType substitutedReceiverType = substitutor.substitute(extensionReceiverParameter.getType(), Variance.IN_VARIANCE);
|
||||
if (substitutedReceiverType == null) return null;
|
||||
substitutedExtensionReceiver = new ReceiverParameterDescriptorImpl(
|
||||
substitutedDescriptor,
|
||||
new ExtensionReceiver(substitutedDescriptor, substitutedReceiverType, extensionReceiverParameter.getValue()),
|
||||
extensionReceiverParameter.getAnnotations()
|
||||
);
|
||||
}
|
||||
else {
|
||||
substitutedExtensionReceiver = substituteParameterDescriptor(substitutor, substitutedDescriptor, extensionReceiverParameter);
|
||||
} else {
|
||||
substitutedExtensionReceiver = null;
|
||||
}
|
||||
|
||||
substitutedDescriptor.setType(outType, substitutedTypeParameters, substitutedDispatchReceiver, substitutedExtensionReceiver);
|
||||
List<ReceiverParameterDescriptor> substitutedContextReceivers = new ArrayList<ReceiverParameterDescriptor>();
|
||||
for (ReceiverParameterDescriptor contextReceiverParameter: contextReceiverParameters) {
|
||||
ReceiverParameterDescriptor substitutedContextReceiver = substituteParameterDescriptor(substitutor, substitutedDescriptor,
|
||||
contextReceiverParameter);
|
||||
if (substitutedContextReceiver != null) {
|
||||
substitutedContextReceivers.add(substitutedContextReceiver);
|
||||
}
|
||||
}
|
||||
|
||||
substitutedDescriptor.setType(outType, substitutedTypeParameters, substitutedDispatchReceiver, substitutedExtensionReceiver,
|
||||
substitutedContextReceivers);
|
||||
|
||||
PropertyGetterDescriptorImpl newGetter = getter == null ? null : new PropertyGetterDescriptorImpl(
|
||||
substitutedDescriptor, getter.getAnnotations(), copyConfiguration.modality, normalizeVisibility(getter.getVisibility(), copyConfiguration.kind),
|
||||
@@ -514,6 +527,20 @@ public class PropertyDescriptorImpl extends VariableDescriptorWithInitializerImp
|
||||
return prev;
|
||||
}
|
||||
|
||||
private static ReceiverParameterDescriptor substituteParameterDescriptor(
|
||||
TypeSubstitutor substitutor,
|
||||
PropertyDescriptor substitutedPropertyDescriptor,
|
||||
ReceiverParameterDescriptor receiverParameterDescriptor
|
||||
) {
|
||||
KotlinType substitutedType = substitutor.substitute(receiverParameterDescriptor.getType(), Variance.IN_VARIANCE);
|
||||
if (substitutedType == null) return null;
|
||||
return new ReceiverParameterDescriptorImpl(
|
||||
substitutedPropertyDescriptor,
|
||||
new ExtensionReceiver(substitutedPropertyDescriptor, substitutedType, receiverParameterDescriptor.getValue()),
|
||||
receiverParameterDescriptor.getAnnotations()
|
||||
);
|
||||
}
|
||||
|
||||
private static FunctionDescriptor getSubstitutedInitialSignatureDescriptor(
|
||||
@NotNull TypeSubstitutor substitutor,
|
||||
@NotNull PropertyAccessorDescriptor accessorDescriptor
|
||||
|
||||
+4
-2
@@ -55,13 +55,14 @@ public class SimpleFunctionDescriptorImpl extends FunctionDescriptorImpl impleme
|
||||
public SimpleFunctionDescriptorImpl initialize(
|
||||
@Nullable ReceiverParameterDescriptor extensionReceiverParameter,
|
||||
@Nullable ReceiverParameterDescriptor dispatchReceiverParameter,
|
||||
@NotNull List<ReceiverParameterDescriptor> contextReceiverParameters,
|
||||
@NotNull List<? extends TypeParameterDescriptor> typeParameters,
|
||||
@NotNull List<ValueParameterDescriptor> unsubstitutedValueParameters,
|
||||
@Nullable KotlinType unsubstitutedReturnType,
|
||||
@Nullable Modality modality,
|
||||
@NotNull DescriptorVisibility visibility
|
||||
) {
|
||||
return initialize(extensionReceiverParameter, dispatchReceiverParameter, typeParameters, unsubstitutedValueParameters,
|
||||
return initialize(extensionReceiverParameter, dispatchReceiverParameter, contextReceiverParameters, typeParameters, unsubstitutedValueParameters,
|
||||
unsubstitutedReturnType, modality, visibility, null);
|
||||
}
|
||||
|
||||
@@ -69,6 +70,7 @@ public class SimpleFunctionDescriptorImpl extends FunctionDescriptorImpl impleme
|
||||
public SimpleFunctionDescriptorImpl initialize(
|
||||
@Nullable ReceiverParameterDescriptor extensionReceiverParameter,
|
||||
@Nullable ReceiverParameterDescriptor dispatchReceiverParameter,
|
||||
@NotNull List<ReceiverParameterDescriptor> contextReceiverParameters,
|
||||
@NotNull List<? extends TypeParameterDescriptor> typeParameters,
|
||||
@NotNull List<ValueParameterDescriptor> unsubstitutedValueParameters,
|
||||
@Nullable KotlinType unsubstitutedReturnType,
|
||||
@@ -76,7 +78,7 @@ public class SimpleFunctionDescriptorImpl extends FunctionDescriptorImpl impleme
|
||||
@NotNull DescriptorVisibility visibility,
|
||||
@Nullable Map<? extends UserDataKey<?>, ?> userData
|
||||
) {
|
||||
super.initialize(extensionReceiverParameter, dispatchReceiverParameter, typeParameters, unsubstitutedValueParameters,
|
||||
super.initialize(extensionReceiverParameter, dispatchReceiverParameter, contextReceiverParameters, typeParameters, unsubstitutedValueParameters,
|
||||
unsubstitutedReturnType, modality, visibility);
|
||||
|
||||
if (userData != null && !userData.isEmpty()) {
|
||||
|
||||
+2
@@ -83,6 +83,7 @@ class TypeAliasConstructorDescriptorImpl private constructor(
|
||||
typeAliasConstructor.initialize(
|
||||
null,
|
||||
underlyingConstructorDescriptor.dispatchReceiverParameter?.substitute(substitutorForUnderlyingClass),
|
||||
emptyList(),
|
||||
typeAliasDescriptor.declaredTypeParameters,
|
||||
valueParameters,
|
||||
returnType,
|
||||
@@ -205,6 +206,7 @@ class TypeAliasConstructorDescriptorImpl private constructor(
|
||||
typeAliasConstructor.initialize(
|
||||
receiverParameter,
|
||||
null,
|
||||
emptyList(),
|
||||
typeAliasDescriptor.declaredTypeParameters,
|
||||
valueParameters,
|
||||
returnType,
|
||||
|
||||
@@ -88,6 +88,12 @@ public abstract class VariableDescriptorImpl extends DeclarationDescriptorNonRoo
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public List<ReceiverParameterDescriptor> getContextReceiverParameters() {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReceiverParameterDescriptor getExtensionReceiverParameter() {
|
||||
return null;
|
||||
|
||||
@@ -146,7 +146,7 @@ public class DescriptorFactory {
|
||||
SimpleFunctionDescriptorImpl values =
|
||||
SimpleFunctionDescriptorImpl.create(enumClass, Annotations.Companion.getEMPTY(), ENUM_VALUES,
|
||||
CallableMemberDescriptor.Kind.SYNTHESIZED, enumClass.getSource());
|
||||
return values.initialize(null, null, Collections.<TypeParameterDescriptor>emptyList(),
|
||||
return values.initialize(null, null, Collections.<ReceiverParameterDescriptor>emptyList(), Collections.<TypeParameterDescriptor>emptyList(),
|
||||
Collections.<ValueParameterDescriptor>emptyList(),
|
||||
getBuiltIns(enumClass).getArrayType(Variance.INVARIANT, enumClass.getDefaultType()),
|
||||
Modality.FINAL, DescriptorVisibilities.PUBLIC);
|
||||
@@ -165,7 +165,7 @@ public class DescriptorFactory {
|
||||
null,
|
||||
enumClass.getSource()
|
||||
);
|
||||
return valueOf.initialize(null, null, Collections.<TypeParameterDescriptor>emptyList(),
|
||||
return valueOf.initialize(null, null, Collections.<ReceiverParameterDescriptor>emptyList(), Collections.<TypeParameterDescriptor>emptyList(),
|
||||
Collections.singletonList(parameterDescriptor), enumClass.getDefaultType(),
|
||||
Modality.FINAL, DescriptorVisibilities.PUBLIC);
|
||||
}
|
||||
|
||||
@@ -99,6 +99,7 @@ private fun initializeSamConstructorDescriptor(
|
||||
samConstructor.initialize(
|
||||
null,
|
||||
null,
|
||||
emptyList(),
|
||||
typeParameters.descriptors, listOf(parameter),
|
||||
returnType,
|
||||
Modality.FINAL,
|
||||
|
||||
@@ -429,7 +429,8 @@ public class ErrorUtils {
|
||||
SourceElement.NO_SOURCE,
|
||||
false, false, false, false, false, false
|
||||
);
|
||||
descriptor.setType(ERROR_PROPERTY_TYPE, Collections.<TypeParameterDescriptor>emptyList(), null, null);
|
||||
descriptor.setType(ERROR_PROPERTY_TYPE, Collections.<TypeParameterDescriptor>emptyList(), null, null,
|
||||
Collections.<ReceiverParameterDescriptor>emptyList());
|
||||
|
||||
return descriptor;
|
||||
}
|
||||
@@ -438,8 +439,7 @@ public class ErrorUtils {
|
||||
private static SimpleFunctionDescriptor createErrorFunction(@NotNull ErrorScope ownerScope) {
|
||||
ErrorSimpleFunctionDescriptorImpl function = new ErrorSimpleFunctionDescriptorImpl(ERROR_CLASS, ownerScope);
|
||||
function.initialize(
|
||||
null,
|
||||
null,
|
||||
null, null, Collections.<ReceiverParameterDescriptor>emptyList(),
|
||||
Collections.<TypeParameterDescriptorImpl>emptyList(), // TODO
|
||||
Collections.<ValueParameterDescriptor>emptyList(), // TODO
|
||||
createErrorType("<ERROR FUNCTION RETURN TYPE>"),
|
||||
|
||||
+3
-1
@@ -59,7 +59,8 @@ class MemberDeserializer(private val c: DeserializationContext) {
|
||||
getDispatchReceiverParameter(),
|
||||
proto.receiverType(c.typeTable)?.let(local.typeDeserializer::type)?.let { receiverType ->
|
||||
DescriptorFactory.createExtensionReceiverParameterForCallable(property, receiverType, receiverAnnotations)
|
||||
}
|
||||
},
|
||||
emptyList()
|
||||
)
|
||||
|
||||
// Per documentation on Property.getter_flags in metadata.proto, if an accessor flags field is absent, its value should be computed
|
||||
@@ -161,6 +162,7 @@ class MemberDeserializer(private val c: DeserializationContext) {
|
||||
initialize(
|
||||
extensionReceiverParameter,
|
||||
dispatchReceiverParameter,
|
||||
emptyList(), // TODO
|
||||
typeParameters,
|
||||
unsubstitutedValueParameters,
|
||||
unsubstitutedReturnType,
|
||||
|
||||
+1
-1
@@ -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
|
||||
|
||||
+3
-2
@@ -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(
|
||||
|
||||
+1
-1
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
+2
@@ -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
|
||||
|
||||
+1
-1
@@ -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)
|
||||
|
||||
+6
-2
@@ -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
|
||||
|
||||
+1
-1
@@ -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
|
||||
)
|
||||
|
||||
|
||||
+1
-1
@@ -31,7 +31,7 @@ class ReplResultPropertyDescriptor(
|
||||
/* isDelegated = */ false
|
||||
) {
|
||||
init {
|
||||
setType(kotlinType, emptyList(), receiver, null)
|
||||
setType(kotlinType, emptyList(), receiver, null, emptyList())
|
||||
initialize(
|
||||
null, null
|
||||
)
|
||||
|
||||
+1
-1
@@ -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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user