Got rid of dependency from InjectorForJavaSemanticServices on CompilerDependencies.
This commit is contained in:
+4
-7
@@ -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.JavaBridgeConfiguration;
|
||||||
import org.jetbrains.jet.lang.resolve.java.PsiClassFinderImpl;
|
import org.jetbrains.jet.lang.resolve.java.PsiClassFinderImpl;
|
||||||
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
|
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
|
||||||
import org.jetbrains.jet.lang.resolve.java.CompilerDependencies;
|
|
||||||
import org.jetbrains.jet.lang.resolve.java.CompilerSpecialMode;
|
import org.jetbrains.jet.lang.resolve.java.CompilerSpecialMode;
|
||||||
import com.intellij.openapi.project.Project;
|
import com.intellij.openapi.project.Project;
|
||||||
import org.jetbrains.jet.lang.resolve.java.JavaTypeTransformer;
|
import org.jetbrains.jet.lang.resolve.java.JavaTypeTransformer;
|
||||||
import org.jetbrains.jet.lang.resolve.java.JavaDescriptorSignatureResolver;
|
import org.jetbrains.jet.lang.resolve.java.JavaDescriptorSignatureResolver;
|
||||||
import org.jetbrains.jet.lang.resolve.NamespaceFactoryImpl;
|
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 com.intellij.openapi.project.Project;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import javax.annotation.PreDestroy;
|
import javax.annotation.PreDestroy;
|
||||||
@@ -43,15 +42,14 @@ public class InjectorForJavaSemanticServices {
|
|||||||
private JavaBridgeConfiguration javaBridgeConfiguration;
|
private JavaBridgeConfiguration javaBridgeConfiguration;
|
||||||
private PsiClassFinderImpl psiClassFinder;
|
private PsiClassFinderImpl psiClassFinder;
|
||||||
private ModuleDescriptor moduleDescriptor;
|
private ModuleDescriptor moduleDescriptor;
|
||||||
private final CompilerDependencies compilerDependencies;
|
private final CompilerSpecialMode compilerSpecialMode;
|
||||||
private CompilerSpecialMode compilerSpecialMode;
|
|
||||||
private final Project project;
|
private final Project project;
|
||||||
private JavaTypeTransformer javaTypeTransformer;
|
private JavaTypeTransformer javaTypeTransformer;
|
||||||
private JavaDescriptorSignatureResolver javaDescriptorSignatureResolver;
|
private JavaDescriptorSignatureResolver javaDescriptorSignatureResolver;
|
||||||
private NamespaceFactoryImpl namespaceFactory;
|
private NamespaceFactoryImpl namespaceFactory;
|
||||||
|
|
||||||
public InjectorForJavaSemanticServices(
|
public InjectorForJavaSemanticServices(
|
||||||
@NotNull CompilerDependencies compilerDependencies,
|
@NotNull CompilerSpecialMode compilerSpecialMode,
|
||||||
@NotNull Project project
|
@NotNull Project project
|
||||||
) {
|
) {
|
||||||
this.javaSemanticServices = new JavaSemanticServices();
|
this.javaSemanticServices = new JavaSemanticServices();
|
||||||
@@ -60,8 +58,7 @@ public class InjectorForJavaSemanticServices {
|
|||||||
this.javaBridgeConfiguration = new JavaBridgeConfiguration();
|
this.javaBridgeConfiguration = new JavaBridgeConfiguration();
|
||||||
this.psiClassFinder = new PsiClassFinderImpl();
|
this.psiClassFinder = new PsiClassFinderImpl();
|
||||||
this.moduleDescriptor = new org.jetbrains.jet.lang.descriptors.ModuleDescriptor(org.jetbrains.jet.lang.resolve.name.Name.special("<dummy>"));
|
this.moduleDescriptor = new org.jetbrains.jet.lang.descriptors.ModuleDescriptor(org.jetbrains.jet.lang.resolve.name.Name.special("<dummy>"));
|
||||||
this.compilerDependencies = compilerDependencies;
|
this.compilerSpecialMode = compilerSpecialMode;
|
||||||
this.compilerSpecialMode = compilerDependencies.getCompilerSpecialMode();
|
|
||||||
this.project = project;
|
this.project = project;
|
||||||
this.javaTypeTransformer = new JavaTypeTransformer();
|
this.javaTypeTransformer = new JavaTypeTransformer();
|
||||||
this.javaDescriptorSignatureResolver = new JavaDescriptorSignatureResolver();
|
this.javaDescriptorSignatureResolver = new JavaDescriptorSignatureResolver();
|
||||||
|
|||||||
@@ -74,7 +74,7 @@ public class JavaDescriptorResolverTest extends TestCaseWithTmpdir {
|
|||||||
jetCoreEnvironment.addToClasspath(tmpdir);
|
jetCoreEnvironment.addToClasspath(tmpdir);
|
||||||
|
|
||||||
InjectorForJavaSemanticServices injector = new InjectorForJavaSemanticServices(
|
InjectorForJavaSemanticServices injector = new InjectorForJavaSemanticServices(
|
||||||
jetCoreEnvironment.getCompilerDependencies(), jetCoreEnvironment.getProject());
|
CompilerSpecialMode.JDK_HEADERS, jetCoreEnvironment.getProject());
|
||||||
return injector.getJavaDescriptorResolver();
|
return injector.getJavaDescriptorResolver();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -83,7 +83,7 @@ public class JavaDescriptorResolverTest extends TestCaseWithTmpdir {
|
|||||||
.jdkAnnotationsForTests(), null));
|
.jdkAnnotationsForTests(), null));
|
||||||
|
|
||||||
InjectorForJavaSemanticServices injector = new InjectorForJavaSemanticServices(
|
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
|
// 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"));
|
injector.getJavaDescriptorResolver().resolveClass(new FqName("java.lang.Iterable"));
|
||||||
|
|||||||
@@ -118,7 +118,7 @@ public class ReadJavaBinaryClassTest extends TestCaseWithTmpdir {
|
|||||||
jetCoreEnvironment.addToClasspath(new File("out/production/runtime"));
|
jetCoreEnvironment.addToClasspath(new File("out/production/runtime"));
|
||||||
|
|
||||||
InjectorForJavaSemanticServices injector = new InjectorForJavaSemanticServices(
|
InjectorForJavaSemanticServices injector = new InjectorForJavaSemanticServices(
|
||||||
jetCoreEnvironment.getCompilerDependencies(), jetCoreEnvironment.getProject());
|
CompilerSpecialMode.JDK_HEADERS, jetCoreEnvironment.getProject());
|
||||||
JavaDescriptorResolver javaDescriptorResolver = injector.getJavaDescriptorResolver();
|
JavaDescriptorResolver javaDescriptorResolver = injector.getJavaDescriptorResolver();
|
||||||
return javaDescriptorResolver.resolveNamespace(FqName.topLevel(Name.identifier("test")), DescriptorSearchRule.ERROR_IF_FOUND_IN_KOTLIN);
|
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"));
|
jetCoreEnvironment.addToClasspath(new File("out/production/runtime"));
|
||||||
|
|
||||||
InjectorForJavaSemanticServices injector = new InjectorForJavaSemanticServices(
|
InjectorForJavaSemanticServices injector = new InjectorForJavaSemanticServices(
|
||||||
jetCoreEnvironment.getCompilerDependencies(), jetCoreEnvironment.getProject());
|
jetCoreEnvironment.getCompilerDependencies().getCompilerSpecialMode(), jetCoreEnvironment.getProject());
|
||||||
JavaDescriptorResolver javaDescriptorResolver = injector.getJavaDescriptorResolver();
|
JavaDescriptorResolver javaDescriptorResolver = injector.getJavaDescriptorResolver();
|
||||||
NamespaceDescriptor namespaceFromClass = javaDescriptorResolver.resolveNamespace(FqName.topLevel(Name.identifier("test")), DescriptorSearchRule.ERROR_IF_FOUND_IN_KOTLIN);
|
NamespaceDescriptor namespaceFromClass = javaDescriptorResolver.resolveNamespace(FqName.topLevel(Name.identifier("test")), DescriptorSearchRule.ERROR_IF_FOUND_IN_KOTLIN);
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -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;
|
boolean hasErrors;
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -125,7 +125,7 @@ public class JetResolveTest extends ExtensibleResolveTestCase {
|
|||||||
private PsiClass findClass(String qualifiedName) {
|
private PsiClass findClass(String qualifiedName) {
|
||||||
Project project = getProject();
|
Project project = getProject();
|
||||||
InjectorForJavaSemanticServices injector = new InjectorForJavaSemanticServices(
|
InjectorForJavaSemanticServices injector = new InjectorForJavaSemanticServices(
|
||||||
myEnvironment.getCompilerDependencies(), project);
|
myEnvironment.getCompilerDependencies().getCompilerSpecialMode(), project);
|
||||||
return injector.getPsiClassFinder().findPsiClass(new FqName(qualifiedName), PsiClassFinder.RuntimeClassesHandleMode.THROW);
|
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");
|
scope, scope.getContainingDeclaration(), RedeclarationHandler.DO_NOTHING, "JetTypeCheckerTest.addImports");
|
||||||
writableScope.importScope(library.getLibraryScope());
|
writableScope.importScope(library.getLibraryScope());
|
||||||
InjectorForJavaSemanticServices injector = new InjectorForJavaSemanticServices(
|
InjectorForJavaSemanticServices injector = new InjectorForJavaSemanticServices(
|
||||||
myEnvironment.getCompilerDependencies(), getProject());
|
myEnvironment.getCompilerDependencies().getCompilerSpecialMode(), getProject());
|
||||||
JavaDescriptorResolver javaDescriptorResolver = injector.getJavaDescriptorResolver();
|
JavaDescriptorResolver javaDescriptorResolver = injector.getJavaDescriptorResolver();
|
||||||
writableScope.importScope(javaDescriptorResolver.resolveNamespace(FqName.ROOT,
|
writableScope.importScope(javaDescriptorResolver.resolveNamespace(FqName.ROOT,
|
||||||
DescriptorSearchRule.INCLUDE_KOTLIN).getMemberScope());
|
DescriptorSearchRule.INCLUDE_KOTLIN).getMemberScope());
|
||||||
|
|||||||
@@ -62,8 +62,7 @@ class DecompiledDataFactory {
|
|||||||
private DecompiledDataFactory(ClsFileImpl clsFile) {
|
private DecompiledDataFactory(ClsFileImpl clsFile) {
|
||||||
myClsFile = clsFile;
|
myClsFile = clsFile;
|
||||||
Project project = myClsFile.getProject();
|
Project project = myClsFile.getProject();
|
||||||
InjectorForJavaSemanticServices injector = new InjectorForJavaSemanticServices(
|
InjectorForJavaSemanticServices injector = new InjectorForJavaSemanticServices(CompilerSpecialMode.REGULAR, project);
|
||||||
CompilerDependencies.compilerDependenciesForProduction(CompilerSpecialMode.REGULAR), project);
|
|
||||||
myBindingContext = injector.getBindingTrace().getBindingContext();
|
myBindingContext = injector.getBindingTrace().getBindingContext();
|
||||||
myJavaDescriptorResolver = injector.getJavaDescriptorResolver();
|
myJavaDescriptorResolver = injector.getJavaDescriptorResolver();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -152,8 +152,7 @@ public class AllInjectorsGenerator {
|
|||||||
generator.addPublicField(PsiClassFinderImpl.class);
|
generator.addPublicField(PsiClassFinderImpl.class);
|
||||||
generator.addField(false, ModuleDescriptor.class, null,
|
generator.addField(false, ModuleDescriptor.class, null,
|
||||||
new GivenExpression("new org.jetbrains.jet.lang.descriptors.ModuleDescriptor(org.jetbrains.jet.lang.resolve.name.Name.special(\"<dummy>\"))"));
|
new GivenExpression("new org.jetbrains.jet.lang.descriptors.ModuleDescriptor(org.jetbrains.jet.lang.resolve.name.Name.special(\"<dummy>\"))"));
|
||||||
generator.addParameter(CompilerDependencies.class);
|
generator.addParameter(CompilerSpecialMode.class);
|
||||||
generator.addField(false, CompilerSpecialMode.class, null, new GivenExpression("compilerDependencies.getCompilerSpecialMode()"));
|
|
||||||
|
|
||||||
// Parameters
|
// Parameters
|
||||||
generator.addPublicParameter(Project.class);
|
generator.addPublicParameter(Project.class);
|
||||||
|
|||||||
Reference in New Issue
Block a user