Got rid of dependency from InjectorForJavaSemanticServices on CompilerDependencies.

This commit is contained in:
Evgeny Gerashchenko
2012-07-03 21:18:09 +04:00
parent 27c13d8c45
commit d9c645a57f
9 changed files with 13 additions and 18 deletions
@@ -23,13 +23,12 @@ 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.ModuleDescriptor;
import org.jetbrains.jet.lang.resolve.java.CompilerDependencies;
import org.jetbrains.jet.lang.resolve.java.CompilerSpecialMode;
import com.intellij.openapi.project.Project;
import org.jetbrains.jet.lang.resolve.java.JavaTypeTransformer;
import org.jetbrains.jet.lang.resolve.java.JavaDescriptorSignatureResolver;
import org.jetbrains.jet.lang.resolve.NamespaceFactoryImpl;
import org.jetbrains.jet.lang.resolve.java.CompilerDependencies;
import org.jetbrains.jet.lang.resolve.java.CompilerSpecialMode;
import com.intellij.openapi.project.Project;
import org.jetbrains.annotations.NotNull;
import javax.annotation.PreDestroy;
@@ -43,15 +42,14 @@ public class InjectorForJavaSemanticServices {
private JavaBridgeConfiguration javaBridgeConfiguration;
private PsiClassFinderImpl psiClassFinder;
private ModuleDescriptor moduleDescriptor;
private final CompilerDependencies compilerDependencies;
private CompilerSpecialMode compilerSpecialMode;
private final CompilerSpecialMode compilerSpecialMode;
private final Project project;
private JavaTypeTransformer javaTypeTransformer;
private JavaDescriptorSignatureResolver javaDescriptorSignatureResolver;
private NamespaceFactoryImpl namespaceFactory;
public InjectorForJavaSemanticServices(
@NotNull CompilerDependencies compilerDependencies,
@NotNull CompilerSpecialMode compilerSpecialMode,
@NotNull Project project
) {
this.javaSemanticServices = new JavaSemanticServices();
@@ -60,8 +58,7 @@ public class InjectorForJavaSemanticServices {
this.javaBridgeConfiguration = new JavaBridgeConfiguration();
this.psiClassFinder = new PsiClassFinderImpl();
this.moduleDescriptor = new org.jetbrains.jet.lang.descriptors.ModuleDescriptor(org.jetbrains.jet.lang.resolve.name.Name.special("<dummy>"));
this.compilerDependencies = compilerDependencies;
this.compilerSpecialMode = compilerDependencies.getCompilerSpecialMode();
this.compilerSpecialMode = compilerSpecialMode;
this.project = project;
this.javaTypeTransformer = new JavaTypeTransformer();
this.javaDescriptorSignatureResolver = new JavaDescriptorSignatureResolver();
@@ -74,7 +74,7 @@ public class JavaDescriptorResolverTest extends TestCaseWithTmpdir {
jetCoreEnvironment.addToClasspath(tmpdir);
InjectorForJavaSemanticServices injector = new InjectorForJavaSemanticServices(
jetCoreEnvironment.getCompilerDependencies(), jetCoreEnvironment.getProject());
CompilerSpecialMode.JDK_HEADERS, jetCoreEnvironment.getProject());
return injector.getJavaDescriptorResolver();
}
@@ -83,7 +83,7 @@ public class JavaDescriptorResolverTest extends TestCaseWithTmpdir {
.jdkAnnotationsForTests(), null));
InjectorForJavaSemanticServices injector = new InjectorForJavaSemanticServices(
jetCoreEnvironment.getCompilerDependencies(), jetCoreEnvironment.getProject());
CompilerSpecialMode.IDEA, jetCoreEnvironment.getProject());
// java.lang.Iterable must exist in jdk-headers otherwize this test is meaningless, resolveClass always returns null
injector.getJavaDescriptorResolver().resolveClass(new FqName("java.lang.Iterable"));
@@ -118,7 +118,7 @@ public class ReadJavaBinaryClassTest extends TestCaseWithTmpdir {
jetCoreEnvironment.addToClasspath(new File("out/production/runtime"));
InjectorForJavaSemanticServices injector = new InjectorForJavaSemanticServices(
jetCoreEnvironment.getCompilerDependencies(), jetCoreEnvironment.getProject());
CompilerSpecialMode.JDK_HEADERS, jetCoreEnvironment.getProject());
JavaDescriptorResolver javaDescriptorResolver = injector.getJavaDescriptorResolver();
return javaDescriptorResolver.resolveNamespace(FqName.topLevel(Name.identifier("test")), DescriptorSearchRule.ERROR_IF_FOUND_IN_KOTLIN);
}
@@ -93,7 +93,7 @@ public class ReadKotlinBinaryClassTest extends TestCaseWithTmpdir {
jetCoreEnvironment.addToClasspath(new File("out/production/runtime"));
InjectorForJavaSemanticServices injector = new InjectorForJavaSemanticServices(
jetCoreEnvironment.getCompilerDependencies(), jetCoreEnvironment.getProject());
jetCoreEnvironment.getCompilerDependencies().getCompilerSpecialMode(), jetCoreEnvironment.getProject());
JavaDescriptorResolver javaDescriptorResolver = injector.getJavaDescriptorResolver();
NamespaceDescriptor namespaceFromClass = javaDescriptorResolver.resolveNamespace(FqName.topLevel(Name.identifier("test")), DescriptorSearchRule.ERROR_IF_FOUND_IN_KOTLIN);
@@ -160,7 +160,7 @@ public class ResolveDescriptorsFromExternalLibraries {
}
InjectorForJavaSemanticServices injector = new InjectorForJavaSemanticServices(jetCoreEnvironment.getCompilerDependencies(), jetCoreEnvironment.getProject());
InjectorForJavaSemanticServices injector = new InjectorForJavaSemanticServices(CompilerSpecialMode.STDLIB, jetCoreEnvironment.getProject());
boolean hasErrors;
try {
@@ -125,7 +125,7 @@ public class JetResolveTest extends ExtensibleResolveTestCase {
private PsiClass findClass(String qualifiedName) {
Project project = getProject();
InjectorForJavaSemanticServices injector = new InjectorForJavaSemanticServices(
myEnvironment.getCompilerDependencies(), project);
myEnvironment.getCompilerDependencies().getCompilerSpecialMode(), project);
return injector.getPsiClassFinder().findPsiClass(new FqName(qualifiedName), PsiClassFinder.RuntimeClassesHandleMode.THROW);
}
@@ -594,7 +594,7 @@ public class JetTypeCheckerTest extends JetLiteFixture {
scope, scope.getContainingDeclaration(), RedeclarationHandler.DO_NOTHING, "JetTypeCheckerTest.addImports");
writableScope.importScope(library.getLibraryScope());
InjectorForJavaSemanticServices injector = new InjectorForJavaSemanticServices(
myEnvironment.getCompilerDependencies(), getProject());
myEnvironment.getCompilerDependencies().getCompilerSpecialMode(), getProject());
JavaDescriptorResolver javaDescriptorResolver = injector.getJavaDescriptorResolver();
writableScope.importScope(javaDescriptorResolver.resolveNamespace(FqName.ROOT,
DescriptorSearchRule.INCLUDE_KOTLIN).getMemberScope());
@@ -62,8 +62,7 @@ class DecompiledDataFactory {
private DecompiledDataFactory(ClsFileImpl clsFile) {
myClsFile = clsFile;
Project project = myClsFile.getProject();
InjectorForJavaSemanticServices injector = new InjectorForJavaSemanticServices(
CompilerDependencies.compilerDependenciesForProduction(CompilerSpecialMode.REGULAR), project);
InjectorForJavaSemanticServices injector = new InjectorForJavaSemanticServices(CompilerSpecialMode.REGULAR, project);
myBindingContext = injector.getBindingTrace().getBindingContext();
myJavaDescriptorResolver = injector.getJavaDescriptorResolver();
}
@@ -152,8 +152,7 @@ public class AllInjectorsGenerator {
generator.addPublicField(PsiClassFinderImpl.class);
generator.addField(false, ModuleDescriptor.class, null,
new GivenExpression("new org.jetbrains.jet.lang.descriptors.ModuleDescriptor(org.jetbrains.jet.lang.resolve.name.Name.special(\"<dummy>\"))"));
generator.addParameter(CompilerDependencies.class);
generator.addField(false, CompilerSpecialMode.class, null, new GivenExpression("compilerDependencies.getCompilerSpecialMode()"));
generator.addParameter(CompilerSpecialMode.class);
// Parameters
generator.addPublicParameter(Project.class);