diff --git a/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForJavaDescriptorResolver.java b/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForJavaDescriptorResolver.java index f8b6e386479..d295642fa5b 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForJavaDescriptorResolver.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForJavaDescriptorResolver.java @@ -27,10 +27,10 @@ import org.jetbrains.jet.lang.resolve.java.resolver.JavaFunctionResolver; import org.jetbrains.jet.lang.resolve.java.resolver.JavaValueParameterResolver; import org.jetbrains.jet.lang.resolve.java.JavaTypeTransformer; import org.jetbrains.jet.lang.resolve.java.resolver.JavaSignatureResolver; -import org.jetbrains.jet.lang.resolve.java.JavaSemanticServices; import org.jetbrains.jet.lang.resolve.java.resolver.DeserializedDescriptorResolver; import org.jetbrains.jet.lang.resolve.java.resolver.AnnotationDescriptorDeserializer; import org.jetbrains.jet.lang.resolve.java.resolver.JavaNamespaceResolver; +import org.jetbrains.jet.lang.resolve.java.JavaSemanticServices; import org.jetbrains.jet.lang.resolve.java.resolver.JavaSupertypeResolver; import org.jetbrains.jet.lang.resolve.java.resolver.JavaConstructorResolver; import org.jetbrains.jet.lang.resolve.java.resolver.JavaInnerClassResolver; @@ -52,10 +52,10 @@ public class InjectorForJavaDescriptorResolver { private final JavaValueParameterResolver javaValueParameterResolver; private final JavaTypeTransformer javaTypeTransformer; private final JavaSignatureResolver javaSignatureResolver; - private final JavaSemanticServices javaSemanticServices; private final DeserializedDescriptorResolver deserializedDescriptorResolver; private final AnnotationDescriptorDeserializer annotationDescriptorDeserializer; private final JavaNamespaceResolver javaNamespaceResolver; + private final JavaSemanticServices javaSemanticServices; private final JavaSupertypeResolver javaSupertypeResolver; private final JavaConstructorResolver javaConstructorResolver; private final JavaInnerClassResolver javaInnerClassResolver; @@ -76,10 +76,10 @@ public class InjectorForJavaDescriptorResolver { this.javaValueParameterResolver = new JavaValueParameterResolver(); this.javaTypeTransformer = new JavaTypeTransformer(); this.javaSignatureResolver = new JavaSignatureResolver(); - this.javaSemanticServices = new JavaSemanticServices(); this.deserializedDescriptorResolver = new DeserializedDescriptorResolver(); this.annotationDescriptorDeserializer = new AnnotationDescriptorDeserializer(); this.javaNamespaceResolver = new JavaNamespaceResolver(); + this.javaSemanticServices = new JavaSemanticServices(); this.javaSupertypeResolver = new JavaSupertypeResolver(); this.javaConstructorResolver = new JavaConstructorResolver(); this.javaInnerClassResolver = new JavaInnerClassResolver(); @@ -120,11 +120,7 @@ public class InjectorForJavaDescriptorResolver { javaTypeTransformer.setResolver(javaDescriptorResolver); - javaSignatureResolver.setJavaSemanticServices(javaSemanticServices); - - javaSemanticServices.setDescriptorResolver(javaDescriptorResolver); - javaSemanticServices.setPsiClassFinder(psiClassFinder); - javaSemanticServices.setTypeTransformer(javaTypeTransformer); + javaSignatureResolver.setTypeTransformer(javaTypeTransformer); deserializedDescriptorResolver.setAnnotationDeserializer(annotationDescriptorDeserializer); deserializedDescriptorResolver.setJavaClassResolver(javaClassResolver); @@ -138,6 +134,9 @@ public class InjectorForJavaDescriptorResolver { javaNamespaceResolver.setPsiClassFinder(psiClassFinder); javaNamespaceResolver.setTrace(bindingTrace); + javaSemanticServices.setDescriptorResolver(javaDescriptorResolver); + javaSemanticServices.setPsiClassFinder(psiClassFinder); + javaSupertypeResolver.setClassResolver(javaClassResolver); javaSupertypeResolver.setTrace(bindingTrace); javaSupertypeResolver.setTypeTransformer(javaTypeTransformer); @@ -149,8 +148,8 @@ public class InjectorForJavaDescriptorResolver { javaInnerClassResolver.setClassResolver(javaClassResolver); javaPropertyResolver.setAnnotationResolver(javaAnnotationResolver); - javaPropertyResolver.setSemanticServices(javaSemanticServices); javaPropertyResolver.setTrace(bindingTrace); + javaPropertyResolver.setTypeTransformer(javaTypeTransformer); psiClassFinder.initialize(); diff --git a/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJvm.java b/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJvm.java index 7e1a220c27e..62db53e4504 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJvm.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJvm.java @@ -48,12 +48,12 @@ import org.jetbrains.jet.lang.resolve.OverrideResolver; import org.jetbrains.jet.lang.resolve.TypeHierarchyResolver; import org.jetbrains.jet.lang.resolve.ScriptBodyResolver; import org.jetbrains.jet.lang.resolve.java.JavaSemanticServices; -import org.jetbrains.jet.lang.resolve.java.JavaTypeTransformer; import org.jetbrains.jet.lang.resolve.java.resolver.JavaClassResolver; import org.jetbrains.jet.lang.resolve.java.resolver.JavaAnnotationResolver; import org.jetbrains.jet.lang.resolve.java.resolver.JavaCompileTimeConstResolver; import org.jetbrains.jet.lang.resolve.java.resolver.JavaFunctionResolver; import org.jetbrains.jet.lang.resolve.java.resolver.JavaValueParameterResolver; +import org.jetbrains.jet.lang.resolve.java.JavaTypeTransformer; import org.jetbrains.jet.lang.resolve.java.resolver.JavaSignatureResolver; import org.jetbrains.jet.lang.resolve.java.resolver.DeserializedDescriptorResolver; import org.jetbrains.jet.lang.resolve.java.resolver.AnnotationDescriptorDeserializer; @@ -100,12 +100,12 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly private final TypeHierarchyResolver typeHierarchyResolver; private final ScriptBodyResolver scriptBodyResolver; private final JavaSemanticServices javaSemanticServices; - private final JavaTypeTransformer javaTypeTransformer; private final JavaClassResolver javaClassResolver; private final JavaAnnotationResolver javaAnnotationResolver; private final JavaCompileTimeConstResolver javaCompileTimeConstResolver; private final JavaFunctionResolver javaFunctionResolver; private final JavaValueParameterResolver javaValueParameterResolver; + private final JavaTypeTransformer javaTypeTransformer; private final JavaSignatureResolver javaSignatureResolver; private final DeserializedDescriptorResolver deserializedDescriptorResolver; private final AnnotationDescriptorDeserializer annotationDescriptorDeserializer; @@ -153,12 +153,12 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly this.typeHierarchyResolver = new TypeHierarchyResolver(); this.scriptBodyResolver = new ScriptBodyResolver(); this.javaSemanticServices = new JavaSemanticServices(); - this.javaTypeTransformer = new JavaTypeTransformer(); this.javaClassResolver = new JavaClassResolver(); this.javaAnnotationResolver = new JavaAnnotationResolver(); this.javaCompileTimeConstResolver = new JavaCompileTimeConstResolver(); this.javaFunctionResolver = new JavaFunctionResolver(); this.javaValueParameterResolver = new JavaValueParameterResolver(); + this.javaTypeTransformer = new JavaTypeTransformer(); this.javaSignatureResolver = new JavaSignatureResolver(); this.deserializedDescriptorResolver = new DeserializedDescriptorResolver(); this.annotationDescriptorDeserializer = new AnnotationDescriptorDeserializer(); @@ -283,9 +283,6 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly javaSemanticServices.setDescriptorResolver(javaDescriptorResolver); javaSemanticServices.setPsiClassFinder(psiClassFinder); - javaSemanticServices.setTypeTransformer(javaTypeTransformer); - - javaTypeTransformer.setResolver(javaDescriptorResolver); javaClassResolver.setAnnotationResolver(javaAnnotationResolver); javaClassResolver.setFunctionResolver(javaFunctionResolver); @@ -311,7 +308,9 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly javaValueParameterResolver.setTypeTransformer(javaTypeTransformer); - javaSignatureResolver.setJavaSemanticServices(javaSemanticServices); + javaTypeTransformer.setResolver(javaDescriptorResolver); + + javaSignatureResolver.setTypeTransformer(javaTypeTransformer); deserializedDescriptorResolver.setAnnotationDeserializer(annotationDescriptorDeserializer); deserializedDescriptorResolver.setJavaClassResolver(javaClassResolver); @@ -336,8 +335,8 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly javaInnerClassResolver.setClassResolver(javaClassResolver); javaPropertyResolver.setAnnotationResolver(javaAnnotationResolver); - javaPropertyResolver.setSemanticServices(javaSemanticServices); javaPropertyResolver.setTrace(bindingTrace); + javaPropertyResolver.setTypeTransformer(javaTypeTransformer); psiClassFinder.initialize(); diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaSemanticServices.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaSemanticServices.java index aac74265843..64ce348fa99 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaSemanticServices.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaSemanticServices.java @@ -21,18 +21,11 @@ import org.jetbrains.annotations.NotNull; import javax.inject.Inject; public class JavaSemanticServices { - @NotNull - private JavaTypeTransformer typeTransformer; @NotNull private JavaDescriptorResolver descriptorResolver; @NotNull private PsiClassFinder psiClassFinder; - @Inject - public void setTypeTransformer(@NotNull JavaTypeTransformer typeTransformer) { - this.typeTransformer = typeTransformer; - } - @Inject public void setDescriptorResolver(@NotNull JavaDescriptorResolver descriptorResolver) { this.descriptorResolver = descriptorResolver; @@ -43,11 +36,6 @@ public class JavaSemanticServices { this.psiClassFinder = psiClassFinder; } - @NotNull - public JavaTypeTransformer getTypeTransformer() { - return typeTransformer; - } - @NotNull public JavaDescriptorResolver getDescriptorResolver() { return descriptorResolver; diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaPropertyResolver.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaPropertyResolver.java index c79c3322d5b..85939990b0b 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaPropertyResolver.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaPropertyResolver.java @@ -45,8 +45,7 @@ import java.util.List; import java.util.Set; public final class JavaPropertyResolver { - - private JavaSemanticServices semanticServices; + private JavaTypeTransformer typeTransformer; private BindingTrace trace; private JavaAnnotationResolver annotationResolver; @@ -54,8 +53,8 @@ public final class JavaPropertyResolver { } @Inject - public void setSemanticServices(JavaSemanticServices semanticServices) { - this.semanticServices = semanticServices; + public void setTypeTransformer(@NotNull JavaTypeTransformer javaTypeTransformer) { + this.typeTransformer = javaTypeTransformer; } @Inject @@ -247,12 +246,8 @@ public final class JavaPropertyResolver { } @NotNull - private JetType getPropertyType( - PsiFieldWrapper field, - TypeVariableResolver typeVariableResolverForPropertyInternals - ) { - JetType propertyType = semanticServices.getTypeTransformer().transformToType( - field.getType(), typeVariableResolverForPropertyInternals); + private JetType getPropertyType(@NotNull PsiFieldWrapper field, @NotNull TypeVariableResolver typeVariableResolver) { + JetType propertyType = typeTransformer.transformToType(field.getType(), typeVariableResolver); boolean hasNotNullAnnotation = JavaAnnotationResolver.findAnnotationWithExternal( field.getPsiField(), diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaSignatureResolver.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaSignatureResolver.java index 1011e25f973..fb4b558124f 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaSignatureResolver.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaSignatureResolver.java @@ -27,11 +27,12 @@ import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor; import org.jetbrains.jet.lang.descriptors.TypeParameterDescriptor; import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor; import org.jetbrains.jet.lang.descriptors.impl.TypeParameterDescriptorImpl; -import org.jetbrains.jet.lang.resolve.java.JavaSemanticServices; +import org.jetbrains.jet.lang.resolve.java.JavaTypeTransformer; import org.jetbrains.jet.lang.resolve.java.TypeUsage; import org.jetbrains.jet.lang.resolve.java.TypeVariableResolver; import org.jetbrains.jet.lang.resolve.java.wrapper.PsiMethodWrapper; import org.jetbrains.jet.lang.resolve.name.Name; +import org.jetbrains.jet.lang.types.JetType; import org.jetbrains.jet.lang.types.Variance; import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; @@ -40,13 +41,12 @@ import java.util.Collections; import java.util.List; public final class JavaSignatureResolver { - @NotNull - private JavaSemanticServices semanticServices; + private JavaTypeTransformer typeTransformer; @Inject - public void setJavaSemanticServices(@NotNull JavaSemanticServices javaSemanticServices) { - this.semanticServices = javaSemanticServices; + public void setTypeTransformer(@NotNull JavaTypeTransformer javaTypeTransformer) { + this.typeTransformer = javaTypeTransformer; } public static class TypeParameterDescriptorInitialization { @@ -107,16 +107,10 @@ public final class JavaSignatureResolver { if (referencedTypes.length == 0) { typeParameterDescriptor.addUpperBound(KotlinBuiltIns.getInstance().getNullableAnyType()); } - else if (referencedTypes.length == 1) { - typeParameterDescriptor.addUpperBound(semanticServices.getTypeTransformer() - .transformToType(referencedTypes[0], TypeUsage.UPPER_BOUND, - typeVariableByPsiResolver)); - } else { for (PsiClassType referencedType : referencedTypes) { - typeParameterDescriptor.addUpperBound(semanticServices.getTypeTransformer() - .transformToType(referencedType, TypeUsage.UPPER_BOUND, - typeVariableByPsiResolver)); + JetType transformedType = typeTransformer.transformToType(referencedType, TypeUsage.UPPER_BOUND, typeVariableByPsiResolver); + typeParameterDescriptor.addUpperBound(transformedType); } } typeParameterDescriptor.setInitialized();