diff --git a/generators/src/org/jetbrains/jet/generators/injectors/GenerateInjectors.kt b/generators/src/org/jetbrains/jet/generators/injectors/GenerateInjectors.kt index 4174922cfb7..6dc5b0ad64d 100644 --- a/generators/src/org/jetbrains/jet/generators/injectors/GenerateInjectors.kt +++ b/generators/src/org/jetbrains/jet/generators/injectors/GenerateInjectors.kt @@ -84,60 +84,52 @@ public fun createInjectorGenerators(): List = private fun generatorForTopDownAnalyzerBasic() = generator("compiler/frontend/src", "org.jetbrains.jet.di", "InjectorForTopDownAnalyzerBasic") { - parameter(javaClass()) - parameter(javaClass(), useAsContext = true) - parameter(javaClass()) - publicParameter(javaClass(), useAsContext = true) + parameter() + parameter(useAsContext = true) + parameter() + publicParameter(useAsContext = true) - publicFields( - javaClass() - ) + publicField() - field(javaClass()) + field() - parameter(javaClass()) - parameter(javaClass()) + parameter() + parameter() } private fun generatorForLazyTopDownAnalyzerBasic() = generator("compiler/frontend/src", "org.jetbrains.jet.di", "InjectorForLazyTopDownAnalyzerBasic") { commonForResolveSessionBased() - publicFields( - javaClass() - ) + publicField() - field(javaClass(), + field( init = GivenExpression(javaClass().getCanonicalName() + ".INSTANCE$")) } private fun generatorForLazyBodyResolve() = generator("compiler/frontend/src", "org.jetbrains.jet.di", "InjectorForLazyBodyResolve") { - parameter(javaClass()) - parameter(javaClass(), useAsContext = true) - parameter(javaClass(), name = "analyzer") - parameter(javaClass()) - parameter(javaClass()) + parameter() + parameter(useAsContext = true) + parameter(name = "analyzer") + parameter() + parameter() - field(javaClass(), init = GivenExpression("analyzer.getModuleDescriptor()"), useAsContext = true) + field(init = GivenExpression("analyzer.getModuleDescriptor()"), useAsContext = true) - publicFields( - javaClass() - ) + publicField() } private fun generatorForTopDownAnalyzerForJs() = generator("js/js.frontend/src", "org.jetbrains.jet.di", "InjectorForTopDownAnalyzerForJs") { commonForResolveSessionBased() - publicFields( - javaClass() - ) + publicField() - field(javaClass()) - field(javaClass(), + field() + field( init = GivenExpression(javaClass().getName() + ".INSTANCE$")) - field(javaClass()) + field() } private fun generatorForTopDownAnalyzerForJvm() = @@ -147,34 +139,31 @@ private fun generatorForTopDownAnalyzerForJvm() = private fun generatorForJavaDescriptorResolver() = generator("compiler/frontend.java/src", "org.jetbrains.jet.di", "InjectorForJavaDescriptorResolver") { - parameters( - javaClass(), - javaClass() - ) + parameter() + parameter() - publicField(javaClass(), useAsContext = true, + publicField(useAsContext = true, init = GivenExpression("org.jetbrains.jet.context.ContextPackage.GlobalContext()")) - publicField(javaClass(), name = "module", + publicField(name = "module", init = GivenExpression(javaClass().getName() + ".createJavaModule(\"\")")) - publicField(javaClass()) - publicField(javaClass()) + publicField() + publicField() - field(javaClass (), + field( init = GivenExpression(javaClass().getName() + ".allScope(project)")) - fields( - javaClass(), - javaClass(), - javaClass(), - javaClass(), - javaClass(), - javaClass(), - javaClass(), - javaClass(), - javaClass(), - javaClass() - ) - field(javaClass(), + field() + field() + field() + field() + field() + field() + field() + field() + field() + field() + + field( init = GivenExpression(javaClass().getName() + ".SERVICE.getInstance(project)")) } @@ -182,150 +171,141 @@ private fun generatorForLazyResolveWithJava() = generator("compiler/frontend.java/src", "org.jetbrains.jet.di", "InjectorForLazyResolveWithJava") { commonForResolveSessionBased() - parameter(javaClass(), name = "moduleContentScope") + parameter(name = "moduleContentScope") - parameters( - javaClass() - ) + parameter() - publicFields( - javaClass() - ) + publicField() - field(javaClass(), + field( init = GivenExpression(javaClass().getName() + ".SERVICE.getInstance(project).create(moduleContentScope)") ) - fields( - javaClass(), - javaClass(), - javaClass(), - javaClass(), - javaClass(), - javaClass(), - javaClass(), - javaClass(), - javaClass(), - javaClass(), - javaClass(), - javaClass() - ) - field(javaClass(), + + field() + field() + field() + field() + field() + field() + field() + field() + field() + field() + field() + field() + + field( init = GivenExpression(javaClass().getName() + ".INSTANCE$")) } private fun generatorForReplWithJava() = generator("compiler/frontend.java/src", "org.jetbrains.jet.di", "InjectorForReplWithJava") { commonForJavaTopDownAnalyzer() - parameter(javaClass()) + parameter() } private fun generatorForMacro() = generator("compiler/frontend/src", "org.jetbrains.jet.di", "InjectorForMacros") { - parameter(javaClass()) - parameter(javaClass(), useAsContext = true) + parameter() + parameter(useAsContext = true) - publicField(javaClass()) - publicField(javaClass()) - publicField(javaClass()) + publicField() + publicField() + publicField() - field(javaClass(), useAsContext = true, + field(useAsContext = true, init = GivenExpression("org.jetbrains.jet.context.ContextPackage.GlobalContext()")) - field(javaClass(), + field( init = GivenExpression(javaClass().getCanonicalName() + ".INSTANCE$")) } private fun generatorForTests() = generator("compiler/tests", "org.jetbrains.jet.di", "InjectorForTests") { - parameter(javaClass()) - parameter(javaClass(), useAsContext = true) + parameter() + parameter(useAsContext = true) - publicFields( - javaClass(), - javaClass(), - javaClass(), - javaClass() - ) + publicField() + publicField() + publicField() + publicField() - field(javaClass(), init = GivenExpression("org.jetbrains.jet.context.ContextPackage.GlobalContext()"), + field(init = GivenExpression("org.jetbrains.jet.context.ContextPackage.GlobalContext()"), useAsContext = true) - field(javaClass(), + field( init = GivenExpression(javaClass().getName() + ".INSTANCE$")) } private fun generatorForBodyResolve() = generator("compiler/frontend/src", "org.jetbrains.jet.di", "InjectorForBodyResolve") { - parameter(javaClass()) - parameter(javaClass(), useAsContext = true) - parameter(javaClass()) - parameter(javaClass(), useAsContext = true) - parameter(javaClass()) - parameter(javaClass()) + parameter() + parameter(useAsContext = true) + parameter() + parameter(useAsContext = true) + parameter() + parameter() - publicField(javaClass()) + publicField() } private fun generatorForLazyResolve() = generator("compiler/frontend/src", "org.jetbrains.jet.di", "InjectorForLazyResolve") { - parameter(javaClass()) - parameter(javaClass(), useAsContext = true) - parameter(javaClass(), useAsContext = true) - parameter(javaClass()) - parameter(javaClass()) - parameter(javaClass()) + parameter() + parameter(useAsContext = true) + parameter(useAsContext = true) + parameter() + parameter() + parameter() - publicField(javaClass()) + publicField() - field(javaClass()) + field() } private fun DependencyInjectorGenerator.commonForResolveSessionBased() { - parameter(javaClass()) - parameter(javaClass(), useAsContext = true) - parameter(javaClass()) - parameter(javaClass(), name = "module", useAsContext = true) - parameter(javaClass()) + parameter() + parameter(useAsContext = true) + parameter() + parameter(name = "module", useAsContext = true) + parameter() - publicField(javaClass()) + publicField() } private fun DependencyInjectorGenerator.commonForJavaTopDownAnalyzer() { commonForResolveSessionBased() - parameter(javaClass(), name = "moduleContentScope") + parameter(name = "moduleContentScope") - publicFields( - javaClass(), - javaClass(), - javaClass() - ) + publicField() + publicField() + publicField() - field(javaClass(), + field( init = GivenExpression(javaClass().getName() + ".SERVICE.getInstance(project).create(moduleContentScope)") ) - fields( - javaClass(), - javaClass(), - javaClass(), - javaClass(), - javaClass(), - javaClass(), - javaClass(), - javaClass(), - javaClass(), - javaClass(), - javaClass(), - javaClass(), - javaClass() - ) - field(javaClass(), + field() + field() + field() + field() + field() + field() + field() + field() + field() + field() + field() + field() + field() + + field( init = GivenExpression(javaClass().getName() + ".INSTANCE$")) - field(javaClass(), init = GivenExpression(javaClass().getName() + ".SERVICE.getInstance(project)")) + field(init = GivenExpression(javaClass().getName() + ".SERVICE.getInstance(project)")) } diff --git a/injector-generator/src/org/jetbrains/jet/di/InjectorGeneratorFacade.kt b/injector-generator/src/org/jetbrains/jet/di/InjectorGeneratorFacade.kt index d888455d3ee..96126875f6a 100644 --- a/injector-generator/src/org/jetbrains/jet/di/InjectorGeneratorFacade.kt +++ b/injector-generator/src/org/jetbrains/jet/di/InjectorGeneratorFacade.kt @@ -29,44 +29,34 @@ public fun generator( return generator } -public fun DependencyInjectorGenerator.field( - fieldType: Class<*>, - name: String = defaultName(fieldType), +inline public fun DependencyInjectorGenerator.field( + name: String = defaultName(javaClass()), init: Expression? = null, useAsContext: Boolean = false ) { - addField(false, DiType(fieldType), name, init, useAsContext) + addField(false, DiType(javaClass()), name, init, useAsContext) } -public fun DependencyInjectorGenerator.publicField( - fieldType: Class<*>, - name: String = defaultName(fieldType), +inline public fun DependencyInjectorGenerator.publicField( + name: String = defaultName(javaClass()), init: Expression? = null, useAsContext: Boolean = false ) { - addField(true, DiType(fieldType), name, init, useAsContext) + addField(true, DiType(javaClass()), name, init, useAsContext) } -public fun DependencyInjectorGenerator.fields(vararg types: Class<*>): Unit = types.forEach { field(it) } -public fun DependencyInjectorGenerator.publicFields(vararg types: Class<*>): Unit = types.forEach { publicField(it) } - -public fun DependencyInjectorGenerator.parameter( - parameterType: Class<*>, - name: String = defaultName(parameterType), +inline public fun DependencyInjectorGenerator.parameter( + name: String = defaultName(javaClass()), useAsContext: Boolean = false ) { - addParameter(false, DiType(parameterType), name, true, useAsContext) + addParameter(false, DiType(javaClass()), name, true, useAsContext) } -public fun DependencyInjectorGenerator.publicParameter( - parameterType: Class<*>, - name: String = defaultName(parameterType), +inline public fun DependencyInjectorGenerator.publicParameter( + name: String = defaultName(javaClass()), useAsContext: Boolean = false ) { - addParameter(true, DiType(parameterType), name, true, useAsContext) + addParameter(true, DiType(javaClass()), name, true, useAsContext) } -public fun DependencyInjectorGenerator.parameters(vararg types: Class<*>): Unit = types.forEach { parameter(it) } -public fun DependencyInjectorGenerator.publicParameters(vararg types: Class<*>): Unit = types.forEach { publicParameter(it) } - -private fun defaultName(entityType: Class<*>) = InjectorGeneratorUtil.`var`(DiType(entityType)) \ No newline at end of file +public fun defaultName(entityType: Class<*>): String = InjectorGeneratorUtil.`var`(DiType(entityType)) \ No newline at end of file