Renamed & moved AllInjectorsGenerator.

This commit is contained in:
Evgeny Gerashchenko
2012-11-12 17:23:03 +04:00
parent 47dd399cdd
commit 8d7e79c806
17 changed files with 43 additions and 30 deletions
+1 -1
View File
@@ -91,7 +91,7 @@
</target> </target>
<target name="generateInjectors" depends="injectorsGenerator"> <target name="generateInjectors" depends="injectorsGenerator">
<java classname="org.jetbrains.jet.di.AllInjectorsGenerator" failonerror="true"> <java classname="org.jetbrains.jet.generators.GenerateInjectors" failonerror="true">
<classpath refid="classpath"/> <classpath refid="classpath"/>
<classpath path="${output}/classes/injectorsGenerator"/> <classpath path="${output}/classes/injectorsGenerator"/>
</java> </java>
@@ -33,7 +33,7 @@ import org.jetbrains.jet.codegen.ClassFileFactory;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import javax.annotation.PreDestroy; import javax.annotation.PreDestroy;
/* This file is generated by org.jetbrains.jet.di.AllInjectorsGenerator. DO NOT EDIT! */ /* This file is generated by org.jetbrains.jet.generators.GenerateInjectors. DO NOT EDIT! */
public class InjectorForJvmCodegen { public class InjectorForJvmCodegen {
private final JetTypeMapper jetTypeMapper; private final JetTypeMapper jetTypeMapper;
@@ -40,7 +40,7 @@ import org.jetbrains.jet.lang.resolve.java.resolver.JavaPropertyResolver;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import javax.annotation.PreDestroy; import javax.annotation.PreDestroy;
/* This file is generated by org.jetbrains.jet.di.AllInjectorsGenerator. DO NOT EDIT! */ /* This file is generated by org.jetbrains.jet.generators.GenerateInjectors. DO NOT EDIT! */
public class InjectorForJavaDescriptorResolver { public class InjectorForJavaDescriptorResolver {
private final Project project; private final Project project;
@@ -40,7 +40,7 @@ import org.jetbrains.jet.lang.resolve.java.resolver.JavaPropertyResolver;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import javax.annotation.PreDestroy; import javax.annotation.PreDestroy;
/* This file is generated by org.jetbrains.jet.di.AllInjectorsGenerator. DO NOT EDIT! */ /* This file is generated by org.jetbrains.jet.generators.GenerateInjectors. DO NOT EDIT! */
public class InjectorForJavaSemanticServices { public class InjectorForJavaSemanticServices {
private JavaSemanticServices javaSemanticServices; private JavaSemanticServices javaSemanticServices;
@@ -62,7 +62,7 @@ import org.jetbrains.jet.lang.resolve.java.resolver.JavaPropertyResolver;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import javax.annotation.PreDestroy; import javax.annotation.PreDestroy;
/* This file is generated by org.jetbrains.jet.di.AllInjectorsGenerator. DO NOT EDIT! */ /* This file is generated by org.jetbrains.jet.generators.GenerateInjectors. DO NOT EDIT! */
public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnalyzer { public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnalyzer {
private TopDownAnalyzer topDownAnalyzer; private TopDownAnalyzer topDownAnalyzer;
@@ -124,9 +124,9 @@ class TypeTransformingVisitor extends JetVisitor<JetType, Void> {
TypeProjection argument = arguments.get(i); TypeProjection argument = arguments.get(i);
JetType alternativeType = computeType(argumentAlternativeTypeElement, argument.getType(), originalToAltTypeParameters); JetType alternativeType = computeType(argumentAlternativeTypeElement, argument.getType(), originalToAltTypeParameters);
Variance variance = argument.getProjectionKind(); Variance variance = argument.getProjectionKind();
Variance altVariance;
if (type instanceof JetUserType) { if (type instanceof JetUserType) {
JetTypeProjection typeProjection = ((JetUserType) type).getTypeArguments().get(i); JetTypeProjection typeProjection = ((JetUserType) type).getTypeArguments().get(i);
Variance altVariance = Variance.INVARIANT;
switch (typeProjection.getProjectionKind()) { switch (typeProjection.getProjectionKind()) {
case IN: case IN:
altVariance = Variance.IN_VARIANCE; altVariance = Variance.IN_VARIANCE;
@@ -137,12 +137,16 @@ class TypeTransformingVisitor extends JetVisitor<JetType, Void> {
case STAR: case STAR:
throw new AlternativeSignatureMismatchException("Star projection is not available in alternative signatures"); throw new AlternativeSignatureMismatchException("Star projection is not available in alternative signatures");
default: default:
altVariance = Variance.INVARIANT;
} }
if (altVariance != variance && variance != Variance.INVARIANT) { if (altVariance != variance && variance != Variance.INVARIANT) {
throw new AlternativeSignatureMismatchException("Variance mismatch, actual: %s, in alternative signature: %s", variance, altVariance); throw new AlternativeSignatureMismatchException("Variance mismatch, actual: %s, in alternative signature: %s", variance, altVariance);
} }
} }
altArguments.add(new TypeProjection(variance, alternativeType)); else {
altVariance = variance;
}
altArguments.add(new TypeProjection(altVariance, alternativeType));
} }
TypeConstructor typeConstructor; TypeConstructor typeConstructor;
@@ -37,7 +37,7 @@ import org.jetbrains.jet.lang.resolve.TopDownAnalysisContext;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import javax.annotation.PreDestroy; import javax.annotation.PreDestroy;
/* This file is generated by org.jetbrains.jet.di.AllInjectorsGenerator. DO NOT EDIT! */ /* This file is generated by org.jetbrains.jet.generators.GenerateInjectors. DO NOT EDIT! */
public class InjectorForBodyResolve { public class InjectorForBodyResolve {
private BodyResolver bodyResolver; private BodyResolver bodyResolver;
@@ -32,7 +32,7 @@ import org.jetbrains.jet.lang.resolve.calls.CandidateResolver;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import javax.annotation.PreDestroy; import javax.annotation.PreDestroy;
/* This file is generated by org.jetbrains.jet.di.AllInjectorsGenerator. DO NOT EDIT! */ /* This file is generated by org.jetbrains.jet.generators.GenerateInjectors. DO NOT EDIT! */
public class InjectorForLazyResolve { public class InjectorForLazyResolve {
private final Project project; private final Project project;
@@ -29,7 +29,7 @@ import org.jetbrains.jet.lang.resolve.QualifiedExpressionResolver;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import javax.annotation.PreDestroy; import javax.annotation.PreDestroy;
/* This file is generated by org.jetbrains.jet.di.AllInjectorsGenerator. DO NOT EDIT! */ /* This file is generated by org.jetbrains.jet.generators.GenerateInjectors. DO NOT EDIT! */
public class InjectorForMacros { public class InjectorForMacros {
private ExpressionTypingServices expressionTypingServices; private ExpressionTypingServices expressionTypingServices;
@@ -46,7 +46,7 @@ import org.jetbrains.jet.lang.resolve.ScriptBodyResolver;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import javax.annotation.PreDestroy; import javax.annotation.PreDestroy;
/* This file is generated by org.jetbrains.jet.di.AllInjectorsGenerator. DO NOT EDIT! */ /* This file is generated by org.jetbrains.jet.generators.GenerateInjectors. DO NOT EDIT! */
public class InjectorForTopDownAnalyzerBasic { public class InjectorForTopDownAnalyzerBasic {
private TopDownAnalyzer topDownAnalyzer; private TopDownAnalyzer topDownAnalyzer;
@@ -30,7 +30,7 @@ import org.jetbrains.jet.lang.resolve.calls.CandidateResolver;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import javax.annotation.PreDestroy; import javax.annotation.PreDestroy;
/* This file is generated by org.jetbrains.jet.di.AllInjectorsGenerator. DO NOT EDIT! */ /* This file is generated by org.jetbrains.jet.generators.GenerateInjectors. DO NOT EDIT! */
public class InjectorForTests { public class InjectorForTests {
private DescriptorResolver descriptorResolver; private DescriptorResolver descriptorResolver;
+4
View File
@@ -10,6 +10,10 @@
<orderEntry type="module" module-name="idea" scope="TEST" /> <orderEntry type="module" module-name="idea" scope="TEST" />
<orderEntry type="module" module-name="compiler-tests" scope="TEST" /> <orderEntry type="module" module-name="compiler-tests" scope="TEST" />
<orderEntry type="library" scope="TEST" name="idea-full" level="project" /> <orderEntry type="library" scope="TEST" name="idea-full" level="project" />
<orderEntry type="module" module-name="backend" scope="TEST" />
<orderEntry type="module" module-name="frontend" scope="TEST" />
<orderEntry type="module" module-name="frontend.java" scope="TEST" />
<orderEntry type="module" module-name="injector-generator" scope="TEST" />
</component> </component>
</module> </module>
@@ -14,13 +14,14 @@
* limitations under the License. * limitations under the License.
*/ */
package org.jetbrains.jet.di; package org.jetbrains.jet.generators;
import com.intellij.openapi.project.Project; import com.intellij.openapi.project.Project;
import org.jetbrains.jet.codegen.*; import org.jetbrains.jet.codegen.*;
import org.jetbrains.jet.codegen.intrinsics.IntrinsicMethods; import org.jetbrains.jet.codegen.intrinsics.IntrinsicMethods;
import org.jetbrains.jet.codegen.state.GenerationState; import org.jetbrains.jet.codegen.state.GenerationState;
import org.jetbrains.jet.codegen.state.JetTypeMapper; import org.jetbrains.jet.codegen.state.JetTypeMapper;
import org.jetbrains.jet.di.*;
import org.jetbrains.jet.lang.ModuleConfiguration; import org.jetbrains.jet.lang.ModuleConfiguration;
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor; import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
import org.jetbrains.jet.lang.psi.JetFile; import org.jetbrains.jet.lang.psi.JetFile;
@@ -43,9 +44,9 @@ import java.io.IOException;
*/ */
// NOTE: After making changes, you need to re-generate the injectors. // NOTE: After making changes, you need to re-generate the injectors.
// To do that, you can run either this class, or /build.xml/generateInjectors task // To do that, you can run either this class, or /build.xml/generateInjectors task
public class AllInjectorsGenerator { public class GenerateInjectors {
private AllInjectorsGenerator() { private GenerateInjectors() {
} }
public static void main(String[] args) throws IOException { public static void main(String[] args) throws IOException {
@@ -73,7 +74,7 @@ public class AllInjectorsGenerator {
generator.addPublicField(ScopeProvider.class); generator.addPublicField(ScopeProvider.class);
generator.addPublicField(AnnotationResolver.class); generator.addPublicField(AnnotationResolver.class);
generator.addPublicField(QualifiedExpressionResolver.class); generator.addPublicField(QualifiedExpressionResolver.class);
generator.generate("compiler/frontend/src", "org.jetbrains.jet.di", "InjectorForLazyResolve"); generator.generate("compiler/frontend/src", "org.jetbrains.jet.di", "InjectorForLazyResolve", GenerateInjectors.class);
} }
private static void generateInjectorForTopDownAnalyzerBasic() throws IOException { private static void generateInjectorForTopDownAnalyzerBasic() throws IOException {
@@ -82,7 +83,7 @@ public class AllInjectorsGenerator {
generator.addParameter(ModuleConfiguration.class); generator.addParameter(ModuleConfiguration.class);
generator.addField(DependencyClassByQualifiedNameResolverDummyImpl.class); generator.addField(DependencyClassByQualifiedNameResolverDummyImpl.class);
generator.addField(NamespaceFactoryImpl.class); generator.addField(NamespaceFactoryImpl.class);
generator.generate("compiler/frontend/src", "org.jetbrains.jet.di", "InjectorForTopDownAnalyzerBasic"); generator.generate("compiler/frontend/src", "org.jetbrains.jet.di", "InjectorForTopDownAnalyzerBasic", GenerateInjectors.class);
} }
private static void generateInjectorForTopDownAnalyzerForJs() throws IOException { private static void generateInjectorForTopDownAnalyzerForJs() throws IOException {
@@ -91,7 +92,7 @@ public class AllInjectorsGenerator {
generator.addPublicParameter(ModuleConfiguration.class); generator.addPublicParameter(ModuleConfiguration.class);
generator.addField(DependencyClassByQualifiedNameResolverDummyImpl.class); generator.addField(DependencyClassByQualifiedNameResolverDummyImpl.class);
generator.addField(NamespaceFactoryImpl.class); generator.addField(NamespaceFactoryImpl.class);
generator.generate("js/js.translator/src", "org.jetbrains.jet.di", "InjectorForTopDownAnalyzerForJs"); generator.generate("js/js.translator/src", "org.jetbrains.jet.di", "InjectorForTopDownAnalyzerForJs", GenerateInjectors.class);
} }
private static void generateInjectorForTopDownAnalyzerForJvm() throws IOException { private static void generateInjectorForTopDownAnalyzerForJvm() throws IOException {
@@ -102,7 +103,8 @@ public class AllInjectorsGenerator {
generator.addField(JavaDescriptorResolver.class); generator.addField(JavaDescriptorResolver.class);
generator.addField(PsiClassFinderImpl.class); generator.addField(PsiClassFinderImpl.class);
generator.addPublicField(NamespaceFactoryImpl.class); generator.addPublicField(NamespaceFactoryImpl.class);
generator.generate("compiler/frontend.java/src", "org.jetbrains.jet.di", "InjectorForTopDownAnalyzerForJvm"); generator.generate("compiler/frontend.java/src", "org.jetbrains.jet.di", "InjectorForTopDownAnalyzerForJvm",
GenerateInjectors.class);
} }
private static void generateInjectorForJavaDescriptorResolver() throws IOException { private static void generateInjectorForJavaDescriptorResolver() throws IOException {
@@ -119,7 +121,8 @@ public class AllInjectorsGenerator {
generator.addPublicField(JavaDescriptorResolver.class); generator.addPublicField(JavaDescriptorResolver.class);
generator.addPublicField(PsiClassFinderImpl.class); generator.addPublicField(PsiClassFinderImpl.class);
generator.generate("compiler/frontend.java/src", "org.jetbrains.jet.di", "InjectorForJavaDescriptorResolver"); generator.generate("compiler/frontend.java/src", "org.jetbrains.jet.di", "InjectorForJavaDescriptorResolver",
GenerateInjectors.class);
} }
private static void generateInjectorForTopDownAnalyzerCommon(DependencyInjectorGenerator generator) { private static void generateInjectorForTopDownAnalyzerCommon(DependencyInjectorGenerator generator) {
@@ -148,7 +151,7 @@ public class AllInjectorsGenerator {
generator.addPublicParameter(Project.class); generator.addPublicParameter(Project.class);
generator.addParameter(ModuleConfiguration.class); generator.addParameter(ModuleConfiguration.class);
generator.generate("compiler/frontend/src", "org.jetbrains.jet.di", "InjectorForMacros"); generator.generate("compiler/frontend/src", "org.jetbrains.jet.di", "InjectorForMacros", GenerateInjectors.class);
} }
private static void generateTestInjector() throws IOException { private static void generateTestInjector() throws IOException {
@@ -165,7 +168,7 @@ public class AllInjectorsGenerator {
// Parameters // Parameters
generator.addPublicParameter(Project.class); generator.addPublicParameter(Project.class);
generator.generate("compiler/tests", "org.jetbrains.jet.di", "InjectorForTests"); generator.generate("compiler/tests", "org.jetbrains.jet.di", "InjectorForTests", GenerateInjectors.class);
} }
private static void generateInjectorForJavaSemanticServices() throws IOException { private static void generateInjectorForJavaSemanticServices() throws IOException {
@@ -185,7 +188,8 @@ public class AllInjectorsGenerator {
// Parameters // Parameters
generator.addPublicParameter(Project.class); generator.addPublicParameter(Project.class);
generator.generate("compiler/frontend.java/src", "org.jetbrains.jet.di", "InjectorForJavaSemanticServices"); generator.generate("compiler/frontend.java/src", "org.jetbrains.jet.di", "InjectorForJavaSemanticServices",
GenerateInjectors.class);
} }
private static void generateInjectorForJvmCodegen() throws IOException { private static void generateInjectorForJvmCodegen() throws IOException {
@@ -210,7 +214,7 @@ public class AllInjectorsGenerator {
generator.addField(true, IntrinsicMethods.class, "intrinsics", null); generator.addField(true, IntrinsicMethods.class, "intrinsics", null);
generator.addPublicField(ClassFileFactory.class); generator.addPublicField(ClassFileFactory.class);
generator.generate("compiler/backend/src", "org.jetbrains.jet.di", "InjectorForJvmCodegen"); generator.generate("compiler/backend/src", "org.jetbrains.jet.di", "InjectorForJvmCodegen", GenerateInjectors.class);
} }
private static void generateInjectorForBodyResolve() throws IOException { private static void generateInjectorForBodyResolve() throws IOException {
@@ -224,6 +228,6 @@ public class AllInjectorsGenerator {
generator.addPublicParameter(BindingTrace.class); generator.addPublicParameter(BindingTrace.class);
generator.addPublicParameter(BodiesResolveContext.class); generator.addPublicParameter(BodiesResolveContext.class);
generator.addParameter(ModuleConfiguration.class); generator.addParameter(ModuleConfiguration.class);
generator.generate("compiler/frontend/src", "org.jetbrains.jet.di", "InjectorForBodyResolve"); generator.generate("compiler/frontend/src", "org.jetbrains.jet.di", "InjectorForBodyResolve", GenerateInjectors.class);
} }
} }
@@ -62,7 +62,8 @@ public class DependencyInjectorGenerator {
this.lazy = lazy; this.lazy = lazy;
} }
public void generate(String targetSourceRoot, String injectorPackageName, String injectorClassName) throws IOException { public void generate(String targetSourceRoot, String injectorPackageName, String injectorClassName, Class<?> generatorClass)
throws IOException {
String outputFileName = targetSourceRoot + "/" + injectorPackageName.replace(".", "/") + "/" + injectorClassName + ".java"; String outputFileName = targetSourceRoot + "/" + injectorPackageName.replace(".", "/") + "/" + injectorClassName + ".java";
File file = new File(outputFileName); File file = new File(outputFileName);
@@ -101,7 +102,7 @@ public class DependencyInjectorGenerator {
generateImports(out, injectorPackageName); generateImports(out, injectorPackageName);
out.println(); out.println();
out.println("/* This file is generated by " + AllInjectorsGenerator.class.getName() + ". DO NOT EDIT! */"); out.println("/* This file is generated by " + generatorClass.getName() + ". DO NOT EDIT! */");
out.print("public class " + injectorClassName); out.print("public class " + injectorClassName);
generateImplementsList(out); generateImplementsList(out);
out.println(" {"); out.println(" {");
@@ -29,7 +29,7 @@ import java.util.List;
/** /**
* @author Stepan Koltsov * @author Stepan Koltsov
*/ */
class DiType { public class DiType {
@NotNull @NotNull
private final Class<?> clazz; private final Class<?> clazz;
@NotNull @NotNull
@@ -26,7 +26,7 @@ import java.util.Collections;
/** /**
* @author abreslav * @author abreslav
*/ */
class GivenExpression implements Expression { public class GivenExpression implements Expression {
private final String expression; private final String expression;
private final Collection<DiType> typesToImport; private final Collection<DiType> typesToImport;
@@ -46,7 +46,7 @@ import org.jetbrains.jet.lang.resolve.ScriptBodyResolver;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import javax.annotation.PreDestroy; import javax.annotation.PreDestroy;
/* This file is generated by org.jetbrains.jet.di.AllInjectorsGenerator. DO NOT EDIT! */ /* This file is generated by org.jetbrains.jet.generators.GenerateInjectors. DO NOT EDIT! */
public class InjectorForTopDownAnalyzerForJs { public class InjectorForTopDownAnalyzerForJs {
private TopDownAnalyzer topDownAnalyzer; private TopDownAnalyzer topDownAnalyzer;