Generate Injectors: minor, remove redundant GenerateInjectors class

This commit is contained in:
Pavel V. Talanov
2014-02-14 16:46:24 +04:00
parent f8a8bbe9b0
commit 4c57aa9f23
12 changed files with 154 additions and 155 deletions
@@ -36,7 +36,7 @@ import org.jetbrains.jet.lang.resolve.kotlin.AnnotationDescriptorDeserializer;
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.generators.injectors.GenerateInjectors. DO NOT EDIT! */ /* This file is generated by org.jetbrains.jet.generators.injectors.InjectorsPackage. DO NOT EDIT! */
@SuppressWarnings("ALL") @SuppressWarnings("ALL")
public class InjectorForJavaDescriptorResolver { public class InjectorForJavaDescriptorResolver {
@@ -63,7 +63,7 @@ import org.jetbrains.jet.lang.resolve.kotlin.AnnotationDescriptorDeserializer;
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.generators.injectors.GenerateInjectors. DO NOT EDIT! */ /* This file is generated by org.jetbrains.jet.generators.injectors.InjectorsPackage. DO NOT EDIT! */
@SuppressWarnings("ALL") @SuppressWarnings("ALL")
public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnalyzer { public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnalyzer {
@@ -43,7 +43,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.generators.injectors.GenerateInjectors. DO NOT EDIT! */ /* This file is generated by org.jetbrains.jet.generators.injectors.InjectorsPackage. DO NOT EDIT! */
@SuppressWarnings("ALL") @SuppressWarnings("ALL")
public class InjectorForBodyResolve { public class InjectorForBodyResolve {
@@ -40,7 +40,7 @@ import org.jetbrains.jet.lang.resolve.lazy.ScopeProvider;
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.generators.injectors.GenerateInjectors. DO NOT EDIT! */ /* This file is generated by org.jetbrains.jet.generators.injectors.InjectorsPackage. DO NOT EDIT! */
@SuppressWarnings("ALL") @SuppressWarnings("ALL")
public class InjectorForLazyResolve { public class InjectorForLazyResolve {
@@ -35,7 +35,7 @@ import org.jetbrains.jet.lang.resolve.calls.CallResolverExtensionProvider;
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.generators.injectors.GenerateInjectors. DO NOT EDIT! */ /* This file is generated by org.jetbrains.jet.generators.injectors.InjectorsPackage. DO NOT EDIT! */
@SuppressWarnings("ALL") @SuppressWarnings("ALL")
public class InjectorForMacros { public class InjectorForMacros {
@@ -52,7 +52,7 @@ import org.jetbrains.jet.lang.resolve.TypeHierarchyResolver;
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.generators.injectors.GenerateInjectors. DO NOT EDIT! */ /* This file is generated by org.jetbrains.jet.generators.injectors.InjectorsPackage. DO NOT EDIT! */
@SuppressWarnings("ALL") @SuppressWarnings("ALL")
public class InjectorForTopDownAnalyzerBasic { public class InjectorForTopDownAnalyzerBasic {
@@ -35,7 +35,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.generators.injectors.GenerateInjectors. DO NOT EDIT! */ /* This file is generated by org.jetbrains.jet.generators.injectors.InjectorsPackage. DO NOT EDIT! */
@SuppressWarnings("ALL") @SuppressWarnings("ALL")
public class InjectorForTests { public class InjectorForTests {
@@ -32,14 +32,12 @@ import org.jetbrains.jet.lang.resolve.lazy.ResolveSession
import org.jetbrains.jet.lang.resolve.lazy.declarations.DeclarationProviderFactory import org.jetbrains.jet.lang.resolve.lazy.declarations.DeclarationProviderFactory
import org.jetbrains.jet.lang.types.DependencyClassByQualifiedNameResolverDummyImpl import org.jetbrains.jet.lang.types.DependencyClassByQualifiedNameResolverDummyImpl
import org.jetbrains.jet.lang.types.expressions.ExpressionTypingServices import org.jetbrains.jet.lang.types.expressions.ExpressionTypingServices
import org.jetbrains.jet.storage.StorageManager
import org.jetbrains.jet.di.* import org.jetbrains.jet.di.*
import kotlin.properties.Delegates
// 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 main in this file. // To do that, you can run main in this file.
public fun main(args: Array<String>) { public fun main(args: Array<String>) {
for (generator in injectorGenerators) { for (generator in createInjectorGenerators()) {
try { try {
generator.generate() generator.generate()
} }
@@ -50,144 +48,145 @@ public fun main(args: Array<String>) {
} }
} }
public val injectorGenerators: List<DependencyInjectorGenerator> by Delegates.lazy { public fun createInjectorGenerators(): List<DependencyInjectorGenerator> =
GenerateInjectors().generators listOf(
} generatorForTopDownAnalyzerBasic(),
generatorForTopDownAnalyzerForJvm(),
public class GenerateInjectors { generatorForJavaDescriptorResolver(),
generatorForTopDownAnalyzerForJs(),
private fun DependencyInjectorGenerator.commonForTopDownAnalyzer() { generatorForMacro(),
parameter(javaClass<Project>()) generatorForTests(),
parameter(javaClass<TopDownAnalysisParameters>(), useAsContext = true) generatorForLazyResolve(),
parameter(javaClass<BindingTrace>()) generatorForBodyResolve()
publicParameter(javaClass<ModuleDescriptorImpl>())
publicFields(
javaClass<TopDownAnalyzer>(),
javaClass<TopDownAnalysisContext>()
) )
field(javaClass<MutablePackageFragmentProvider>()) private fun DependencyInjectorGenerator.commonForTopDownAnalyzer() {
} parameter(javaClass<Project>())
parameter(javaClass<TopDownAnalysisParameters>(), useAsContext = true)
parameter(javaClass<BindingTrace>())
publicParameter(javaClass<ModuleDescriptorImpl>())
private val generatorForTopDownAnalyzerBasic = publicFields(
generator("compiler/frontend/src", "org.jetbrains.jet.di", "InjectorForTopDownAnalyzerBasic", javaClass<GenerateInjectors>()) { javaClass<TopDownAnalyzer>(),
commonForTopDownAnalyzer() javaClass<TopDownAnalysisContext>()
parameter(javaClass<PlatformToKotlinClassMap>())
field(javaClass<DependencyClassByQualifiedNameResolverDummyImpl>())
}
private val generatorForTopDownAnalyzerForJs =
generator("js/js.translator/src", "org.jetbrains.jet.di", "InjectorForTopDownAnalyzerForJs", javaClass<GenerateInjectors>()) {
commonForTopDownAnalyzer()
field(javaClass<DependencyClassByQualifiedNameResolverDummyImpl>())
field(javaClass<PlatformToKotlinClassMap>(), init = GivenExpression("org.jetbrains.jet.lang.PlatformToKotlinClassMap.EMPTY"))
}
private val generatorForTopDownAnalyzerForJvm =
generator("compiler/frontend.java/src", "org.jetbrains.jet.di", "InjectorForTopDownAnalyzerForJvm", javaClass<GenerateInjectors>()) {
implementInterface(javaClass<InjectorForTopDownAnalyzer>())
commonForTopDownAnalyzer()
publicField(javaClass<JavaDescriptorResolver>())
field(javaClass<JavaToKotlinClassMap>(), init = GivenExpression("org.jetbrains.jet.lang.resolve.java.mapping.JavaToKotlinClassMap.getInstance()"))
fields(
javaClass<JavaClassFinderImpl>(),
javaClass<TraceBasedExternalSignatureResolver>(),
javaClass<TraceBasedJavaResolverCache>(),
javaClass<TraceBasedErrorReporter>(),
javaClass<PsiBasedMethodSignatureChecker>(),
javaClass<PsiBasedExternalAnnotationResolver>(),
javaClass<MutablePackageFragmentProvider>()
)
field(javaClass<VirtualFileFinder>(), init = GivenExpression(javaClass<VirtualFileFinder>().getName() + ".SERVICE.getInstance(project)"))
}
private val generatorForJavaDescriptorResolver =
generator("compiler/frontend.java/src", "org.jetbrains.jet.di", "InjectorForJavaDescriptorResolver", javaClass<GenerateInjectors>()) {
parameters(
javaClass<Project>(),
javaClass<BindingTrace>()
)
publicField(javaClass<GlobalContextImpl>(), useAsContext = true,
init = GivenExpression("org.jetbrains.jet.context.ContextPackage.GlobalContext()"))
publicField(javaClass<ModuleDescriptorImpl>(), name = "module",
init = GivenExpression("org.jetbrains.jet.lang.resolve.java.AnalyzerFacadeForJVM.createJavaModule(\"<fake-jdr-module>\")"))
publicField(javaClass<JavaDescriptorResolver>())
publicField(javaClass<JavaClassFinderImpl>())
fields(
javaClass<TraceBasedExternalSignatureResolver>(),
javaClass<TraceBasedJavaResolverCache>(),
javaClass<TraceBasedErrorReporter>(),
javaClass<PsiBasedMethodSignatureChecker>(),
javaClass<PsiBasedExternalAnnotationResolver>()
)
field(javaClass<VirtualFileFinder>(),
init = GivenExpression(javaClass<VirtualFileFinder>().getName() + ".SERVICE.getInstance(project)"))
}
private val generatorForMacro =
generator("compiler/frontend/src", "org.jetbrains.jet.di", "InjectorForMacros", javaClass<GenerateInjectors>()) {
parameter(javaClass<Project>())
parameter(javaClass<ModuleDescriptor>(), useAsContext = true)
publicField(javaClass<ExpressionTypingServices>())
field(javaClass<GlobalContext>(), useAsContext = true,
init = GivenExpression("org.jetbrains.jet.context.ContextPackage.GlobalContext()"))
}
private val generatorForTests =
generator("compiler/tests", "org.jetbrains.jet.di", "InjectorForTests", javaClass<GenerateInjectors>()) {
parameter(javaClass<Project>())
parameter(javaClass<ModuleDescriptor>(), useAsContext = true)
publicFields(
javaClass<DescriptorResolver>(),
javaClass<ExpressionTypingServices>(),
javaClass<TypeResolver>()
)
field(javaClass<GlobalContext>(), init = GivenExpression("org.jetbrains.jet.context.ContextPackage.GlobalContext()"),
useAsContext = true)
}
private val generatorForBodyResolve =
generator("compiler/frontend/src", "org.jetbrains.jet.di", "InjectorForBodyResolve", javaClass<GenerateInjectors>()) {
parameter(javaClass<Project>())
parameter(javaClass<TopDownAnalysisParameters>(), useAsContext = true)
parameter(javaClass<BindingTrace>())
parameter(javaClass<BodiesResolveContext>())
parameter(javaClass<ModuleDescriptor>(), useAsContext = true)
publicField(javaClass<BodyResolver>())
}
private val generatorForLazyResolve =
generator("compiler/frontend/src", "org.jetbrains.jet.di", "InjectorForLazyResolve", javaClass<GenerateInjectors>()) {
parameter(javaClass<Project>())
parameter(javaClass<GlobalContextImpl>(), useAsContext = true)
parameter(javaClass<ModuleDescriptorImpl>(), useAsContext = true)
parameter(javaClass<DeclarationProviderFactory>())
parameter(javaClass<BindingTrace>())
publicField(javaClass<ResolveSession>())
}
val generators = listOf(
generatorForTopDownAnalyzerBasic,
generatorForTopDownAnalyzerForJvm,
generatorForJavaDescriptorResolver,
generatorForTopDownAnalyzerForJs,
generatorForMacro,
generatorForTests,
generatorForLazyResolve,
generatorForBodyResolve
) )
field(javaClass<MutablePackageFragmentProvider>())
} }
private fun generatorForTopDownAnalyzerBasic() =
generator("compiler/frontend/src", "org.jetbrains.jet.di", "InjectorForTopDownAnalyzerBasic") {
commonForTopDownAnalyzer()
parameter(javaClass<PlatformToKotlinClassMap>())
field(javaClass<DependencyClassByQualifiedNameResolverDummyImpl>())
}
private fun generatorForTopDownAnalyzerForJs() =
generator("js/js.translator/src", "org.jetbrains.jet.di", "InjectorForTopDownAnalyzerForJs") {
commonForTopDownAnalyzer()
field(javaClass<DependencyClassByQualifiedNameResolverDummyImpl>())
field(javaClass<PlatformToKotlinClassMap>(), init = GivenExpression("org.jetbrains.jet.lang.PlatformToKotlinClassMap.EMPTY"))
}
private fun generatorForTopDownAnalyzerForJvm() =
generator("compiler/frontend.java/src", "org.jetbrains.jet.di", "InjectorForTopDownAnalyzerForJvm") {
implementInterface(javaClass<InjectorForTopDownAnalyzer>())
commonForTopDownAnalyzer()
publicField(javaClass<JavaDescriptorResolver>())
field(javaClass<JavaToKotlinClassMap>(), init = GivenExpression("org.jetbrains.jet.lang.resolve.java.mapping.JavaToKotlinClassMap.getInstance()"))
fields(
javaClass<JavaClassFinderImpl>(),
javaClass<TraceBasedExternalSignatureResolver>(),
javaClass<TraceBasedJavaResolverCache>(),
javaClass<TraceBasedErrorReporter>(),
javaClass<PsiBasedMethodSignatureChecker>(),
javaClass<PsiBasedExternalAnnotationResolver>(),
javaClass<MutablePackageFragmentProvider>()
)
field(javaClass<VirtualFileFinder>(), init = GivenExpression(javaClass<VirtualFileFinder>().getName() + ".SERVICE.getInstance(project)"))
}
private fun generatorForJavaDescriptorResolver() =
generator("compiler/frontend.java/src", "org.jetbrains.jet.di", "InjectorForJavaDescriptorResolver") {
parameters(
javaClass<Project>(),
javaClass<BindingTrace>()
)
publicField(javaClass<GlobalContextImpl>(), useAsContext = true,
init = GivenExpression("org.jetbrains.jet.context.ContextPackage.GlobalContext()"))
publicField(javaClass<ModuleDescriptorImpl>(), name = "module",
init = GivenExpression("org.jetbrains.jet.lang.resolve.java.AnalyzerFacadeForJVM.createJavaModule(\"<fake-jdr-module>\")"))
publicField(javaClass<JavaDescriptorResolver>())
publicField(javaClass<JavaClassFinderImpl>())
fields(
javaClass<TraceBasedExternalSignatureResolver>(),
javaClass<TraceBasedJavaResolverCache>(),
javaClass<TraceBasedErrorReporter>(),
javaClass<PsiBasedMethodSignatureChecker>(),
javaClass<PsiBasedExternalAnnotationResolver>()
)
field(javaClass<VirtualFileFinder>(),
init = GivenExpression(javaClass<VirtualFileFinder>().getName() + ".SERVICE.getInstance(project)"))
}
private fun generatorForMacro() =
generator("compiler/frontend/src", "org.jetbrains.jet.di", "InjectorForMacros") {
parameter(javaClass<Project>())
parameter(javaClass<ModuleDescriptor>(), useAsContext = true)
publicField(javaClass<ExpressionTypingServices>())
field(javaClass<GlobalContext>(), useAsContext = true,
init = GivenExpression("org.jetbrains.jet.context.ContextPackage.GlobalContext()"))
}
private fun generatorForTests() =
generator("compiler/tests", "org.jetbrains.jet.di", "InjectorForTests") {
parameter(javaClass<Project>())
parameter(javaClass<ModuleDescriptor>(), useAsContext = true)
publicFields(
javaClass<DescriptorResolver>(),
javaClass<ExpressionTypingServices>(),
javaClass<TypeResolver>()
)
field(javaClass<GlobalContext>(), init = GivenExpression("org.jetbrains.jet.context.ContextPackage.GlobalContext()"),
useAsContext = true)
}
private fun generatorForBodyResolve() =
generator("compiler/frontend/src", "org.jetbrains.jet.di", "InjectorForBodyResolve") {
parameter(javaClass<Project>())
parameter(javaClass<TopDownAnalysisParameters>(), useAsContext = true)
parameter(javaClass<BindingTrace>())
parameter(javaClass<BodiesResolveContext>())
parameter(javaClass<ModuleDescriptor>(), useAsContext = true)
publicField(javaClass<BodyResolver>())
}
private fun generatorForLazyResolve() =
generator("compiler/frontend/src", "org.jetbrains.jet.di", "InjectorForLazyResolve") {
parameter(javaClass<Project>())
parameter(javaClass<GlobalContextImpl>(), useAsContext = true)
parameter(javaClass<ModuleDescriptorImpl>(), useAsContext = true)
parameter(javaClass<DeclarationProviderFactory>())
parameter(javaClass<BindingTrace>())
publicField(javaClass<ResolveSession>())
}
private fun generator(
targetSourceRoot: String,
injectorPackageName: String,
injectorClassName: String,
body: DependencyInjectorGenerator.() -> Unit
) = generator(targetSourceRoot, injectorPackageName, injectorClassName, "org.jetbrains.jet.generators.injectors.InjectorsPackage", body)
@@ -30,7 +30,7 @@ public class GenerateInjectorsTest extends TestCase {
public static TestSuite suite() throws IOException { public static TestSuite suite() throws IOException {
TestSuite suite = new TestSuite(); TestSuite suite = new TestSuite();
for (DependencyInjectorGenerator generator : InjectorsPackage.getInjectorGenerators()) { for (DependencyInjectorGenerator generator : InjectorsPackage.createInjectorGenerators()) {
suite.addTest(new GenerateInjectorsTest(generator)); suite.addTest(new GenerateInjectorsTest(generator));
} }
return suite; return suite;
@@ -48,7 +48,7 @@ public class DependencyInjectorGenerator {
private String targetSourceRoot; private String targetSourceRoot;
private String injectorPackageName; private String injectorPackageName;
private String injectorClassName; private String injectorClassName;
private Class<?> generatorClass; private String generatedBy;
public DependencyInjectorGenerator() { public DependencyInjectorGenerator() {
} }
@@ -57,11 +57,11 @@ public class DependencyInjectorGenerator {
return injectorClassName; return injectorClassName;
} }
public DependencyInjectorGenerator configure(String targetSourceRoot, String injectorPackageName, String injectorClassName, Class<?> generatorClass) { public DependencyInjectorGenerator configure(String targetSourceRoot, String injectorPackageName, String injectorClassName, String generatedBy) {
this.targetSourceRoot = targetSourceRoot; this.targetSourceRoot = targetSourceRoot;
this.injectorPackageName = injectorPackageName; this.injectorPackageName = injectorPackageName;
this.injectorClassName = injectorClassName; this.injectorClassName = injectorClassName;
this.generatorClass = generatorClass; this.generatedBy = generatedBy;
return this; return this;
} }
@@ -77,7 +77,7 @@ public class DependencyInjectorGenerator {
} }
public CharSequence generateText() throws IOException { public CharSequence generateText() throws IOException {
assert generatorClass != null : "Don't forget to call configure()"; assert generatedBy != null : "Don't forget to call configure()";
fields.addAll(dependencies.satisfyDependencies()); fields.addAll(dependencies.satisfyDependencies());
reportUnusedParameters(injectorPackageName, injectorClassName); reportUnusedParameters(injectorPackageName, injectorClassName);
@@ -90,7 +90,7 @@ public class DependencyInjectorGenerator {
p.println(); p.println();
p.println("/* This file is generated by " + generatorClass.getName() + ". DO NOT EDIT! */"); p.println("/* This file is generated by " + generatedBy + ". DO NOT EDIT! */");
p.println("@SuppressWarnings(\"ALL\")"); p.println("@SuppressWarnings(\"ALL\")");
p.print("public class " + injectorClassName); p.print("public class " + injectorClassName);
generateImplementsList(p); generateImplementsList(p);
@@ -20,11 +20,11 @@ public fun generator(
targetSourceRoot: String, targetSourceRoot: String,
injectorPackageName: String, injectorPackageName: String,
injectorClassName: String, injectorClassName: String,
generatorClass: Class<*>, generatedBy: String,
body: DependencyInjectorGenerator.() -> Unit body: DependencyInjectorGenerator.() -> Unit
): DependencyInjectorGenerator { ): DependencyInjectorGenerator {
val generator = DependencyInjectorGenerator() val generator = DependencyInjectorGenerator()
generator.configure(targetSourceRoot, injectorPackageName, injectorClassName, generatorClass) generator.configure(targetSourceRoot, injectorPackageName, injectorClassName, generatedBy)
generator.body() generator.body()
return generator return generator
} }
@@ -52,7 +52,7 @@ import org.jetbrains.jet.lang.resolve.TypeHierarchyResolver;
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.generators.injectors.GenerateInjectors. DO NOT EDIT! */ /* This file is generated by org.jetbrains.jet.generators.injectors.InjectorsPackage. DO NOT EDIT! */
@SuppressWarnings("ALL") @SuppressWarnings("ALL")
public class InjectorForTopDownAnalyzerForJs { public class InjectorForTopDownAnalyzerForJs {