Generate Injectors: minor, remove redundant GenerateInjectors class
This commit is contained in:
@@ -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.types.DependencyClassByQualifiedNameResolverDummyImpl
|
||||
import org.jetbrains.jet.lang.types.expressions.ExpressionTypingServices
|
||||
import org.jetbrains.jet.storage.StorageManager
|
||||
import org.jetbrains.jet.di.*
|
||||
import kotlin.properties.Delegates
|
||||
|
||||
// NOTE: After making changes, you need to re-generate the injectors.
|
||||
// To do that, you can run main in this file.
|
||||
public fun main(args: Array<String>) {
|
||||
for (generator in injectorGenerators) {
|
||||
for (generator in createInjectorGenerators()) {
|
||||
try {
|
||||
generator.generate()
|
||||
}
|
||||
@@ -50,144 +48,145 @@ public fun main(args: Array<String>) {
|
||||
}
|
||||
}
|
||||
|
||||
public val injectorGenerators: List<DependencyInjectorGenerator> by Delegates.lazy {
|
||||
GenerateInjectors().generators
|
||||
}
|
||||
|
||||
public class GenerateInjectors {
|
||||
|
||||
private fun DependencyInjectorGenerator.commonForTopDownAnalyzer() {
|
||||
parameter(javaClass<Project>())
|
||||
parameter(javaClass<TopDownAnalysisParameters>(), useAsContext = true)
|
||||
parameter(javaClass<BindingTrace>())
|
||||
publicParameter(javaClass<ModuleDescriptorImpl>())
|
||||
|
||||
publicFields(
|
||||
javaClass<TopDownAnalyzer>(),
|
||||
javaClass<TopDownAnalysisContext>()
|
||||
public fun createInjectorGenerators(): List<DependencyInjectorGenerator> =
|
||||
listOf(
|
||||
generatorForTopDownAnalyzerBasic(),
|
||||
generatorForTopDownAnalyzerForJvm(),
|
||||
generatorForJavaDescriptorResolver(),
|
||||
generatorForTopDownAnalyzerForJs(),
|
||||
generatorForMacro(),
|
||||
generatorForTests(),
|
||||
generatorForLazyResolve(),
|
||||
generatorForBodyResolve()
|
||||
)
|
||||
|
||||
field(javaClass<MutablePackageFragmentProvider>())
|
||||
}
|
||||
private fun DependencyInjectorGenerator.commonForTopDownAnalyzer() {
|
||||
parameter(javaClass<Project>())
|
||||
parameter(javaClass<TopDownAnalysisParameters>(), useAsContext = true)
|
||||
parameter(javaClass<BindingTrace>())
|
||||
publicParameter(javaClass<ModuleDescriptorImpl>())
|
||||
|
||||
private val generatorForTopDownAnalyzerBasic =
|
||||
generator("compiler/frontend/src", "org.jetbrains.jet.di", "InjectorForTopDownAnalyzerBasic", javaClass<GenerateInjectors>()) {
|
||||
commonForTopDownAnalyzer()
|
||||
|
||||
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
|
||||
publicFields(
|
||||
javaClass<TopDownAnalyzer>(),
|
||||
javaClass<TopDownAnalysisContext>()
|
||||
)
|
||||
|
||||
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 {
|
||||
TestSuite suite = new TestSuite();
|
||||
for (DependencyInjectorGenerator generator : InjectorsPackage.getInjectorGenerators()) {
|
||||
for (DependencyInjectorGenerator generator : InjectorsPackage.createInjectorGenerators()) {
|
||||
suite.addTest(new GenerateInjectorsTest(generator));
|
||||
}
|
||||
return suite;
|
||||
|
||||
Reference in New Issue
Block a user