From 4da926f311668c3e02a0dabe87526bcfd5cf2f82 Mon Sep 17 00:00:00 2001 From: Stepan Koltsov Date: Thu, 22 Mar 2012 03:47:19 +0400 Subject: [PATCH] add NamespaceFactory dependency to JavaNamespaceDescriptor (JavaNamespaceDescriptor will be killed soon, NamespaceFactory will be used to create nss) --- .../jet/di/InjectorForJavaSemanticServices.java | 14 ++++++++++++++ .../jet/di/InjectorForTopDownAnalyzerForJvm.java | 1 + .../lang/resolve/java/JavaDescriptorResolver.java | 11 +++++++---- .../jetbrains/jet/di/AllInjectorsGenerator.java | 6 +++++- 4 files changed, 27 insertions(+), 5 deletions(-) diff --git a/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForJavaSemanticServices.java b/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForJavaSemanticServices.java index b806ac4440d..b1e4baf061b 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForJavaSemanticServices.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForJavaSemanticServices.java @@ -20,8 +20,11 @@ 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.descriptors.ModuleDescriptor; import com.intellij.openapi.project.Project; import org.jetbrains.jet.lang.resolve.java.JavaTypeTransformer; +import org.jetbrains.jet.lang.resolve.NamespaceFactoryImpl; import com.intellij.openapi.project.Project; import org.jetbrains.annotations.NotNull; @@ -39,19 +42,30 @@ public class InjectorForJavaSemanticServices { this.javaSemanticServices = new JavaSemanticServices(); this.javaDescriptorResolver = new JavaDescriptorResolver(); this.bindingTrace = new org.jetbrains.jet.lang.resolve.BindingTraceContext(); + JavaBridgeConfiguration javaBridgeConfiguration = new JavaBridgeConfiguration(); + ModuleDescriptor moduleDescriptor = new org.jetbrains.jet.lang.descriptors.ModuleDescriptor(""); this.project = project; JavaTypeTransformer javaTypeTransformer = new JavaTypeTransformer(); + NamespaceFactoryImpl namespaceFactoryImpl = new NamespaceFactoryImpl(); this.javaSemanticServices.setDescriptorResolver(javaDescriptorResolver); this.javaSemanticServices.setTrace(bindingTrace); this.javaSemanticServices.setTypeTransformer(javaTypeTransformer); + this.javaDescriptorResolver.setNamespaceFactory(namespaceFactoryImpl); this.javaDescriptorResolver.setProject(project); this.javaDescriptorResolver.setSemanticServices(javaSemanticServices); + javaBridgeConfiguration.setJavaSemanticServices(javaSemanticServices); + javaBridgeConfiguration.setProject(project); + javaTypeTransformer.setJavaSemanticServices(javaSemanticServices); javaTypeTransformer.setResolver(javaDescriptorResolver); + namespaceFactoryImpl.setConfiguration(javaBridgeConfiguration); + namespaceFactoryImpl.setModuleDescriptor(moduleDescriptor); + namespaceFactoryImpl.setTrace(bindingTrace); + } public JavaSemanticServices getJavaSemanticServices() { 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 dbd5fa52d83..008063aa7d7 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJvm.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJvm.java @@ -187,6 +187,7 @@ public class InjectorForTopDownAnalyzerForJvm { javaSemanticServices.setTrace(observableBindingTrace); javaSemanticServices.setTypeTransformer(javaTypeTransformer); + javaDescriptorResolver.setNamespaceFactory(namespaceFactoryImpl); javaDescriptorResolver.setProject(project); javaDescriptorResolver.setSemanticServices(javaSemanticServices); diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java index 48f02974962..19813034482 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java @@ -32,10 +32,7 @@ import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.lang.descriptors.*; import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor; import org.jetbrains.jet.lang.psi.JetPsiUtil; -import org.jetbrains.jet.lang.resolve.BindingContext; -import org.jetbrains.jet.lang.resolve.DescriptorUtils; -import org.jetbrains.jet.lang.resolve.FqName; -import org.jetbrains.jet.lang.resolve.OverrideResolver; +import org.jetbrains.jet.lang.resolve.*; import org.jetbrains.jet.lang.resolve.constants.*; import org.jetbrains.jet.lang.resolve.java.alt.AltClassFinder; import org.jetbrains.jet.lang.resolve.java.kt.JetClassAnnotation; @@ -199,6 +196,7 @@ public class JavaDescriptorResolver { protected GlobalSearchScope javaSearchScope ; protected JavaSemanticServices semanticServices; private AltClassFinder altClassFinder; + private NamespaceFactory namespaceFactory; @Inject public void setProject(Project project) { @@ -213,6 +211,11 @@ public class JavaDescriptorResolver { this.javaFacade = JavaPsiFacade.getInstance(project); } + @Inject + public void setNamespaceFactory(NamespaceFactoryImpl namespaceFactory) { + this.namespaceFactory = namespaceFactory; + } + @Inject public void setSemanticServices(JavaSemanticServices semanticServices) { this.semanticServices = semanticServices; diff --git a/injector-generator/src/org/jetbrains/jet/di/AllInjectorsGenerator.java b/injector-generator/src/org/jetbrains/jet/di/AllInjectorsGenerator.java index 6019f461d4e..56c0f619ccf 100644 --- a/injector-generator/src/org/jetbrains/jet/di/AllInjectorsGenerator.java +++ b/injector-generator/src/org/jetbrains/jet/di/AllInjectorsGenerator.java @@ -110,7 +110,11 @@ public class AllInjectorsGenerator { // Fields generator.addPublicField(JavaSemanticServices.class); generator.addPublicField(JavaDescriptorResolver.class); - generator.addField(true, BindingTrace.class, null, new GivenExpression("new org.jetbrains.jet.lang.resolve.BindingTraceContext()")); + generator.addField(true, BindingTrace.class, null, + new GivenExpression("new org.jetbrains.jet.lang.resolve.BindingTraceContext()")); + generator.addField(JavaBridgeConfiguration.class); + generator.addField(false, ModuleDescriptor.class, null, + new GivenExpression("new org.jetbrains.jet.lang.descriptors.ModuleDescriptor(\"\")")); // Parameters generator.addPublicParameter(Project.class);