diff --git a/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForJavaDescriptorResolver.java b/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForJavaDescriptorResolver.java new file mode 100644 index 00000000000..a795f6a0b7e --- /dev/null +++ b/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForJavaDescriptorResolver.java @@ -0,0 +1,133 @@ +/* + * Copyright 2010-2012 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 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.CompilerDependencies; +import org.jetbrains.jet.lang.resolve.java.JavaBridgeConfiguration; +import org.jetbrains.jet.lang.resolve.java.CompilerSpecialMode; +import org.jetbrains.jet.lang.resolve.java.JavaSemanticServices; +import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver; +import org.jetbrains.jet.lang.resolve.java.PsiClassFinderForJvm; +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.annotations.NotNull; +import javax.annotation.PreDestroy; + +/* This file is generated by org.jetbrains.jet.di.AllInjectorsGenerator. DO NOT EDIT! */ +public class InjectorForJavaDescriptorResolver { + + private final Project project; + private final BindingTrace bindingTrace; + private final ModuleDescriptor moduleDescriptor; + private final CompilerDependencies compilerDependencies; + private JavaBridgeConfiguration javaBridgeConfiguration; + private CompilerSpecialMode compilerSpecialMode; + private JavaSemanticServices javaSemanticServices; + private JavaDescriptorResolver javaDescriptorResolver; + private PsiClassFinderForJvm psiClassFinderForJvm; + private JavaTypeTransformer javaTypeTransformer; + private JavaDescriptorSignatureResolver javaDescriptorSignatureResolver; + private NamespaceFactoryImpl namespaceFactory; + + public InjectorForJavaDescriptorResolver( + @NotNull Project project, + @NotNull BindingTrace bindingTrace, + @NotNull ModuleDescriptor moduleDescriptor, + @NotNull CompilerDependencies compilerDependencies + ) { + this.project = project; + this.bindingTrace = bindingTrace; + this.moduleDescriptor = moduleDescriptor; + this.compilerDependencies = compilerDependencies; + this.javaBridgeConfiguration = new JavaBridgeConfiguration(); + this.compilerSpecialMode = compilerDependencies.getCompilerSpecialMode(); + this.javaSemanticServices = new JavaSemanticServices(); + this.javaDescriptorResolver = new JavaDescriptorResolver(); + this.psiClassFinderForJvm = new PsiClassFinderForJvm(); + this.javaTypeTransformer = new JavaTypeTransformer(); + this.javaDescriptorSignatureResolver = new JavaDescriptorSignatureResolver(); + this.namespaceFactory = new NamespaceFactoryImpl(); + + javaBridgeConfiguration.setJavaSemanticServices(javaSemanticServices); + javaBridgeConfiguration.setMode(compilerSpecialMode); + javaBridgeConfiguration.setProject(project); + + this.javaSemanticServices.setDescriptorResolver(javaDescriptorResolver); + this.javaSemanticServices.setPsiClassFinder(psiClassFinderForJvm); + this.javaSemanticServices.setTrace(bindingTrace); + this.javaSemanticServices.setTypeTransformer(javaTypeTransformer); + + this.javaDescriptorResolver.setJavaDescriptorSignatureResolver(javaDescriptorSignatureResolver); + this.javaDescriptorResolver.setNamespaceFactory(namespaceFactory); + this.javaDescriptorResolver.setProject(project); + this.javaDescriptorResolver.setPsiClassFinder(psiClassFinderForJvm); + this.javaDescriptorResolver.setSemanticServices(javaSemanticServices); + this.javaDescriptorResolver.setTrace(bindingTrace); + + this.psiClassFinderForJvm.setCompilerDependencies(compilerDependencies); + this.psiClassFinderForJvm.setProject(project); + + javaTypeTransformer.setJavaSemanticServices(javaSemanticServices); + javaTypeTransformer.setResolver(javaDescriptorResolver); + + javaDescriptorSignatureResolver.setJavaDescriptorResolver(javaDescriptorResolver); + javaDescriptorSignatureResolver.setJavaSemanticServices(javaSemanticServices); + + namespaceFactory.setConfiguration(javaBridgeConfiguration); + namespaceFactory.setModuleDescriptor(moduleDescriptor); + namespaceFactory.setTrace(bindingTrace); + + javaBridgeConfiguration.init(); + + psiClassFinderForJvm.initialize(); + + } + + @PreDestroy + public void destroy() { + } + + public Project getProject() { + return this.project; + } + + public BindingTrace getBindingTrace() { + return this.bindingTrace; + } + + public ModuleDescriptor getModuleDescriptor() { + return this.moduleDescriptor; + } + + public JavaSemanticServices getJavaSemanticServices() { + return this.javaSemanticServices; + } + + public JavaDescriptorResolver getJavaDescriptorResolver() { + return this.javaDescriptorResolver; + } + + public PsiClassFinderForJvm getPsiClassFinderForJvm() { + return this.psiClassFinderForJvm; + } + +} diff --git a/injector-generator/src/org/jetbrains/jet/di/AllInjectorsGenerator.java b/injector-generator/src/org/jetbrains/jet/di/AllInjectorsGenerator.java index 871653d1818..0c704d9ebbb 100644 --- a/injector-generator/src/org/jetbrains/jet/di/AllInjectorsGenerator.java +++ b/injector-generator/src/org/jetbrains/jet/di/AllInjectorsGenerator.java @@ -47,6 +47,7 @@ public class AllInjectorsGenerator { public static void main(String[] args) throws IOException { generateInjectorForTopDownAnalyzerBasic(); generateInjectorForTopDownAnalyzerForJvm(); + generateInjectorForJavaDescriptorResolver(); generateInjectorForTopDownAnalyzerForJs(); generateMacroInjector(); generateTestInjector(); @@ -101,6 +102,25 @@ public class AllInjectorsGenerator { generator.generate("compiler/frontend.java/src", "org.jetbrains.jet.di", "InjectorForTopDownAnalyzerForJvm"); } + private static void generateInjectorForJavaDescriptorResolver() throws IOException { + DependencyInjectorGenerator generator = new DependencyInjectorGenerator(false); + + // Parameters + generator.addPublicParameter(Project.class); + generator.addPublicParameter(BindingTrace.class); + generator.addPublicParameter(ModuleDescriptor.class); + generator.addParameter(CompilerDependencies.class); + + // Fields + generator.addField(JavaBridgeConfiguration.class); + generator.addField(false, CompilerSpecialMode.class, null, new GivenExpression("compilerDependencies.getCompilerSpecialMode()")); + generator.addPublicField(JavaSemanticServices.class); + generator.addPublicField(JavaDescriptorResolver.class); + generator.addPublicField(PsiClassFinderForJvm.class); + + generator.generate("compiler/frontend.java/src", "org.jetbrains.jet.di", "InjectorForJavaDescriptorResolver"); + } + private static void generateInjectorForTopDownAnalyzerCommon(DependencyInjectorGenerator generator) { // Fields generator.addPublicField(TopDownAnalyzer.class);