diff --git a/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForJavaDescriptorResolver.java b/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForJavaDescriptorResolver.java index f355ceb6574..b79901b81f0 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForJavaDescriptorResolver.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForJavaDescriptorResolver.java @@ -36,7 +36,7 @@ import org.jetbrains.jet.lang.resolve.kotlin.AnnotationDescriptorDeserializer; import org.jetbrains.annotations.NotNull; 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") public class InjectorForJavaDescriptorResolver { diff --git a/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJvm.java b/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJvm.java index b2e7a24b2ec..fc87da131a4 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJvm.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJvm.java @@ -63,7 +63,7 @@ import org.jetbrains.jet.lang.resolve.kotlin.AnnotationDescriptorDeserializer; import org.jetbrains.annotations.NotNull; 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") public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnalyzer { diff --git a/compiler/frontend/src/org/jetbrains/jet/di/InjectorForBodyResolve.java b/compiler/frontend/src/org/jetbrains/jet/di/InjectorForBodyResolve.java index 96c26aa55d5..a1cd1547df1 100644 --- a/compiler/frontend/src/org/jetbrains/jet/di/InjectorForBodyResolve.java +++ b/compiler/frontend/src/org/jetbrains/jet/di/InjectorForBodyResolve.java @@ -43,7 +43,7 @@ import org.jetbrains.jet.lang.resolve.TopDownAnalysisContext; import org.jetbrains.annotations.NotNull; 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") public class InjectorForBodyResolve { diff --git a/compiler/frontend/src/org/jetbrains/jet/di/InjectorForLazyResolve.java b/compiler/frontend/src/org/jetbrains/jet/di/InjectorForLazyResolve.java index 11fd6a16150..5f94a7aa1e9 100644 --- a/compiler/frontend/src/org/jetbrains/jet/di/InjectorForLazyResolve.java +++ b/compiler/frontend/src/org/jetbrains/jet/di/InjectorForLazyResolve.java @@ -40,7 +40,7 @@ import org.jetbrains.jet.lang.resolve.lazy.ScopeProvider; import org.jetbrains.annotations.NotNull; 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") public class InjectorForLazyResolve { diff --git a/compiler/frontend/src/org/jetbrains/jet/di/InjectorForMacros.java b/compiler/frontend/src/org/jetbrains/jet/di/InjectorForMacros.java index 60d5ea0c024..9982fa3b8dc 100644 --- a/compiler/frontend/src/org/jetbrains/jet/di/InjectorForMacros.java +++ b/compiler/frontend/src/org/jetbrains/jet/di/InjectorForMacros.java @@ -35,7 +35,7 @@ import org.jetbrains.jet.lang.resolve.calls.CallResolverExtensionProvider; import org.jetbrains.annotations.NotNull; 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") public class InjectorForMacros { diff --git a/compiler/frontend/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerBasic.java b/compiler/frontend/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerBasic.java index 819f76d2609..b1df3297d60 100644 --- a/compiler/frontend/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerBasic.java +++ b/compiler/frontend/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerBasic.java @@ -52,7 +52,7 @@ import org.jetbrains.jet.lang.resolve.TypeHierarchyResolver; import org.jetbrains.annotations.NotNull; 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") public class InjectorForTopDownAnalyzerBasic { diff --git a/compiler/tests/org/jetbrains/jet/di/InjectorForTests.java b/compiler/tests/org/jetbrains/jet/di/InjectorForTests.java index 6cc2eb5e7a0..bd0fc3f6f5d 100644 --- a/compiler/tests/org/jetbrains/jet/di/InjectorForTests.java +++ b/compiler/tests/org/jetbrains/jet/di/InjectorForTests.java @@ -35,7 +35,7 @@ import org.jetbrains.jet.lang.resolve.QualifiedExpressionResolver; import org.jetbrains.annotations.NotNull; 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") public class InjectorForTests { diff --git a/generators/src/org/jetbrains/jet/generators/injectors/GenerateInjectors.kt b/generators/src/org/jetbrains/jet/generators/injectors/GenerateInjectors.kt index f0870dd727b..6ace39c33c1 100644 --- a/generators/src/org/jetbrains/jet/generators/injectors/GenerateInjectors.kt +++ b/generators/src/org/jetbrains/jet/generators/injectors/GenerateInjectors.kt @@ -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) { - for (generator in injectorGenerators) { + for (generator in createInjectorGenerators()) { try { generator.generate() } @@ -50,144 +48,145 @@ public fun main(args: Array) { } } -public val injectorGenerators: List by Delegates.lazy { - GenerateInjectors().generators -} - -public class GenerateInjectors { - - private fun DependencyInjectorGenerator.commonForTopDownAnalyzer() { - parameter(javaClass()) - parameter(javaClass(), useAsContext = true) - parameter(javaClass()) - publicParameter(javaClass()) - - publicFields( - javaClass(), - javaClass() +public fun createInjectorGenerators(): List = + listOf( + generatorForTopDownAnalyzerBasic(), + generatorForTopDownAnalyzerForJvm(), + generatorForJavaDescriptorResolver(), + generatorForTopDownAnalyzerForJs(), + generatorForMacro(), + generatorForTests(), + generatorForLazyResolve(), + generatorForBodyResolve() ) - field(javaClass()) - } +private fun DependencyInjectorGenerator.commonForTopDownAnalyzer() { + parameter(javaClass()) + parameter(javaClass(), useAsContext = true) + parameter(javaClass()) + publicParameter(javaClass()) - private val generatorForTopDownAnalyzerBasic = - generator("compiler/frontend/src", "org.jetbrains.jet.di", "InjectorForTopDownAnalyzerBasic", javaClass()) { - commonForTopDownAnalyzer() - - parameter(javaClass()) - - field(javaClass()) - } - - private val generatorForTopDownAnalyzerForJs = - generator("js/js.translator/src", "org.jetbrains.jet.di", "InjectorForTopDownAnalyzerForJs", javaClass()) { - commonForTopDownAnalyzer() - - field(javaClass()) - field(javaClass(), init = GivenExpression("org.jetbrains.jet.lang.PlatformToKotlinClassMap.EMPTY")) - } - - private val generatorForTopDownAnalyzerForJvm = - generator("compiler/frontend.java/src", "org.jetbrains.jet.di", "InjectorForTopDownAnalyzerForJvm", javaClass()) { - implementInterface(javaClass()) - commonForTopDownAnalyzer() - - publicField(javaClass()) - - field(javaClass(), init = GivenExpression("org.jetbrains.jet.lang.resolve.java.mapping.JavaToKotlinClassMap.getInstance()")) - fields( - javaClass(), - javaClass(), - javaClass(), - javaClass(), - javaClass(), - javaClass(), - javaClass() - ) - field(javaClass(), init = GivenExpression(javaClass().getName() + ".SERVICE.getInstance(project)")) - } - - private val generatorForJavaDescriptorResolver = - generator("compiler/frontend.java/src", "org.jetbrains.jet.di", "InjectorForJavaDescriptorResolver", javaClass()) { - parameters( - javaClass(), - javaClass() - ) - - publicField(javaClass(), useAsContext = true, - init = GivenExpression("org.jetbrains.jet.context.ContextPackage.GlobalContext()")) - publicField(javaClass(), name = "module", - init = GivenExpression("org.jetbrains.jet.lang.resolve.java.AnalyzerFacadeForJVM.createJavaModule(\"\")")) - publicField(javaClass()) - publicField(javaClass()) - - fields( - javaClass(), - javaClass(), - javaClass(), - javaClass(), - javaClass() - ) - field(javaClass(), - init = GivenExpression(javaClass().getName() + ".SERVICE.getInstance(project)")) - } - - private val generatorForMacro = - generator("compiler/frontend/src", "org.jetbrains.jet.di", "InjectorForMacros", javaClass()) { - parameter(javaClass()) - parameter(javaClass(), useAsContext = true) - - publicField(javaClass()) - - field(javaClass(), useAsContext = true, - init = GivenExpression("org.jetbrains.jet.context.ContextPackage.GlobalContext()")) - } - - private val generatorForTests = - generator("compiler/tests", "org.jetbrains.jet.di", "InjectorForTests", javaClass()) { - parameter(javaClass()) - parameter(javaClass(), useAsContext = true) - - publicFields( - javaClass(), - javaClass(), - javaClass() - ) - - field(javaClass(), init = GivenExpression("org.jetbrains.jet.context.ContextPackage.GlobalContext()"), - useAsContext = true) - } - - private val generatorForBodyResolve = - generator("compiler/frontend/src", "org.jetbrains.jet.di", "InjectorForBodyResolve", javaClass()) { - parameter(javaClass()) - parameter(javaClass(), useAsContext = true) - parameter(javaClass()) - parameter(javaClass()) - parameter(javaClass(), useAsContext = true) - - publicField(javaClass()) - } - - private val generatorForLazyResolve = - generator("compiler/frontend/src", "org.jetbrains.jet.di", "InjectorForLazyResolve", javaClass()) { - parameter(javaClass()) - parameter(javaClass(), useAsContext = true) - parameter(javaClass(), useAsContext = true) - parameter(javaClass()) - parameter(javaClass()) - - publicField(javaClass()) - } - - val generators = listOf( - generatorForTopDownAnalyzerBasic, - generatorForTopDownAnalyzerForJvm, - generatorForJavaDescriptorResolver, - generatorForTopDownAnalyzerForJs, - generatorForMacro, - generatorForTests, - generatorForLazyResolve, - generatorForBodyResolve + publicFields( + javaClass(), + javaClass() ) + + field(javaClass()) } + +private fun generatorForTopDownAnalyzerBasic() = + generator("compiler/frontend/src", "org.jetbrains.jet.di", "InjectorForTopDownAnalyzerBasic") { + commonForTopDownAnalyzer() + + parameter(javaClass()) + + field(javaClass()) + } + +private fun generatorForTopDownAnalyzerForJs() = + generator("js/js.translator/src", "org.jetbrains.jet.di", "InjectorForTopDownAnalyzerForJs") { + commonForTopDownAnalyzer() + + field(javaClass()) + field(javaClass(), init = GivenExpression("org.jetbrains.jet.lang.PlatformToKotlinClassMap.EMPTY")) + } + +private fun generatorForTopDownAnalyzerForJvm() = + generator("compiler/frontend.java/src", "org.jetbrains.jet.di", "InjectorForTopDownAnalyzerForJvm") { + implementInterface(javaClass()) + commonForTopDownAnalyzer() + + publicField(javaClass()) + + field(javaClass(), init = GivenExpression("org.jetbrains.jet.lang.resolve.java.mapping.JavaToKotlinClassMap.getInstance()")) + fields( + javaClass(), + javaClass(), + javaClass(), + javaClass(), + javaClass(), + javaClass(), + javaClass() + ) + field(javaClass(), init = GivenExpression(javaClass().getName() + ".SERVICE.getInstance(project)")) + } + +private fun generatorForJavaDescriptorResolver() = + generator("compiler/frontend.java/src", "org.jetbrains.jet.di", "InjectorForJavaDescriptorResolver") { + parameters( + javaClass(), + javaClass() + ) + + publicField(javaClass(), useAsContext = true, + init = GivenExpression("org.jetbrains.jet.context.ContextPackage.GlobalContext()")) + publicField(javaClass(), name = "module", + init = GivenExpression("org.jetbrains.jet.lang.resolve.java.AnalyzerFacadeForJVM.createJavaModule(\"\")")) + publicField(javaClass()) + publicField(javaClass()) + + fields( + javaClass(), + javaClass(), + javaClass(), + javaClass(), + javaClass() + ) + field(javaClass(), + init = GivenExpression(javaClass().getName() + ".SERVICE.getInstance(project)")) + } + +private fun generatorForMacro() = + generator("compiler/frontend/src", "org.jetbrains.jet.di", "InjectorForMacros") { + parameter(javaClass()) + parameter(javaClass(), useAsContext = true) + + publicField(javaClass()) + + field(javaClass(), useAsContext = true, + init = GivenExpression("org.jetbrains.jet.context.ContextPackage.GlobalContext()")) + } + +private fun generatorForTests() = + generator("compiler/tests", "org.jetbrains.jet.di", "InjectorForTests") { + parameter(javaClass()) + parameter(javaClass(), useAsContext = true) + + publicFields( + javaClass(), + javaClass(), + javaClass() + ) + + field(javaClass(), init = GivenExpression("org.jetbrains.jet.context.ContextPackage.GlobalContext()"), + useAsContext = true) + } + +private fun generatorForBodyResolve() = + generator("compiler/frontend/src", "org.jetbrains.jet.di", "InjectorForBodyResolve") { + parameter(javaClass()) + parameter(javaClass(), useAsContext = true) + parameter(javaClass()) + parameter(javaClass()) + parameter(javaClass(), useAsContext = true) + + publicField(javaClass()) + } + +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()) + + publicField(javaClass()) + } + +private fun generator( + targetSourceRoot: String, + injectorPackageName: String, + injectorClassName: String, + body: DependencyInjectorGenerator.() -> Unit +) = generator(targetSourceRoot, injectorPackageName, injectorClassName, "org.jetbrains.jet.generators.injectors.InjectorsPackage", body) diff --git a/generators/tests/org/jetbrains/jet/generators/injectors/GenerateInjectorsTest.java b/generators/tests/org/jetbrains/jet/generators/injectors/GenerateInjectorsTest.java index 491e59e3f9a..0dcdb307cc8 100644 --- a/generators/tests/org/jetbrains/jet/generators/injectors/GenerateInjectorsTest.java +++ b/generators/tests/org/jetbrains/jet/generators/injectors/GenerateInjectorsTest.java @@ -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; diff --git a/injector-generator/src/org/jetbrains/jet/di/DependencyInjectorGenerator.java b/injector-generator/src/org/jetbrains/jet/di/DependencyInjectorGenerator.java index d9425ad886e..e79c3014e43 100644 --- a/injector-generator/src/org/jetbrains/jet/di/DependencyInjectorGenerator.java +++ b/injector-generator/src/org/jetbrains/jet/di/DependencyInjectorGenerator.java @@ -48,7 +48,7 @@ public class DependencyInjectorGenerator { private String targetSourceRoot; private String injectorPackageName; private String injectorClassName; - private Class generatorClass; + private String generatedBy; public DependencyInjectorGenerator() { } @@ -57,11 +57,11 @@ public class DependencyInjectorGenerator { 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.injectorPackageName = injectorPackageName; this.injectorClassName = injectorClassName; - this.generatorClass = generatorClass; + this.generatedBy = generatedBy; return this; } @@ -77,7 +77,7 @@ public class DependencyInjectorGenerator { } 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()); reportUnusedParameters(injectorPackageName, injectorClassName); @@ -90,7 +90,7 @@ public class DependencyInjectorGenerator { 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.print("public class " + injectorClassName); generateImplementsList(p); diff --git a/injector-generator/src/org/jetbrains/jet/di/InjectorGeneratorFacade.kt b/injector-generator/src/org/jetbrains/jet/di/InjectorGeneratorFacade.kt index d27c505e94f..d888455d3ee 100644 --- a/injector-generator/src/org/jetbrains/jet/di/InjectorGeneratorFacade.kt +++ b/injector-generator/src/org/jetbrains/jet/di/InjectorGeneratorFacade.kt @@ -20,11 +20,11 @@ public fun generator( targetSourceRoot: String, injectorPackageName: String, injectorClassName: String, - generatorClass: Class<*>, + generatedBy: String, body: DependencyInjectorGenerator.() -> Unit ): DependencyInjectorGenerator { val generator = DependencyInjectorGenerator() - generator.configure(targetSourceRoot, injectorPackageName, injectorClassName, generatorClass) + generator.configure(targetSourceRoot, injectorPackageName, injectorClassName, generatedBy) generator.body() return generator } diff --git a/js/js.translator/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJs.java b/js/js.translator/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJs.java index 6b5a9350f8e..fa6f0f9f041 100644 --- a/js/js.translator/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJs.java +++ b/js/js.translator/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJs.java @@ -52,7 +52,7 @@ import org.jetbrains.jet.lang.resolve.TypeHierarchyResolver; import org.jetbrains.annotations.NotNull; 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") public class InjectorForTopDownAnalyzerForJs {