Simplify injectors for frontend.java

- delete InjectorForJavaSemanticServices, replace its usages with
  InjectorForJavaDescriptorResolver
- delete unneeded fields and parameters of InjectorForJavaDescriptorResolver
This commit is contained in:
Alexander Udalov
2013-07-24 18:35:05 +04:00
committed by Pavel V. Talanov
parent 3bd9d9ee32
commit 2d7a5ebf36
21 changed files with 88 additions and 365 deletions
@@ -18,19 +18,17 @@ package org.jetbrains.jet.di;
import com.intellij.openapi.project.Project;
import org.jetbrains.jet.lang.resolve.BindingTrace;
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
import org.jetbrains.jet.lang.resolve.java.JavaBridgeConfiguration;
import org.jetbrains.jet.lang.resolve.java.JavaSemanticServices;
import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver;
import org.jetbrains.jet.lang.resolve.java.PsiClassFinderImpl;
import org.jetbrains.jet.lang.resolve.java.provider.PsiDeclarationProviderFactory;
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.JavaSemanticServices;
import org.jetbrains.jet.lang.resolve.java.provider.PsiDeclarationProviderFactory;
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;
@@ -46,19 +44,17 @@ public class InjectorForJavaDescriptorResolver {
private final Project project;
private final BindingTrace bindingTrace;
private final ModuleDescriptor moduleDescriptor;
private final JavaBridgeConfiguration javaBridgeConfiguration;
private final JavaSemanticServices javaSemanticServices;
private final JavaDescriptorResolver javaDescriptorResolver;
private final PsiClassFinderImpl psiClassFinder;
private final PsiDeclarationProviderFactory psiDeclarationProviderFactory;
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 JavaSemanticServices javaSemanticServices;
private final PsiDeclarationProviderFactory psiDeclarationProviderFactory;
private final DeserializedDescriptorResolver deserializedDescriptorResolver;
private final AnnotationDescriptorDeserializer annotationDescriptorDeserializer;
private final JavaNamespaceResolver javaNamespaceResolver;
@@ -69,24 +65,21 @@ public class InjectorForJavaDescriptorResolver {
public InjectorForJavaDescriptorResolver(
@NotNull Project project,
@NotNull BindingTrace bindingTrace,
@NotNull ModuleDescriptor moduleDescriptor
@NotNull BindingTrace bindingTrace
) {
this.project = project;
this.bindingTrace = bindingTrace;
this.moduleDescriptor = moduleDescriptor;
this.javaBridgeConfiguration = new JavaBridgeConfiguration();
this.javaSemanticServices = new JavaSemanticServices();
this.javaDescriptorResolver = new JavaDescriptorResolver();
this.psiClassFinder = new PsiClassFinderImpl();
this.psiDeclarationProviderFactory = new PsiDeclarationProviderFactory(getPsiClassFinder());
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.javaSemanticServices = new JavaSemanticServices();
this.psiDeclarationProviderFactory = new PsiDeclarationProviderFactory(getPsiClassFinder());
this.deserializedDescriptorResolver = new DeserializedDescriptorResolver();
this.annotationDescriptorDeserializer = new AnnotationDescriptorDeserializer();
this.javaNamespaceResolver = new JavaNamespaceResolver();
@@ -95,14 +88,6 @@ public class InjectorForJavaDescriptorResolver {
this.javaInnerClassResolver = new JavaInnerClassResolver();
this.javaPropertyResolver = new JavaPropertyResolver();
this.javaBridgeConfiguration.setJavaSemanticServices(javaSemanticServices);
this.javaSemanticServices.setDescriptorResolver(javaDescriptorResolver);
this.javaSemanticServices.setPsiClassFinder(psiClassFinder);
this.javaSemanticServices.setPsiDeclarationProviderFactory(psiDeclarationProviderFactory);
this.javaSemanticServices.setTrace(bindingTrace);
this.javaSemanticServices.setTypeTransformer(javaTypeTransformer);
this.javaDescriptorResolver.setClassResolver(javaClassResolver);
this.javaDescriptorResolver.setConstructorResolver(javaConstructorResolver);
this.javaDescriptorResolver.setFunctionResolver(javaFunctionResolver);
@@ -112,8 +97,6 @@ public class InjectorForJavaDescriptorResolver {
this.psiClassFinder.setProject(project);
javaTypeTransformer.setResolver(javaDescriptorResolver);
javaClassResolver.setAnnotationResolver(javaAnnotationResolver);
javaClassResolver.setFunctionResolver(javaFunctionResolver);
javaClassResolver.setKotlinDescriptorResolver(deserializedDescriptorResolver);
@@ -138,8 +121,15 @@ public class InjectorForJavaDescriptorResolver {
javaValueParameterResolver.setTypeTransformer(javaTypeTransformer);
javaTypeTransformer.setResolver(javaDescriptorResolver);
javaSignatureResolver.setJavaSemanticServices(javaSemanticServices);
javaSemanticServices.setDescriptorResolver(javaDescriptorResolver);
javaSemanticServices.setPsiClassFinder(psiClassFinder);
javaSemanticServices.setPsiDeclarationProviderFactory(psiDeclarationProviderFactory);
javaSemanticServices.setTypeTransformer(javaTypeTransformer);
deserializedDescriptorResolver.setAnnotationDeserializer(annotationDescriptorDeserializer);
deserializedDescriptorResolver.setJavaClassResolver(javaClassResolver);
deserializedDescriptorResolver.setJavaNamespaceResolver(javaNamespaceResolver);
@@ -174,26 +164,6 @@ public class InjectorForJavaDescriptorResolver {
public void destroy() {
}
public Project getProject() {
return this.project;
}
public BindingTrace getBindingTrace() {
return this.bindingTrace;
}
public ModuleDescriptor getModuleDescriptor() {
return this.moduleDescriptor;
}
public JavaBridgeConfiguration getJavaBridgeConfiguration() {
return this.javaBridgeConfiguration;
}
public JavaSemanticServices getJavaSemanticServices() {
return this.javaSemanticServices;
}
public JavaDescriptorResolver getJavaDescriptorResolver() {
return this.javaDescriptorResolver;
}
@@ -1,197 +0,0 @@
/*
* Copyright 2010-2013 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jetbrains.jet.di;
import org.jetbrains.jet.lang.resolve.java.JavaSemanticServices;
import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver;
import org.jetbrains.jet.lang.resolve.BindingTrace;
import org.jetbrains.jet.lang.resolve.java.JavaBridgeConfiguration;
import org.jetbrains.jet.lang.resolve.java.PsiClassFinderImpl;
import org.jetbrains.jet.lang.descriptors.ModuleDescriptorImpl;
import com.intellij.openapi.project.Project;
import org.jetbrains.jet.lang.resolve.java.provider.PsiDeclarationProviderFactory;
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.resolver.JavaSignatureResolver;
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.resolver.JavaSupertypeResolver;
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.JavaPropertyResolver;
import org.jetbrains.annotations.NotNull;
import javax.annotation.PreDestroy;
/* This file is generated by org.jetbrains.jet.generators.injectors.GenerateInjectors. DO NOT EDIT! */
public class InjectorForJavaSemanticServices {
private final JavaSemanticServices javaSemanticServices;
private final JavaDescriptorResolver javaDescriptorResolver;
private final BindingTrace bindingTrace;
private final JavaBridgeConfiguration javaBridgeConfiguration;
private final PsiClassFinderImpl psiClassFinder;
private final ModuleDescriptorImpl moduleDescriptor;
private final Project project;
private final PsiDeclarationProviderFactory psiDeclarationProviderFactory;
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 JavaSignatureResolver javaSignatureResolver;
private final DeserializedDescriptorResolver deserializedDescriptorResolver;
private final AnnotationDescriptorDeserializer annotationDescriptorDeserializer;
private final JavaNamespaceResolver javaNamespaceResolver;
private final JavaSupertypeResolver javaSupertypeResolver;
private final JavaConstructorResolver javaConstructorResolver;
private final JavaInnerClassResolver javaInnerClassResolver;
private final JavaPropertyResolver javaPropertyResolver;
public InjectorForJavaSemanticServices(
@NotNull Project project
) {
this.javaSemanticServices = new JavaSemanticServices();
this.javaDescriptorResolver = new JavaDescriptorResolver();
this.bindingTrace = new org.jetbrains.jet.lang.resolve.BindingTraceContext();
this.javaBridgeConfiguration = new JavaBridgeConfiguration();
this.psiClassFinder = new PsiClassFinderImpl();
this.moduleDescriptor = new org.jetbrains.jet.lang.descriptors.ModuleDescriptorImpl(org.jetbrains.jet.lang.resolve.name.Name.special("<dummy>"), org.jetbrains.jet.lang.resolve.java.JavaBridgeConfiguration.ALL_JAVA_IMPORTS, org.jetbrains.jet.lang.resolve.java.JavaToKotlinClassMap.getInstance());
this.project = project;
this.psiDeclarationProviderFactory = new PsiDeclarationProviderFactory(getPsiClassFinder());
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.javaSignatureResolver = new JavaSignatureResolver();
this.deserializedDescriptorResolver = new DeserializedDescriptorResolver();
this.annotationDescriptorDeserializer = new AnnotationDescriptorDeserializer();
this.javaNamespaceResolver = new JavaNamespaceResolver();
this.javaSupertypeResolver = new JavaSupertypeResolver();
this.javaConstructorResolver = new JavaConstructorResolver();
this.javaInnerClassResolver = new JavaInnerClassResolver();
this.javaPropertyResolver = new JavaPropertyResolver();
this.javaSemanticServices.setDescriptorResolver(javaDescriptorResolver);
this.javaSemanticServices.setPsiClassFinder(psiClassFinder);
this.javaSemanticServices.setPsiDeclarationProviderFactory(psiDeclarationProviderFactory);
this.javaSemanticServices.setTrace(bindingTrace);
this.javaSemanticServices.setTypeTransformer(javaTypeTransformer);
this.javaDescriptorResolver.setClassResolver(javaClassResolver);
this.javaDescriptorResolver.setConstructorResolver(javaConstructorResolver);
this.javaDescriptorResolver.setFunctionResolver(javaFunctionResolver);
this.javaDescriptorResolver.setInnerClassResolver(javaInnerClassResolver);
this.javaDescriptorResolver.setNamespaceResolver(javaNamespaceResolver);
this.javaDescriptorResolver.setPropertiesResolver(javaPropertyResolver);
javaBridgeConfiguration.setJavaSemanticServices(javaSemanticServices);
this.psiClassFinder.setProject(project);
moduleDescriptor.setModuleConfiguration(javaBridgeConfiguration);
javaTypeTransformer.setResolver(javaDescriptorResolver);
javaClassResolver.setAnnotationResolver(javaAnnotationResolver);
javaClassResolver.setFunctionResolver(javaFunctionResolver);
javaClassResolver.setKotlinDescriptorResolver(deserializedDescriptorResolver);
javaClassResolver.setNamespaceResolver(javaNamespaceResolver);
javaClassResolver.setPsiClassFinder(psiClassFinder);
javaClassResolver.setSemanticServices(javaSemanticServices);
javaClassResolver.setSignatureResolver(javaSignatureResolver);
javaClassResolver.setSupertypesResolver(javaSupertypeResolver);
javaClassResolver.setTrace(bindingTrace);
javaAnnotationResolver.setClassResolver(javaClassResolver);
javaAnnotationResolver.setCompileTimeConstResolver(javaCompileTimeConstResolver);
javaCompileTimeConstResolver.setAnnotationResolver(javaAnnotationResolver);
javaCompileTimeConstResolver.setClassResolver(javaClassResolver);
javaFunctionResolver.setAnnotationResolver(javaAnnotationResolver);
javaFunctionResolver.setParameterResolver(javaValueParameterResolver);
javaFunctionResolver.setSignatureResolver(javaSignatureResolver);
javaFunctionResolver.setTrace(bindingTrace);
javaFunctionResolver.setTypeTransformer(javaTypeTransformer);
javaValueParameterResolver.setTypeTransformer(javaTypeTransformer);
javaSignatureResolver.setJavaSemanticServices(javaSemanticServices);
deserializedDescriptorResolver.setAnnotationDeserializer(annotationDescriptorDeserializer);
deserializedDescriptorResolver.setJavaClassResolver(javaClassResolver);
deserializedDescriptorResolver.setJavaNamespaceResolver(javaNamespaceResolver);
annotationDescriptorDeserializer.setJavaClassResolver(javaClassResolver);
annotationDescriptorDeserializer.setPsiClassFinder(psiClassFinder);
javaNamespaceResolver.setDeserializedDescriptorResolver(deserializedDescriptorResolver);
javaNamespaceResolver.setJavaSemanticServices(javaSemanticServices);
javaNamespaceResolver.setPsiClassFinder(psiClassFinder);
javaNamespaceResolver.setTrace(bindingTrace);
javaSupertypeResolver.setClassResolver(javaClassResolver);
javaSupertypeResolver.setTrace(bindingTrace);
javaSupertypeResolver.setTypeTransformer(javaTypeTransformer);
javaConstructorResolver.setTrace(bindingTrace);
javaConstructorResolver.setTypeTransformer(javaTypeTransformer);
javaConstructorResolver.setValueParameterResolver(javaValueParameterResolver);
javaInnerClassResolver.setClassResolver(javaClassResolver);
javaPropertyResolver.setAnnotationResolver(javaAnnotationResolver);
javaPropertyResolver.setSemanticServices(javaSemanticServices);
javaPropertyResolver.setTrace(bindingTrace);
psiClassFinder.initialize();
}
@PreDestroy
public void destroy() {
}
public JavaSemanticServices getJavaSemanticServices() {
return this.javaSemanticServices;
}
public JavaDescriptorResolver getJavaDescriptorResolver() {
return this.javaDescriptorResolver;
}
public BindingTrace getBindingTrace() {
return this.bindingTrace;
}
public PsiClassFinderImpl getPsiClassFinder() {
return this.psiClassFinder;
}
public Project getProject() {
return this.project;
}
}
@@ -287,7 +287,6 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
javaSemanticServices.setDescriptorResolver(javaDescriptorResolver);
javaSemanticServices.setPsiClassFinder(psiClassFinder);
javaSemanticServices.setPsiDeclarationProviderFactory(psiDeclarationProviderFactory);
javaSemanticServices.setTrace(bindingTrace);
javaSemanticServices.setTypeTransformer(javaTypeTransformer);
javaTypeTransformer.setResolver(javaDescriptorResolver);
@@ -78,10 +78,8 @@ public enum AnalyzerFacadeForJVM implements AnalyzerFacade {
@NotNull
@Override
public ResolveSession getLazyResolveSession(@NotNull Project fileProject, @NotNull Collection<JetFile> files) {
ModuleDescriptorImpl javaModule = createJavaModule("<java module>");
BindingTraceContext javaResolverTrace = new BindingTraceContext();
InjectorForJavaDescriptorResolver injector = new InjectorForJavaDescriptorResolver(fileProject, javaResolverTrace, javaModule);
InjectorForJavaDescriptorResolver injector = new InjectorForJavaDescriptorResolver(fileProject, javaResolverTrace);
final PsiClassFinder psiClassFinder = injector.getPsiClassFinder();
@@ -115,7 +113,6 @@ public enum AnalyzerFacadeForJVM implements AnalyzerFacade {
}
}
};
javaModule.setModuleConfiguration(moduleConfiguration);
ModuleDescriptorImpl lazyModule = createJavaModule("<lazy module>");
lazyModule.setModuleConfiguration(moduleConfiguration);
@@ -35,8 +35,6 @@ public class JavaSemanticServices {
@NotNull
private PsiClassFinder psiClassFinder;
@NotNull
private BindingTrace trace;
@NotNull
private PsiDeclarationProviderFactory psiDeclarationProviderFactory;
@Inject
@@ -55,8 +53,8 @@ public class JavaSemanticServices {
}
@Inject
public void setTrace(@NotNull BindingTrace trace) {
this.trace = trace;
public void setPsiDeclarationProviderFactory(@NotNull PsiDeclarationProviderFactory psiDeclarationProviderFactory) {
this.psiDeclarationProviderFactory = psiDeclarationProviderFactory;
}
@NotNull
@@ -64,21 +62,11 @@ public class JavaSemanticServices {
return typeTransformer;
}
@Inject
public void setPsiDeclarationProviderFactory(PsiDeclarationProviderFactory psiDeclarationProviderFactory) {
this.psiDeclarationProviderFactory = psiDeclarationProviderFactory;
}
@NotNull
public JavaDescriptorResolver getDescriptorResolver() {
return descriptorResolver;
}
@Nullable
public ClassDescriptor getKotlinClassDescriptor(@NotNull FqName qualifiedName) {
return trace.get(BindingContext.FQNAME_TO_CLASS_DESCRIPTOR, qualifiedName);
}
@NotNull
public PsiClassFinder getPsiClassFinder() {
return psiClassFinder;
@@ -88,9 +76,4 @@ public class JavaSemanticServices {
public PsiDeclarationProviderFactory getPsiDeclarationProviderFactory() {
return psiDeclarationProviderFactory;
}
@Nullable
public NamespaceDescriptor getKotlinNamespaceDescriptor(@NotNull FqName qualifiedName) {
return trace.get(BindingContext.FQNAME_TO_NAMESPACE_DESCRIPTOR, qualifiedName);
}
}
@@ -166,7 +166,7 @@ public final class JavaClassResolver {
}
// First, let's check that this is a real Java class, not a Java's view on a Kotlin class:
ClassDescriptor kotlinClassDescriptor = semanticServices.getKotlinClassDescriptor(qualifiedName);
ClassDescriptor kotlinClassDescriptor = trace.get(BindingContext.FQNAME_TO_CLASS_DESCRIPTOR, qualifiedName);
if (kotlinClassDescriptor != null) {
return searchRule.processFoundInKotlin(kotlinClassDescriptor);
}
@@ -92,7 +92,7 @@ public final class JavaNamespaceResolver {
@Nullable
public NamespaceDescriptor resolveNamespace(@NotNull FqName qualifiedName, @NotNull DescriptorSearchRule searchRule) {
// First, let's check that there is no Kotlin package:
NamespaceDescriptor kotlinNamespaceDescriptor = javaSemanticServices.getKotlinNamespaceDescriptor(qualifiedName);
NamespaceDescriptor kotlinNamespaceDescriptor = trace.get(BindingContext.FQNAME_TO_NAMESPACE_DESCRIPTOR, qualifiedName);
if (kotlinNamespaceDescriptor != null) {
return searchRule.processFoundInKotlin(kotlinNamespaceDescriptor);
}