From 4fa35047b0e1dcb958a6f59cde98beb2522fc0f1 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Wed, 4 Sep 2013 18:43:45 +0400 Subject: [PATCH] Move methods to DescriptorResolverUtils --- .../AlternativeMethodSignatureData.java | 5 ++- .../SignaturesPropagationData.java | 2 +- .../java/kotlinSignature/SignaturesUtil.java | 40 ------------------- .../resolver/DescriptorResolverUtils.java | 37 +++++++++++++++++ .../java/sam/SingleAbstractMethodUtils.java | 5 +-- 5 files changed, 43 insertions(+), 46 deletions(-) diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/kotlinSignature/AlternativeMethodSignatureData.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/kotlinSignature/AlternativeMethodSignatureData.java index ac8b184293e..2c2ffbb3a8c 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/kotlinSignature/AlternativeMethodSignatureData.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/kotlinSignature/AlternativeMethodSignatureData.java @@ -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.ValueParameterDescriptorImpl; 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.structure.JavaMethod; import org.jetbrains.jet.lang.resolve.java.structure.impl.JavaMethodImpl; @@ -78,7 +79,7 @@ public class AlternativeMethodSignatureData extends ElementAlternativeSignatureD Project project = method.getPsi().getProject(); altFunDeclaration = JetPsiFactory.createFunction(project, signature); - originalToAltTypeParameters = SignaturesUtil.recreateTypeParametersAndReturnMapping(methodTypeParameters, null); + originalToAltTypeParameters = DescriptorResolverUtils.recreateTypeParametersAndReturnMapping(methodTypeParameters, null); try { checkForSyntaxErrors(altFunDeclaration); @@ -105,7 +106,7 @@ public class AlternativeMethodSignatureData extends ElementAlternativeSignatureD @NotNull List methodTypeParameters, @Nullable JetType returnType ) { - TypeSubstitutor substitutor = SignaturesUtil.createSubstitutorForTypeParameters(originalToAltTypeParameters); + TypeSubstitutor substitutor = DescriptorResolverUtils.createSubstitutorForTypeParameters(originalToAltTypeParameters); for (ValueParameterDescriptor parameter : valueParameters) { int index = parameter.getIndex(); diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/kotlinSignature/SignaturesPropagationData.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/kotlinSignature/SignaturesPropagationData.java index 2ee44f8e232..5ada1c7377c 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/kotlinSignature/SignaturesPropagationData.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/kotlinSignature/SignaturesPropagationData.java @@ -78,7 +78,7 @@ public class SignaturesPropagationData { this.containingClass = containingClass; superFunctions = getSuperFunctionsForMethod(method, trace, containingClass); - autoTypeParameterToModified = SignaturesUtil.recreateTypeParametersAndReturnMapping(autoTypeParameters, null); + autoTypeParameterToModified = DescriptorResolverUtils.recreateTypeParametersAndReturnMapping(autoTypeParameters, null); modifiedTypeParameters = modifyTypeParametersAccordingToSuperMethods(autoTypeParameters); modifiedReturnType = modifyReturnTypeAccordingToSuperMethods(autoReturnType); diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/kotlinSignature/SignaturesUtil.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/kotlinSignature/SignaturesUtil.java index 30f905c5aac..56183dc27a1 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/kotlinSignature/SignaturesUtil.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/kotlinSignature/SignaturesUtil.java @@ -16,60 +16,20 @@ package org.jetbrains.jet.lang.resolve.java.kotlinSignature; -import com.google.common.collect.Maps; import com.intellij.openapi.util.text.StringUtil; import org.jetbrains.annotations.NotNull; 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.resolver.JavaAnnotationResolver; 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.JavaLiteralAnnotationArgument; 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 { private SignaturesUtil() { } - public static Map recreateTypeParametersAndReturnMapping( - @NotNull List originalParameters, - @Nullable DeclarationDescriptor newOwner - ) { - Map 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 originalToAltTypeParameters - ) { - Map typeSubstitutionContext = Maps.newHashMap(); - for (Map.Entry originalToAltTypeParameter : originalToAltTypeParameters - .entrySet()) { - typeSubstitutionContext.put(originalToAltTypeParameter.getKey().getTypeConstructor(), - new TypeProjection(originalToAltTypeParameter.getValue().getDefaultType())); - } - return TypeSubstitutor.create(typeSubstitutionContext); - } - @Nullable public static String getKotlinSignature(@NotNull JavaAnnotationResolver annotationResolver, @NotNull JavaMember member) { JavaAnnotation annotation = annotationResolver.findAnnotationWithExternal(member, JvmAnnotationNames.KOTLIN_SIGNATURE); diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/DescriptorResolverUtils.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/DescriptorResolverUtils.java index 6b92cdbae37..2c565436e07 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/DescriptorResolverUtils.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/DescriptorResolverUtils.java @@ -16,15 +16,20 @@ package org.jetbrains.jet.lang.resolve.java.resolver; +import com.google.common.collect.Maps; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; 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.java.JvmAnnotationNames; import org.jetbrains.jet.lang.resolve.java.PackageClassUtils; import org.jetbrains.jet.lang.resolve.java.structure.*; import org.jetbrains.jet.lang.resolve.name.FqName; 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.*; @@ -220,4 +225,36 @@ public final class DescriptorResolverUtils { } return typeParameter.getTypeProvider().createJavaLangObjectType(); } + + @NotNull + public static Map recreateTypeParametersAndReturnMapping( + @NotNull List originalParameters, + @Nullable DeclarationDescriptor newOwner + ) { + Map 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 originalToAltTypeParameters + ) { + Map typeSubstitutionContext = Maps.newHashMap(); + for (Map.Entry originalToAltTypeParameter : originalToAltTypeParameters + .entrySet()) { + typeSubstitutionContext.put(originalToAltTypeParameter.getKey().getTypeConstructor(), + new TypeProjection(originalToAltTypeParameter.getValue().getDefaultType())); + } + return TypeSubstitutor.create(typeSubstitutionContext); + } } diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/sam/SingleAbstractMethodUtils.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/sam/SingleAbstractMethodUtils.java index 82f30212d16..ab91dcee37c 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/sam/SingleAbstractMethodUtils.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/sam/SingleAbstractMethodUtils.java @@ -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.SamAdapterDescriptor; 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.JavaSupertypeResolver; import org.jetbrains.jet.lang.resolve.java.structure.*; @@ -271,8 +270,8 @@ public class SingleAbstractMethodUtils { @Nullable DeclarationDescriptor newOwner ) { Map traitToFunTypeParameters = - SignaturesUtil.recreateTypeParametersAndReturnMapping(originalParameters, newOwner); - TypeSubstitutor typeParametersSubstitutor = SignaturesUtil.createSubstitutorForTypeParameters(traitToFunTypeParameters); + DescriptorResolverUtils.recreateTypeParametersAndReturnMapping(originalParameters, newOwner); + TypeSubstitutor typeParametersSubstitutor = DescriptorResolverUtils.createSubstitutorForTypeParameters(traitToFunTypeParameters); for (Map.Entry mapEntry : traitToFunTypeParameters.entrySet()) { TypeParameterDescriptor traitTypeParameter = mapEntry.getKey(); TypeParameterDescriptorImpl funTypeParameter = mapEntry.getValue();