Delete JavaSemanticServices.getTypeTransformer()

Two clients can depend on JavaTypeTransformer directly instead of
JavaSemanticServices
This commit is contained in:
Alexander Udalov
2013-07-24 19:05:04 +04:00
committed by Pavel V. Talanov
parent dbf324667f
commit a0cbe80aca
5 changed files with 27 additions and 52 deletions
@@ -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.resolver.JavaValueParameterResolver;
import org.jetbrains.jet.lang.resolve.java.JavaTypeTransformer; 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.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.DeserializedDescriptorResolver;
import org.jetbrains.jet.lang.resolve.java.resolver.AnnotationDescriptorDeserializer; 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.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.JavaSupertypeResolver;
import org.jetbrains.jet.lang.resolve.java.resolver.JavaConstructorResolver; import org.jetbrains.jet.lang.resolve.java.resolver.JavaConstructorResolver;
import org.jetbrains.jet.lang.resolve.java.resolver.JavaInnerClassResolver; import org.jetbrains.jet.lang.resolve.java.resolver.JavaInnerClassResolver;
@@ -52,10 +52,10 @@ public class InjectorForJavaDescriptorResolver {
private final JavaValueParameterResolver javaValueParameterResolver; private final JavaValueParameterResolver javaValueParameterResolver;
private final JavaTypeTransformer javaTypeTransformer; private final JavaTypeTransformer javaTypeTransformer;
private final JavaSignatureResolver javaSignatureResolver; private final JavaSignatureResolver javaSignatureResolver;
private final JavaSemanticServices javaSemanticServices;
private final DeserializedDescriptorResolver deserializedDescriptorResolver; private final DeserializedDescriptorResolver deserializedDescriptorResolver;
private final AnnotationDescriptorDeserializer annotationDescriptorDeserializer; private final AnnotationDescriptorDeserializer annotationDescriptorDeserializer;
private final JavaNamespaceResolver javaNamespaceResolver; private final JavaNamespaceResolver javaNamespaceResolver;
private final JavaSemanticServices javaSemanticServices;
private final JavaSupertypeResolver javaSupertypeResolver; private final JavaSupertypeResolver javaSupertypeResolver;
private final JavaConstructorResolver javaConstructorResolver; private final JavaConstructorResolver javaConstructorResolver;
private final JavaInnerClassResolver javaInnerClassResolver; private final JavaInnerClassResolver javaInnerClassResolver;
@@ -76,10 +76,10 @@ public class InjectorForJavaDescriptorResolver {
this.javaValueParameterResolver = new JavaValueParameterResolver(); this.javaValueParameterResolver = new JavaValueParameterResolver();
this.javaTypeTransformer = new JavaTypeTransformer(); this.javaTypeTransformer = new JavaTypeTransformer();
this.javaSignatureResolver = new JavaSignatureResolver(); this.javaSignatureResolver = new JavaSignatureResolver();
this.javaSemanticServices = new JavaSemanticServices();
this.deserializedDescriptorResolver = new DeserializedDescriptorResolver(); this.deserializedDescriptorResolver = new DeserializedDescriptorResolver();
this.annotationDescriptorDeserializer = new AnnotationDescriptorDeserializer(); this.annotationDescriptorDeserializer = new AnnotationDescriptorDeserializer();
this.javaNamespaceResolver = new JavaNamespaceResolver(); this.javaNamespaceResolver = new JavaNamespaceResolver();
this.javaSemanticServices = new JavaSemanticServices();
this.javaSupertypeResolver = new JavaSupertypeResolver(); this.javaSupertypeResolver = new JavaSupertypeResolver();
this.javaConstructorResolver = new JavaConstructorResolver(); this.javaConstructorResolver = new JavaConstructorResolver();
this.javaInnerClassResolver = new JavaInnerClassResolver(); this.javaInnerClassResolver = new JavaInnerClassResolver();
@@ -120,11 +120,7 @@ public class InjectorForJavaDescriptorResolver {
javaTypeTransformer.setResolver(javaDescriptorResolver); javaTypeTransformer.setResolver(javaDescriptorResolver);
javaSignatureResolver.setJavaSemanticServices(javaSemanticServices); javaSignatureResolver.setTypeTransformer(javaTypeTransformer);
javaSemanticServices.setDescriptorResolver(javaDescriptorResolver);
javaSemanticServices.setPsiClassFinder(psiClassFinder);
javaSemanticServices.setTypeTransformer(javaTypeTransformer);
deserializedDescriptorResolver.setAnnotationDeserializer(annotationDescriptorDeserializer); deserializedDescriptorResolver.setAnnotationDeserializer(annotationDescriptorDeserializer);
deserializedDescriptorResolver.setJavaClassResolver(javaClassResolver); deserializedDescriptorResolver.setJavaClassResolver(javaClassResolver);
@@ -138,6 +134,9 @@ public class InjectorForJavaDescriptorResolver {
javaNamespaceResolver.setPsiClassFinder(psiClassFinder); javaNamespaceResolver.setPsiClassFinder(psiClassFinder);
javaNamespaceResolver.setTrace(bindingTrace); javaNamespaceResolver.setTrace(bindingTrace);
javaSemanticServices.setDescriptorResolver(javaDescriptorResolver);
javaSemanticServices.setPsiClassFinder(psiClassFinder);
javaSupertypeResolver.setClassResolver(javaClassResolver); javaSupertypeResolver.setClassResolver(javaClassResolver);
javaSupertypeResolver.setTrace(bindingTrace); javaSupertypeResolver.setTrace(bindingTrace);
javaSupertypeResolver.setTypeTransformer(javaTypeTransformer); javaSupertypeResolver.setTypeTransformer(javaTypeTransformer);
@@ -149,8 +148,8 @@ public class InjectorForJavaDescriptorResolver {
javaInnerClassResolver.setClassResolver(javaClassResolver); javaInnerClassResolver.setClassResolver(javaClassResolver);
javaPropertyResolver.setAnnotationResolver(javaAnnotationResolver); javaPropertyResolver.setAnnotationResolver(javaAnnotationResolver);
javaPropertyResolver.setSemanticServices(javaSemanticServices);
javaPropertyResolver.setTrace(bindingTrace); javaPropertyResolver.setTrace(bindingTrace);
javaPropertyResolver.setTypeTransformer(javaTypeTransformer);
psiClassFinder.initialize(); psiClassFinder.initialize();
@@ -48,12 +48,12 @@ import org.jetbrains.jet.lang.resolve.OverrideResolver;
import org.jetbrains.jet.lang.resolve.TypeHierarchyResolver; import org.jetbrains.jet.lang.resolve.TypeHierarchyResolver;
import org.jetbrains.jet.lang.resolve.ScriptBodyResolver; import org.jetbrains.jet.lang.resolve.ScriptBodyResolver;
import org.jetbrains.jet.lang.resolve.java.JavaSemanticServices; 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.JavaClassResolver;
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.resolver.JavaCompileTimeConstResolver; 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.JavaFunctionResolver;
import org.jetbrains.jet.lang.resolve.java.resolver.JavaValueParameterResolver; 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.JavaSignatureResolver;
import org.jetbrains.jet.lang.resolve.java.resolver.DeserializedDescriptorResolver; 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.AnnotationDescriptorDeserializer;
@@ -100,12 +100,12 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
private final TypeHierarchyResolver typeHierarchyResolver; private final TypeHierarchyResolver typeHierarchyResolver;
private final ScriptBodyResolver scriptBodyResolver; private final ScriptBodyResolver scriptBodyResolver;
private final JavaSemanticServices javaSemanticServices; private final JavaSemanticServices javaSemanticServices;
private final JavaTypeTransformer javaTypeTransformer;
private final JavaClassResolver javaClassResolver; private final JavaClassResolver javaClassResolver;
private final JavaAnnotationResolver javaAnnotationResolver; private final JavaAnnotationResolver javaAnnotationResolver;
private final JavaCompileTimeConstResolver javaCompileTimeConstResolver; private final JavaCompileTimeConstResolver javaCompileTimeConstResolver;
private final JavaFunctionResolver javaFunctionResolver; private final JavaFunctionResolver javaFunctionResolver;
private final JavaValueParameterResolver javaValueParameterResolver; private final JavaValueParameterResolver javaValueParameterResolver;
private final JavaTypeTransformer javaTypeTransformer;
private final JavaSignatureResolver javaSignatureResolver; private final JavaSignatureResolver javaSignatureResolver;
private final DeserializedDescriptorResolver deserializedDescriptorResolver; private final DeserializedDescriptorResolver deserializedDescriptorResolver;
private final AnnotationDescriptorDeserializer annotationDescriptorDeserializer; private final AnnotationDescriptorDeserializer annotationDescriptorDeserializer;
@@ -153,12 +153,12 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
this.typeHierarchyResolver = new TypeHierarchyResolver(); this.typeHierarchyResolver = new TypeHierarchyResolver();
this.scriptBodyResolver = new ScriptBodyResolver(); this.scriptBodyResolver = new ScriptBodyResolver();
this.javaSemanticServices = new JavaSemanticServices(); this.javaSemanticServices = new JavaSemanticServices();
this.javaTypeTransformer = new JavaTypeTransformer();
this.javaClassResolver = new JavaClassResolver(); this.javaClassResolver = new JavaClassResolver();
this.javaAnnotationResolver = new JavaAnnotationResolver(); this.javaAnnotationResolver = new JavaAnnotationResolver();
this.javaCompileTimeConstResolver = new JavaCompileTimeConstResolver(); this.javaCompileTimeConstResolver = new JavaCompileTimeConstResolver();
this.javaFunctionResolver = new JavaFunctionResolver(); this.javaFunctionResolver = new JavaFunctionResolver();
this.javaValueParameterResolver = new JavaValueParameterResolver(); this.javaValueParameterResolver = new JavaValueParameterResolver();
this.javaTypeTransformer = new JavaTypeTransformer();
this.javaSignatureResolver = new JavaSignatureResolver(); this.javaSignatureResolver = new JavaSignatureResolver();
this.deserializedDescriptorResolver = new DeserializedDescriptorResolver(); this.deserializedDescriptorResolver = new DeserializedDescriptorResolver();
this.annotationDescriptorDeserializer = new AnnotationDescriptorDeserializer(); this.annotationDescriptorDeserializer = new AnnotationDescriptorDeserializer();
@@ -283,9 +283,6 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
javaSemanticServices.setDescriptorResolver(javaDescriptorResolver); javaSemanticServices.setDescriptorResolver(javaDescriptorResolver);
javaSemanticServices.setPsiClassFinder(psiClassFinder); javaSemanticServices.setPsiClassFinder(psiClassFinder);
javaSemanticServices.setTypeTransformer(javaTypeTransformer);
javaTypeTransformer.setResolver(javaDescriptorResolver);
javaClassResolver.setAnnotationResolver(javaAnnotationResolver); javaClassResolver.setAnnotationResolver(javaAnnotationResolver);
javaClassResolver.setFunctionResolver(javaFunctionResolver); javaClassResolver.setFunctionResolver(javaFunctionResolver);
@@ -311,7 +308,9 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
javaValueParameterResolver.setTypeTransformer(javaTypeTransformer); javaValueParameterResolver.setTypeTransformer(javaTypeTransformer);
javaSignatureResolver.setJavaSemanticServices(javaSemanticServices); javaTypeTransformer.setResolver(javaDescriptorResolver);
javaSignatureResolver.setTypeTransformer(javaTypeTransformer);
deserializedDescriptorResolver.setAnnotationDeserializer(annotationDescriptorDeserializer); deserializedDescriptorResolver.setAnnotationDeserializer(annotationDescriptorDeserializer);
deserializedDescriptorResolver.setJavaClassResolver(javaClassResolver); deserializedDescriptorResolver.setJavaClassResolver(javaClassResolver);
@@ -336,8 +335,8 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
javaInnerClassResolver.setClassResolver(javaClassResolver); javaInnerClassResolver.setClassResolver(javaClassResolver);
javaPropertyResolver.setAnnotationResolver(javaAnnotationResolver); javaPropertyResolver.setAnnotationResolver(javaAnnotationResolver);
javaPropertyResolver.setSemanticServices(javaSemanticServices);
javaPropertyResolver.setTrace(bindingTrace); javaPropertyResolver.setTrace(bindingTrace);
javaPropertyResolver.setTypeTransformer(javaTypeTransformer);
psiClassFinder.initialize(); psiClassFinder.initialize();
@@ -21,18 +21,11 @@ import org.jetbrains.annotations.NotNull;
import javax.inject.Inject; import javax.inject.Inject;
public class JavaSemanticServices { public class JavaSemanticServices {
@NotNull
private JavaTypeTransformer typeTransformer;
@NotNull @NotNull
private JavaDescriptorResolver descriptorResolver; private JavaDescriptorResolver descriptorResolver;
@NotNull @NotNull
private PsiClassFinder psiClassFinder; private PsiClassFinder psiClassFinder;
@Inject
public void setTypeTransformer(@NotNull JavaTypeTransformer typeTransformer) {
this.typeTransformer = typeTransformer;
}
@Inject @Inject
public void setDescriptorResolver(@NotNull JavaDescriptorResolver descriptorResolver) { public void setDescriptorResolver(@NotNull JavaDescriptorResolver descriptorResolver) {
this.descriptorResolver = descriptorResolver; this.descriptorResolver = descriptorResolver;
@@ -43,11 +36,6 @@ public class JavaSemanticServices {
this.psiClassFinder = psiClassFinder; this.psiClassFinder = psiClassFinder;
} }
@NotNull
public JavaTypeTransformer getTypeTransformer() {
return typeTransformer;
}
@NotNull @NotNull
public JavaDescriptorResolver getDescriptorResolver() { public JavaDescriptorResolver getDescriptorResolver() {
return descriptorResolver; return descriptorResolver;
@@ -45,8 +45,7 @@ import java.util.List;
import java.util.Set; import java.util.Set;
public final class JavaPropertyResolver { public final class JavaPropertyResolver {
private JavaTypeTransformer typeTransformer;
private JavaSemanticServices semanticServices;
private BindingTrace trace; private BindingTrace trace;
private JavaAnnotationResolver annotationResolver; private JavaAnnotationResolver annotationResolver;
@@ -54,8 +53,8 @@ public final class JavaPropertyResolver {
} }
@Inject @Inject
public void setSemanticServices(JavaSemanticServices semanticServices) { public void setTypeTransformer(@NotNull JavaTypeTransformer javaTypeTransformer) {
this.semanticServices = semanticServices; this.typeTransformer = javaTypeTransformer;
} }
@Inject @Inject
@@ -247,12 +246,8 @@ public final class JavaPropertyResolver {
} }
@NotNull @NotNull
private JetType getPropertyType( private JetType getPropertyType(@NotNull PsiFieldWrapper field, @NotNull TypeVariableResolver typeVariableResolver) {
PsiFieldWrapper field, JetType propertyType = typeTransformer.transformToType(field.getType(), typeVariableResolver);
TypeVariableResolver typeVariableResolverForPropertyInternals
) {
JetType propertyType = semanticServices.getTypeTransformer().transformToType(
field.getType(), typeVariableResolverForPropertyInternals);
boolean hasNotNullAnnotation = JavaAnnotationResolver.findAnnotationWithExternal( boolean hasNotNullAnnotation = JavaAnnotationResolver.findAnnotationWithExternal(
field.getPsiField(), field.getPsiField(),
@@ -27,11 +27,12 @@ import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
import org.jetbrains.jet.lang.descriptors.TypeParameterDescriptor; import org.jetbrains.jet.lang.descriptors.TypeParameterDescriptor;
import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor; import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor;
import org.jetbrains.jet.lang.descriptors.impl.TypeParameterDescriptorImpl; 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.TypeUsage;
import org.jetbrains.jet.lang.resolve.java.TypeVariableResolver; import org.jetbrains.jet.lang.resolve.java.TypeVariableResolver;
import org.jetbrains.jet.lang.resolve.java.wrapper.PsiMethodWrapper; import org.jetbrains.jet.lang.resolve.java.wrapper.PsiMethodWrapper;
import org.jetbrains.jet.lang.resolve.name.Name; 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.Variance;
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
@@ -40,13 +41,12 @@ import java.util.Collections;
import java.util.List; import java.util.List;
public final class JavaSignatureResolver { public final class JavaSignatureResolver {
@NotNull @NotNull
private JavaSemanticServices semanticServices; private JavaTypeTransformer typeTransformer;
@Inject @Inject
public void setJavaSemanticServices(@NotNull JavaSemanticServices javaSemanticServices) { public void setTypeTransformer(@NotNull JavaTypeTransformer javaTypeTransformer) {
this.semanticServices = javaSemanticServices; this.typeTransformer = javaTypeTransformer;
} }
public static class TypeParameterDescriptorInitialization { public static class TypeParameterDescriptorInitialization {
@@ -107,16 +107,10 @@ public final class JavaSignatureResolver {
if (referencedTypes.length == 0) { if (referencedTypes.length == 0) {
typeParameterDescriptor.addUpperBound(KotlinBuiltIns.getInstance().getNullableAnyType()); typeParameterDescriptor.addUpperBound(KotlinBuiltIns.getInstance().getNullableAnyType());
} }
else if (referencedTypes.length == 1) {
typeParameterDescriptor.addUpperBound(semanticServices.getTypeTransformer()
.transformToType(referencedTypes[0], TypeUsage.UPPER_BOUND,
typeVariableByPsiResolver));
}
else { else {
for (PsiClassType referencedType : referencedTypes) { for (PsiClassType referencedType : referencedTypes) {
typeParameterDescriptor.addUpperBound(semanticServices.getTypeTransformer() JetType transformedType = typeTransformer.transformToType(referencedType, TypeUsage.UPPER_BOUND, typeVariableByPsiResolver);
.transformToType(referencedType, TypeUsage.UPPER_BOUND, typeParameterDescriptor.addUpperBound(transformedType);
typeVariableByPsiResolver));
} }
} }
typeParameterDescriptor.setInitialized(); typeParameterDescriptor.setInitialized();