Minor. Keep substitution in CopyConfiguration instead of originalSubstitutor

This commit is contained in:
Denis Zharkov
2016-04-06 15:55:09 +03:00
parent 128dd43dbd
commit f104be16cf
2 changed files with 12 additions and 15 deletions
@@ -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)
@@ -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;