Minor. Keep substitution in CopyConfiguration instead of originalSubstitutor
This commit is contained in:
+2
-2
@@ -163,7 +163,7 @@ class SamAdapterFunctionsScope(storageManager: StorageManager) : SyntheticScope
|
||||
|
||||
val substitutionMap = HashMap<TypeConstructor, TypeProjection>()
|
||||
for (typeParameter in original.typeParameters) {
|
||||
val typeProjection = configuration.originalSubstitutor.substitution[typeParameter.defaultType] ?: continue
|
||||
val typeProjection = configuration.substitution[typeParameter.defaultType] ?: continue
|
||||
val sourceTypeParameter = original.toSourceFunctionTypeParameters!![typeParameter]!!
|
||||
substitutionMap[sourceTypeParameter.typeConstructor] = typeProjection
|
||||
|
||||
@@ -171,7 +171,7 @@ class SamAdapterFunctionsScope(storageManager: StorageManager) : SyntheticScope
|
||||
|
||||
val sourceFunctionSubstitutor =
|
||||
TypeConstructorSubstitution.createByConstructorsMap(
|
||||
substitutionMap, configuration.originalSubstitutor.substitution.approximateCapturedTypes()).buildSubstitutor()
|
||||
substitutionMap, configuration.substitution.approximateCapturedTypes()).buildSubstitutor()
|
||||
|
||||
descriptor.sourceFunction = original.sourceFunction.substitute(sourceFunctionSubstitutor)
|
||||
|
||||
|
||||
+10
-13
@@ -23,10 +23,7 @@ import org.jetbrains.kotlin.descriptors.*;
|
||||
import org.jetbrains.kotlin.descriptors.annotations.Annotations;
|
||||
import org.jetbrains.kotlin.name.Name;
|
||||
import org.jetbrains.kotlin.resolve.DescriptorFactory;
|
||||
import org.jetbrains.kotlin.types.DescriptorSubstitutor;
|
||||
import org.jetbrains.kotlin.types.KotlinType;
|
||||
import org.jetbrains.kotlin.types.TypeSubstitutor;
|
||||
import org.jetbrains.kotlin.types.Variance;
|
||||
import org.jetbrains.kotlin.types.*;
|
||||
import org.jetbrains.kotlin.utils.CollectionsKt;
|
||||
import org.jetbrains.kotlin.utils.SmartSet;
|
||||
|
||||
@@ -294,7 +291,7 @@ public abstract class FunctionDescriptorImpl extends DeclarationDescriptorNonRoo
|
||||
}
|
||||
|
||||
public class CopyConfiguration implements SimpleFunctionDescriptor.CopyBuilder<FunctionDescriptor> {
|
||||
protected @NotNull TypeSubstitutor originalSubstitutor;
|
||||
protected @NotNull TypeSubstitution substitution;
|
||||
protected @NotNull DeclarationDescriptor newOwner;
|
||||
protected @NotNull Modality newModality;
|
||||
protected @NotNull Visibility newVisibility;
|
||||
@@ -312,7 +309,7 @@ public abstract class FunctionDescriptorImpl extends DeclarationDescriptorNonRoo
|
||||
private List<TypeParameterDescriptor> newTypeParameters = null;
|
||||
|
||||
public CopyConfiguration(
|
||||
@NotNull TypeSubstitutor originalSubstitutor,
|
||||
@NotNull TypeSubstitution substitution,
|
||||
@NotNull DeclarationDescriptor newOwner,
|
||||
@NotNull Modality newModality,
|
||||
@NotNull Visibility newVisibility,
|
||||
@@ -322,7 +319,7 @@ public abstract class FunctionDescriptorImpl extends DeclarationDescriptorNonRoo
|
||||
@NotNull KotlinType newReturnType,
|
||||
@Nullable Name name
|
||||
) {
|
||||
this.originalSubstitutor = originalSubstitutor;
|
||||
this.substitution = substitution;
|
||||
this.newOwner = newOwner;
|
||||
this.newModality = newModality;
|
||||
this.newVisibility = newVisibility;
|
||||
@@ -451,8 +448,8 @@ public abstract class FunctionDescriptorImpl extends DeclarationDescriptorNonRoo
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public TypeSubstitutor getOriginalSubstitutor() {
|
||||
return originalSubstitutor;
|
||||
public TypeSubstitution getSubstitution() {
|
||||
return substitution;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -465,7 +462,7 @@ public abstract class FunctionDescriptorImpl extends DeclarationDescriptorNonRoo
|
||||
@NotNull
|
||||
private CopyConfiguration newCopyBuilder(@NotNull TypeSubstitutor substitutor) {
|
||||
return new CopyConfiguration(
|
||||
substitutor,
|
||||
substitutor.getSubstitution(),
|
||||
getContainingDeclaration(), getModality(), getVisibility(), getKind(), getValueParameters(),
|
||||
getExtensionReceiverParameterType(), getReturnType(), null);
|
||||
}
|
||||
@@ -483,13 +480,13 @@ public abstract class FunctionDescriptorImpl extends DeclarationDescriptorNonRoo
|
||||
List<TypeParameterDescriptor> originalTypeParameters = getTypeParameters();
|
||||
substitutedTypeParameters = new ArrayList<TypeParameterDescriptor>(originalTypeParameters.size());
|
||||
substitutor = DescriptorSubstitutor.substituteTypeParameters(
|
||||
originalTypeParameters, configuration.originalSubstitutor.getSubstitution(), substitutedDescriptor, substitutedTypeParameters
|
||||
originalTypeParameters, configuration.substitution, substitutedDescriptor, substitutedTypeParameters
|
||||
);
|
||||
}
|
||||
else {
|
||||
// They should be already substituted
|
||||
substitutedTypeParameters = configuration.newTypeParameters;
|
||||
substitutor = configuration.originalSubstitutor;
|
||||
substitutor = configuration.substitution.buildSubstitutor();
|
||||
}
|
||||
|
||||
KotlinType substitutedReceiverParameterType = null;
|
||||
@@ -555,7 +552,7 @@ public abstract class FunctionDescriptorImpl extends DeclarationDescriptorNonRoo
|
||||
}
|
||||
|
||||
if (configuration.copyOverrides && !getOriginal().getOverriddenDescriptors().isEmpty()) {
|
||||
if (configuration.originalSubstitutor.isEmpty()) {
|
||||
if (configuration.substitution.isEmpty()) {
|
||||
Function0<Set<FunctionDescriptor>> overriddenFunctionsTask = lazyOverriddenFunctionsTask;
|
||||
if (overriddenFunctionsTask != null) {
|
||||
substitutedDescriptor.lazyOverriddenFunctionsTask = overriddenFunctionsTask;
|
||||
|
||||
Reference in New Issue
Block a user