Introduce PropertyDescriptor.isDelegated, write new flag to metadata
#KT-8384 In Progress
This commit is contained in:
+3
@@ -83,6 +83,9 @@ public class LocalVariableDescriptor extends VariableDescriptorWithInitializerIm
|
||||
return setter;
|
||||
}
|
||||
|
||||
// This override is not deprecated because local variables can only come from sources,
|
||||
// and we can be sure that they won't be recompiled independently
|
||||
@Override
|
||||
public boolean isDelegated() {
|
||||
return isDelegated;
|
||||
}
|
||||
|
||||
@@ -833,7 +833,8 @@ public class DescriptorResolver {
|
||||
modifierList != null && modifierList.hasModifier(KtTokens.HEADER_KEYWORD) ||
|
||||
containingDeclaration instanceof ClassDescriptor && ((ClassDescriptor) containingDeclaration).isHeader(),
|
||||
modifierList != null && modifierList.hasModifier(KtTokens.IMPL_KEYWORD),
|
||||
modifierList != null && modifierList.hasModifier(KtTokens.EXTERNAL_KEYWORD)
|
||||
modifierList != null && modifierList.hasModifier(KtTokens.EXTERNAL_KEYWORD),
|
||||
property.hasDelegate()
|
||||
);
|
||||
wrapper.setDescriptor(propertyDescriptor);
|
||||
|
||||
@@ -1161,11 +1162,12 @@ public class DescriptorResolver {
|
||||
name,
|
||||
CallableMemberDescriptor.Kind.DECLARATION,
|
||||
KotlinSourceElementKt.toSourceElement(parameter),
|
||||
/* lateInit = */ false,
|
||||
/* isConst = */ false,
|
||||
/* isHeader = */ classDescriptor.isHeader(),
|
||||
/* isImpl = */ modifierList != null && modifierList.hasModifier(KtTokens.IMPL_KEYWORD),
|
||||
/* isExternal = */ false
|
||||
false,
|
||||
false,
|
||||
classDescriptor.isHeader(),
|
||||
modifierList != null && modifierList.hasModifier(KtTokens.IMPL_KEYWORD),
|
||||
false,
|
||||
false
|
||||
);
|
||||
propertyWrapper.setDescriptor(propertyDescriptor);
|
||||
propertyDescriptor.setType(type, Collections.<TypeParameterDescriptor>emptyList(),
|
||||
|
||||
@@ -148,7 +148,8 @@ class LocalVariableResolver(
|
||||
/* isConst = */ false,
|
||||
/* isHeader = */ false,
|
||||
/* isImpl = */ false,
|
||||
/* isExternal = */ false
|
||||
/* isExternal = */ false,
|
||||
variable is KtProperty && variable.hasDelegate()
|
||||
)
|
||||
// For a local variable the type must not be deferred
|
||||
type = variableTypeAndInitializerResolver.resolveType(propertyDescriptor, scope, variable, dataFlowInfo, trace, local = true)
|
||||
|
||||
@@ -100,7 +100,8 @@ class DynamicCallableDescriptors(storageManager: StorageManager, builtIns: Kotli
|
||||
/* isConst = */ false,
|
||||
/* isHeader = */ false,
|
||||
/* isImpl = */ false,
|
||||
/* isExternal = */ false
|
||||
/* isExternal = */ false,
|
||||
/* isDelegated = */ false
|
||||
)
|
||||
propertyDescriptor.setType(
|
||||
dynamicType,
|
||||
@@ -230,4 +231,3 @@ fun DeclarationDescriptor.isDynamic(): Boolean {
|
||||
val dispatchReceiverParameter = dispatchReceiverParameter
|
||||
return dispatchReceiverParameter != null && dispatchReceiverParameter.type.isDynamic()
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user