Cleanup type enhancement, remove ValueParameterData

`ValueParameterData.hasDefaultValue` is now always equal to the original
value parameter's `declaresDefaultValue` flag, so `ValueParameterData`
usages can be simplified to just `KotlinType`.
This commit is contained in:
Alexander Udalov
2021-09-07 00:29:05 +02:00
parent 7e43000d9b
commit 5dbf5b1d45
7 changed files with 21 additions and 25 deletions
@@ -28,7 +28,7 @@ public interface JavaCallableMemberDescriptor extends CallableMemberDescriptor {
@NotNull
JavaCallableMemberDescriptor enhance(
@Nullable KotlinType enhancedReceiverType,
@NotNull List<ValueParameterData> enhancedValueParametersData,
@NotNull List<KotlinType> enhancedValueParameterTypes,
@NotNull KotlinType enhancedReturnType,
@Nullable Pair<UserDataKey<?>, ?> additionalUserData
);
@@ -119,7 +119,7 @@ public class JavaClassConstructorDescriptor extends ClassConstructorDescriptorIm
@NotNull
public JavaClassConstructorDescriptor enhance(
@Nullable KotlinType enhancedReceiverType,
@NotNull List<ValueParameterData> enhancedValueParametersData,
@NotNull List<KotlinType> enhancedValueParameterTypes,
@NotNull KotlinType enhancedReturnType,
@Nullable Pair<UserDataKey<?>, ?> additionalUserData
) {
@@ -135,7 +135,7 @@ public class JavaClassConstructorDescriptor extends ClassConstructorDescriptorIm
enhancedReceiver,
getDispatchReceiverParameter(),
getTypeParameters(),
UtilKt.copyValueParameters(enhancedValueParametersData, getValueParameters(), enhanced),
UtilKt.copyValueParameters(enhancedValueParameterTypes, getValueParameters(), enhanced),
enhancedReturnType,
getModality(),
getVisibility()
@@ -153,12 +153,12 @@ public class JavaMethodDescriptor extends SimpleFunctionDescriptorImpl implement
@NotNull
public JavaMethodDescriptor enhance(
@Nullable KotlinType enhancedReceiverType,
@NotNull List<ValueParameterData> enhancedValueParametersData,
@NotNull List<KotlinType> enhancedValueParameterTypes,
@NotNull KotlinType enhancedReturnType,
@Nullable Pair<UserDataKey<?>, ?> additionalUserData
) {
List<ValueParameterDescriptor> enhancedValueParameters =
UtilKt.copyValueParameters(enhancedValueParametersData, getValueParameters(), this);
UtilKt.copyValueParameters(enhancedValueParameterTypes, getValueParameters(), this);
ReceiverParameterDescriptor enhancedReceiver =
enhancedReceiverType == null ? null : DescriptorFactory.createExtensionReceiverParameterForCallable(
@@ -174,7 +174,7 @@ public class JavaMethodDescriptor extends SimpleFunctionDescriptorImpl implement
.setPreserveSourceElement()
.build();
assert enhancedMethod != null : "null after substitution while enhancing " + toString();
assert enhancedMethod != null : "null after substitution while enhancing " + this;
if (additionalUserData != null) {
enhancedMethod.putInUserDataMap(additionalUserData.getFirst(), additionalUserData.getSecond());
@@ -99,7 +99,7 @@ public class JavaPropertyDescriptor extends PropertyDescriptorImpl implements Ja
@Override
public JavaCallableMemberDescriptor enhance(
@Nullable KotlinType enhancedReceiverType,
@NotNull List<ValueParameterData> enhancedValueParametersData,
@NotNull List<KotlinType> enhancedValueParameterTypes,
@NotNull KotlinType enhancedReturnType,
@Nullable Pair<UserDataKey<?>, ?> additionalUserData
) {
@@ -28,29 +28,27 @@ import org.jetbrains.kotlin.resolve.jvm.JvmClassName
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DescriptorWithContainerSource
import org.jetbrains.kotlin.types.KotlinType
class ValueParameterData(val type: KotlinType, val hasDefaultValue: Boolean)
fun copyValueParameters(
newValueParametersTypes: Collection<ValueParameterData>,
newValueParameterTypes: Collection<KotlinType>,
oldValueParameters: Collection<ValueParameterDescriptor>,
newOwner: CallableDescriptor
): List<ValueParameterDescriptor> {
assert(newValueParametersTypes.size == oldValueParameters.size) {
"Different value parameters sizes: Enhanced = ${newValueParametersTypes.size}, Old = ${oldValueParameters.size}"
assert(newValueParameterTypes.size == oldValueParameters.size) {
"Different value parameters sizes: Enhanced = ${newValueParameterTypes.size}, Old = ${oldValueParameters.size}"
}
return newValueParametersTypes.zip(oldValueParameters).map { (newParameter, oldParameter) ->
return newValueParameterTypes.zip(oldValueParameters).map { (newParameterType, oldParameter) ->
ValueParameterDescriptorImpl(
newOwner,
null,
oldParameter.index,
oldParameter.annotations,
oldParameter.name,
newParameter.type,
newParameter.hasDefaultValue,
newParameterType,
oldParameter.declaresDefaultValue(),
oldParameter.isCrossinline,
oldParameter.isNoinline,
if (oldParameter.varargElementType != null) newOwner.module.builtIns.getArrayElementType(newParameter.type) else null,
if (oldParameter.varargElementType != null) newOwner.module.builtIns.getArrayElementType(newParameterType) else null,
oldParameter.source
)
}
@@ -52,9 +52,9 @@ import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter
import org.jetbrains.kotlin.serialization.deserialization.ErrorReporter
import org.jetbrains.kotlin.storage.NotNullLazyValue
import org.jetbrains.kotlin.types.KotlinType
import org.jetbrains.kotlin.types.TypeRefinement
import org.jetbrains.kotlin.types.TypeUtils
import org.jetbrains.kotlin.types.checker.KotlinTypeChecker
import org.jetbrains.kotlin.types.TypeRefinement
import org.jetbrains.kotlin.utils.SmartSet
import org.jetbrains.kotlin.utils.addIfNotNull
import org.jetbrains.kotlin.utils.ifEmpty
@@ -475,7 +475,7 @@ class LazyJavaClassMemberScope(
override.newCopyBuilder().apply {
setValueParameters(
copyValueParameters(
overridden.valueParameters.map { ValueParameterData(it.type, it.declaresDefaultValue()) },
overridden.valueParameters.map(ValueParameterDescriptor::getType),
override.valueParameters, overridden
)
)
@@ -25,7 +25,10 @@ import org.jetbrains.kotlin.load.java.AnnotationQualifierApplicabilityType
import org.jetbrains.kotlin.load.java.AnnotationTypeQualifierResolver
import org.jetbrains.kotlin.load.java.DeprecationCausedByFunctionNInfo
import org.jetbrains.kotlin.load.java.JavaTypeQualifiersByElementType
import org.jetbrains.kotlin.load.java.descriptors.*
import org.jetbrains.kotlin.load.java.descriptors.JavaCallableMemberDescriptor
import org.jetbrains.kotlin.load.java.descriptors.JavaMethodDescriptor
import org.jetbrains.kotlin.load.java.descriptors.JavaPropertyDescriptor
import org.jetbrains.kotlin.load.java.descriptors.PossiblyExternalAnnotationDescriptor
import org.jetbrains.kotlin.load.java.lazy.LazyJavaResolverContext
import org.jetbrains.kotlin.load.java.lazy.copyWithNewDefaultTypeQualifiers
import org.jetbrains.kotlin.load.java.lazy.descriptors.LazyJavaAnnotationDescriptor
@@ -140,12 +143,7 @@ class SignatureEnhancement(private val typeEnhancement: JavaTypeEnhancement) {
@Suppress("UNCHECKED_CAST")
return this.enhance(
receiverTypeEnhancement ?: extensionReceiverParameter?.type,
valueParameterEnhancements.mapIndexed { index, enhanced ->
ValueParameterData(
enhanced ?: valueParameters[index].type,
annotationOwnerForMember.valueParameters[index].declaresDefaultValue()
)
},
valueParameterEnhancements.mapIndexed { index, enhanced -> enhanced ?: valueParameters[index].type },
returnTypeEnhancement ?: returnType!!,
additionalUserData
) as D