injector for JVM codegen

This commit is contained in:
Stepan Koltsov
2012-03-28 23:39:03 +04:00
parent 182f6d9897
commit 231a4d9940
10 changed files with 155 additions and 20 deletions
@@ -11,6 +11,7 @@
<orderEntry type="module" module-name="frontend.java" />
<orderEntry type="library" name="intellij-core" level="project" />
<orderEntry type="library" name="javax.inject" level="project" />
<orderEntry type="module" module-name="backend" />
</component>
</module>
@@ -17,9 +17,12 @@
package org.jetbrains.jet.di;
import com.intellij.openapi.project.Project;
import org.jetbrains.jet.codegen.ClosureAnnotator;
import org.jetbrains.jet.codegen.JetTypeMapper;
import org.jetbrains.jet.lang.ModuleConfiguration;
import org.jetbrains.jet.lang.cfg.pseudocode.JetControlFlowDataTraceFactory;
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
import org.jetbrains.jet.lang.psi.JetFile;
import org.jetbrains.jet.lang.resolve.*;
import org.jetbrains.jet.lang.resolve.calls.CallResolver;
import org.jetbrains.jet.lang.resolve.java.JavaBridgeConfiguration;
@@ -45,6 +48,7 @@ public class AllInjectorsGenerator {
generateMacroInjector();
generateTestInjector();
generateInjectorForJavaSemanticServices();
generateInjectorForJvmCodegen();
}
private static void generateInjectorForTopDownAnalyzerBasic() throws IOException {
@@ -133,4 +137,13 @@ public class AllInjectorsGenerator {
generator.generate("compiler/frontend.java/src", "org.jetbrains.jet.di", "InjectorForJavaSemanticServices");
}
private static void generateInjectorForJvmCodegen() throws IOException {
DependencyInjectorGenerator generator = new DependencyInjectorGenerator(false);
generator.addParameter(JetStandardLibrary.class);
generator.addParameter(BindingContext.class);
generator.addParameter(DiType.listOf(JetFile.class));
generator.addPublicField(JetTypeMapper.class);
generator.generate("compiler/backend/src", "org.jetbrains.jet.di", "InjectorForJvmCodegen");
}
}
@@ -21,6 +21,7 @@ import org.jetbrains.annotations.NotNull;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
@@ -121,4 +122,24 @@ class DiType {
}
throw new IllegalArgumentException("unsupported type: " + type);
}
@NotNull
public static DiType collectionOf(@NotNull Class<?> type) {
return collectionOf(new DiType(type));
}
@NotNull
public static DiType collectionOf(@NotNull DiType type) {
return new DiType(List.class, Lists.newArrayList(type));
}
@NotNull
public static DiType listOf(@NotNull Class<?> type) {
return collectionOf(new DiType(type));
}
@NotNull
public static DiType listOf(@NotNull DiType type) {
return new DiType(List.class, Lists.newArrayList(type));
}
}