Move methods to DescriptorResolverUtils
This commit is contained in:
+3
-2
@@ -26,6 +26,7 @@ import org.jetbrains.jet.lang.descriptors.ValueParameterDescriptor;
|
|||||||
import org.jetbrains.jet.lang.descriptors.impl.TypeParameterDescriptorImpl;
|
import org.jetbrains.jet.lang.descriptors.impl.TypeParameterDescriptorImpl;
|
||||||
import org.jetbrains.jet.lang.descriptors.impl.ValueParameterDescriptorImpl;
|
import org.jetbrains.jet.lang.descriptors.impl.ValueParameterDescriptorImpl;
|
||||||
import org.jetbrains.jet.lang.psi.*;
|
import org.jetbrains.jet.lang.psi.*;
|
||||||
|
import org.jetbrains.jet.lang.resolve.java.resolver.DescriptorResolverUtils;
|
||||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaAnnotationResolver;
|
import org.jetbrains.jet.lang.resolve.java.resolver.JavaAnnotationResolver;
|
||||||
import org.jetbrains.jet.lang.resolve.java.structure.JavaMethod;
|
import org.jetbrains.jet.lang.resolve.java.structure.JavaMethod;
|
||||||
import org.jetbrains.jet.lang.resolve.java.structure.impl.JavaMethodImpl;
|
import org.jetbrains.jet.lang.resolve.java.structure.impl.JavaMethodImpl;
|
||||||
@@ -78,7 +79,7 @@ public class AlternativeMethodSignatureData extends ElementAlternativeSignatureD
|
|||||||
Project project = method.getPsi().getProject();
|
Project project = method.getPsi().getProject();
|
||||||
altFunDeclaration = JetPsiFactory.createFunction(project, signature);
|
altFunDeclaration = JetPsiFactory.createFunction(project, signature);
|
||||||
|
|
||||||
originalToAltTypeParameters = SignaturesUtil.recreateTypeParametersAndReturnMapping(methodTypeParameters, null);
|
originalToAltTypeParameters = DescriptorResolverUtils.recreateTypeParametersAndReturnMapping(methodTypeParameters, null);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
checkForSyntaxErrors(altFunDeclaration);
|
checkForSyntaxErrors(altFunDeclaration);
|
||||||
@@ -105,7 +106,7 @@ public class AlternativeMethodSignatureData extends ElementAlternativeSignatureD
|
|||||||
@NotNull List<TypeParameterDescriptor> methodTypeParameters,
|
@NotNull List<TypeParameterDescriptor> methodTypeParameters,
|
||||||
@Nullable JetType returnType
|
@Nullable JetType returnType
|
||||||
) {
|
) {
|
||||||
TypeSubstitutor substitutor = SignaturesUtil.createSubstitutorForTypeParameters(originalToAltTypeParameters);
|
TypeSubstitutor substitutor = DescriptorResolverUtils.createSubstitutorForTypeParameters(originalToAltTypeParameters);
|
||||||
|
|
||||||
for (ValueParameterDescriptor parameter : valueParameters) {
|
for (ValueParameterDescriptor parameter : valueParameters) {
|
||||||
int index = parameter.getIndex();
|
int index = parameter.getIndex();
|
||||||
|
|||||||
+1
-1
@@ -78,7 +78,7 @@ public class SignaturesPropagationData {
|
|||||||
this.containingClass = containingClass;
|
this.containingClass = containingClass;
|
||||||
superFunctions = getSuperFunctionsForMethod(method, trace, containingClass);
|
superFunctions = getSuperFunctionsForMethod(method, trace, containingClass);
|
||||||
|
|
||||||
autoTypeParameterToModified = SignaturesUtil.recreateTypeParametersAndReturnMapping(autoTypeParameters, null);
|
autoTypeParameterToModified = DescriptorResolverUtils.recreateTypeParametersAndReturnMapping(autoTypeParameters, null);
|
||||||
|
|
||||||
modifiedTypeParameters = modifyTypeParametersAccordingToSuperMethods(autoTypeParameters);
|
modifiedTypeParameters = modifyTypeParametersAccordingToSuperMethods(autoTypeParameters);
|
||||||
modifiedReturnType = modifyReturnTypeAccordingToSuperMethods(autoReturnType);
|
modifiedReturnType = modifyReturnTypeAccordingToSuperMethods(autoReturnType);
|
||||||
|
|||||||
-40
@@ -16,60 +16,20 @@
|
|||||||
|
|
||||||
package org.jetbrains.jet.lang.resolve.java.kotlinSignature;
|
package org.jetbrains.jet.lang.resolve.java.kotlinSignature;
|
||||||
|
|
||||||
import com.google.common.collect.Maps;
|
|
||||||
import com.intellij.openapi.util.text.StringUtil;
|
import com.intellij.openapi.util.text.StringUtil;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
|
|
||||||
import org.jetbrains.jet.lang.descriptors.TypeParameterDescriptor;
|
|
||||||
import org.jetbrains.jet.lang.descriptors.impl.TypeParameterDescriptorImpl;
|
|
||||||
import org.jetbrains.jet.lang.resolve.java.JvmAnnotationNames;
|
import org.jetbrains.jet.lang.resolve.java.JvmAnnotationNames;
|
||||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaAnnotationResolver;
|
import org.jetbrains.jet.lang.resolve.java.resolver.JavaAnnotationResolver;
|
||||||
import org.jetbrains.jet.lang.resolve.java.structure.JavaAnnotation;
|
import org.jetbrains.jet.lang.resolve.java.structure.JavaAnnotation;
|
||||||
import org.jetbrains.jet.lang.resolve.java.structure.JavaAnnotationArgument;
|
import org.jetbrains.jet.lang.resolve.java.structure.JavaAnnotationArgument;
|
||||||
import org.jetbrains.jet.lang.resolve.java.structure.JavaLiteralAnnotationArgument;
|
import org.jetbrains.jet.lang.resolve.java.structure.JavaLiteralAnnotationArgument;
|
||||||
import org.jetbrains.jet.lang.resolve.java.structure.JavaMember;
|
import org.jetbrains.jet.lang.resolve.java.structure.JavaMember;
|
||||||
import org.jetbrains.jet.lang.types.TypeConstructor;
|
|
||||||
import org.jetbrains.jet.lang.types.TypeProjection;
|
|
||||||
import org.jetbrains.jet.lang.types.TypeSubstitutor;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
public class SignaturesUtil {
|
public class SignaturesUtil {
|
||||||
private SignaturesUtil() {
|
private SignaturesUtil() {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Map<TypeParameterDescriptor, TypeParameterDescriptorImpl> recreateTypeParametersAndReturnMapping(
|
|
||||||
@NotNull List<TypeParameterDescriptor> originalParameters,
|
|
||||||
@Nullable DeclarationDescriptor newOwner
|
|
||||||
) {
|
|
||||||
Map<TypeParameterDescriptor, TypeParameterDescriptorImpl> result = Maps.newLinkedHashMap(); // save order of type parameters
|
|
||||||
for (TypeParameterDescriptor typeParameter : originalParameters) {
|
|
||||||
result.put(typeParameter,
|
|
||||||
TypeParameterDescriptorImpl.createForFurtherModification(
|
|
||||||
newOwner == null ? typeParameter.getContainingDeclaration() : newOwner,
|
|
||||||
typeParameter.getAnnotations(),
|
|
||||||
typeParameter.isReified(),
|
|
||||||
typeParameter.getVariance(),
|
|
||||||
typeParameter.getName(),
|
|
||||||
typeParameter.getIndex()));
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static TypeSubstitutor createSubstitutorForTypeParameters(
|
|
||||||
@NotNull Map<TypeParameterDescriptor, TypeParameterDescriptorImpl> originalToAltTypeParameters
|
|
||||||
) {
|
|
||||||
Map<TypeConstructor, TypeProjection> typeSubstitutionContext = Maps.newHashMap();
|
|
||||||
for (Map.Entry<TypeParameterDescriptor, TypeParameterDescriptorImpl> originalToAltTypeParameter : originalToAltTypeParameters
|
|
||||||
.entrySet()) {
|
|
||||||
typeSubstitutionContext.put(originalToAltTypeParameter.getKey().getTypeConstructor(),
|
|
||||||
new TypeProjection(originalToAltTypeParameter.getValue().getDefaultType()));
|
|
||||||
}
|
|
||||||
return TypeSubstitutor.create(typeSubstitutionContext);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
public static String getKotlinSignature(@NotNull JavaAnnotationResolver annotationResolver, @NotNull JavaMember member) {
|
public static String getKotlinSignature(@NotNull JavaAnnotationResolver annotationResolver, @NotNull JavaMember member) {
|
||||||
JavaAnnotation annotation = annotationResolver.findAnnotationWithExternal(member, JvmAnnotationNames.KOTLIN_SIGNATURE);
|
JavaAnnotation annotation = annotationResolver.findAnnotationWithExternal(member, JvmAnnotationNames.KOTLIN_SIGNATURE);
|
||||||
|
|||||||
+37
@@ -16,15 +16,20 @@
|
|||||||
|
|
||||||
package org.jetbrains.jet.lang.resolve.java.resolver;
|
package org.jetbrains.jet.lang.resolve.java.resolver;
|
||||||
|
|
||||||
|
import com.google.common.collect.Maps;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.jetbrains.jet.lang.descriptors.*;
|
import org.jetbrains.jet.lang.descriptors.*;
|
||||||
|
import org.jetbrains.jet.lang.descriptors.impl.TypeParameterDescriptorImpl;
|
||||||
import org.jetbrains.jet.lang.resolve.OverrideResolver;
|
import org.jetbrains.jet.lang.resolve.OverrideResolver;
|
||||||
import org.jetbrains.jet.lang.resolve.java.JvmAnnotationNames;
|
import org.jetbrains.jet.lang.resolve.java.JvmAnnotationNames;
|
||||||
import org.jetbrains.jet.lang.resolve.java.PackageClassUtils;
|
import org.jetbrains.jet.lang.resolve.java.PackageClassUtils;
|
||||||
import org.jetbrains.jet.lang.resolve.java.structure.*;
|
import org.jetbrains.jet.lang.resolve.java.structure.*;
|
||||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||||
import org.jetbrains.jet.lang.resolve.name.Name;
|
import org.jetbrains.jet.lang.resolve.name.Name;
|
||||||
|
import org.jetbrains.jet.lang.types.TypeConstructor;
|
||||||
|
import org.jetbrains.jet.lang.types.TypeProjection;
|
||||||
|
import org.jetbrains.jet.lang.types.TypeSubstitutor;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
@@ -220,4 +225,36 @@ public final class DescriptorResolverUtils {
|
|||||||
}
|
}
|
||||||
return typeParameter.getTypeProvider().createJavaLangObjectType();
|
return typeParameter.getTypeProvider().createJavaLangObjectType();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
public static Map<TypeParameterDescriptor, TypeParameterDescriptorImpl> recreateTypeParametersAndReturnMapping(
|
||||||
|
@NotNull List<TypeParameterDescriptor> originalParameters,
|
||||||
|
@Nullable DeclarationDescriptor newOwner
|
||||||
|
) {
|
||||||
|
Map<TypeParameterDescriptor, TypeParameterDescriptorImpl> result = Maps.newLinkedHashMap(); // save order of type parameters
|
||||||
|
for (TypeParameterDescriptor typeParameter : originalParameters) {
|
||||||
|
result.put(typeParameter,
|
||||||
|
TypeParameterDescriptorImpl.createForFurtherModification(
|
||||||
|
newOwner == null ? typeParameter.getContainingDeclaration() : newOwner,
|
||||||
|
typeParameter.getAnnotations(),
|
||||||
|
typeParameter.isReified(),
|
||||||
|
typeParameter.getVariance(),
|
||||||
|
typeParameter.getName(),
|
||||||
|
typeParameter.getIndex()));
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
public static TypeSubstitutor createSubstitutorForTypeParameters(
|
||||||
|
@NotNull Map<TypeParameterDescriptor, TypeParameterDescriptorImpl> originalToAltTypeParameters
|
||||||
|
) {
|
||||||
|
Map<TypeConstructor, TypeProjection> typeSubstitutionContext = Maps.newHashMap();
|
||||||
|
for (Map.Entry<TypeParameterDescriptor, TypeParameterDescriptorImpl> originalToAltTypeParameter : originalToAltTypeParameters
|
||||||
|
.entrySet()) {
|
||||||
|
typeSubstitutionContext.put(originalToAltTypeParameter.getKey().getTypeConstructor(),
|
||||||
|
new TypeProjection(originalToAltTypeParameter.getValue().getDefaultType()));
|
||||||
|
}
|
||||||
|
return TypeSubstitutor.create(typeSubstitutionContext);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-3
@@ -25,7 +25,6 @@ import org.jetbrains.jet.lang.descriptors.impl.ValueParameterDescriptorImpl;
|
|||||||
import org.jetbrains.jet.lang.resolve.java.descriptor.ClassDescriptorFromJvmBytecode;
|
import org.jetbrains.jet.lang.resolve.java.descriptor.ClassDescriptorFromJvmBytecode;
|
||||||
import org.jetbrains.jet.lang.resolve.java.descriptor.SamAdapterDescriptor;
|
import org.jetbrains.jet.lang.resolve.java.descriptor.SamAdapterDescriptor;
|
||||||
import org.jetbrains.jet.lang.resolve.java.descriptor.SamConstructorDescriptor;
|
import org.jetbrains.jet.lang.resolve.java.descriptor.SamConstructorDescriptor;
|
||||||
import org.jetbrains.jet.lang.resolve.java.kotlinSignature.SignaturesUtil;
|
|
||||||
import org.jetbrains.jet.lang.resolve.java.resolver.DescriptorResolverUtils;
|
import org.jetbrains.jet.lang.resolve.java.resolver.DescriptorResolverUtils;
|
||||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaSupertypeResolver;
|
import org.jetbrains.jet.lang.resolve.java.resolver.JavaSupertypeResolver;
|
||||||
import org.jetbrains.jet.lang.resolve.java.structure.*;
|
import org.jetbrains.jet.lang.resolve.java.structure.*;
|
||||||
@@ -271,8 +270,8 @@ public class SingleAbstractMethodUtils {
|
|||||||
@Nullable DeclarationDescriptor newOwner
|
@Nullable DeclarationDescriptor newOwner
|
||||||
) {
|
) {
|
||||||
Map<TypeParameterDescriptor, TypeParameterDescriptorImpl> traitToFunTypeParameters =
|
Map<TypeParameterDescriptor, TypeParameterDescriptorImpl> traitToFunTypeParameters =
|
||||||
SignaturesUtil.recreateTypeParametersAndReturnMapping(originalParameters, newOwner);
|
DescriptorResolverUtils.recreateTypeParametersAndReturnMapping(originalParameters, newOwner);
|
||||||
TypeSubstitutor typeParametersSubstitutor = SignaturesUtil.createSubstitutorForTypeParameters(traitToFunTypeParameters);
|
TypeSubstitutor typeParametersSubstitutor = DescriptorResolverUtils.createSubstitutorForTypeParameters(traitToFunTypeParameters);
|
||||||
for (Map.Entry<TypeParameterDescriptor, TypeParameterDescriptorImpl> mapEntry : traitToFunTypeParameters.entrySet()) {
|
for (Map.Entry<TypeParameterDescriptor, TypeParameterDescriptorImpl> mapEntry : traitToFunTypeParameters.entrySet()) {
|
||||||
TypeParameterDescriptor traitTypeParameter = mapEntry.getKey();
|
TypeParameterDescriptor traitTypeParameter = mapEntry.getKey();
|
||||||
TypeParameterDescriptorImpl funTypeParameter = mapEntry.getValue();
|
TypeParameterDescriptorImpl funTypeParameter = mapEntry.getValue();
|
||||||
|
|||||||
Reference in New Issue
Block a user