Refactor kotlin-stdlib-gen

- Make targetsToGenerate Collection to accept set in addition to list
- Unify generated file name schema to '_<source name><platform suffix>.kt'
This commit is contained in:
Ilya Gorbunov
2018-12-25 06:54:54 +03:00
parent 5584b435dc
commit 743d0f4917
3 changed files with 9 additions and 11 deletions
@@ -61,15 +61,13 @@ fun main(args: Array<String>) {
}
}
templateGroups.groupByFileAndWrite(targetsToGenerate = targetBaseDirs.keys.toList()) { (target, source) ->
templateGroups.groupByFileAndWrite(targetsToGenerate = targetBaseDirs.keys) { (target, source) ->
val targetDir = targetBaseDirs[target] ?: error("Target $target directory is not configured")
when (target) {
KotlinTarget.Common -> targetDir.resolve("_${source.name.capitalize()}.kt")
KotlinTarget.JVM -> targetDir.resolve("_${source.name.capitalize()}Jvm.kt")
KotlinTarget.JS -> targetDir.resolve("_${source.name.capitalize()}Js.kt")
KotlinTarget.JS_IR -> targetDir.resolve("_${source.name.capitalize()}Js.kt")
KotlinTarget.Native -> targetDir.resolve("_${source.name.capitalize()}Native.kt")
val platformSuffix = when (val platform = target.platform) {
Platform.Common -> ""
else -> platform.name.toLowerCase().capitalize()
}
targetDir.resolve("_${source.name.capitalize()}$platformSuffix.kt")
}
}
@@ -53,7 +53,7 @@ interface MemberTemplate {
/** Specifies which platforms this member template should be generated for */
fun platforms(vararg platforms: Platform)
fun instantiate(targets: List<KotlinTarget> = KotlinTarget.values): Sequence<MemberBuilder>
fun instantiate(targets: Collection<KotlinTarget> = KotlinTarget.values): Sequence<MemberBuilder>
/** Registers parameterless member builder function */
fun builder(b: MemberBuildAction)
@@ -105,7 +105,7 @@ abstract class MemberTemplateDefinition<TParam> : MemberTemplate {
} ?: this
override fun instantiate(targets: List<KotlinTarget>): Sequence<MemberBuilder> {
override fun instantiate(targets: Collection<KotlinTarget>): Sequence<MemberBuilder> {
val resultingTargets = targets.filter { it.platform in allowedPlatforms }
val resultingPlatforms = resultingTargets.map { it.platform }.distinct()
val specificTargets by lazy { resultingTargets - KotlinTarget.Common }
@@ -39,7 +39,7 @@ data class TargetedSourceFile(
@JvmName("groupByFileAndWriteGroups")
fun Sequence<TemplateGroup>.groupByFileAndWrite(
targetsToGenerate: List<KotlinTarget>,
targetsToGenerate: Collection<KotlinTarget>,
fileNameBuilder: (TargetedSourceFile) -> File
) {
flatMap { group ->
@@ -51,7 +51,7 @@ fun Sequence<TemplateGroup>.groupByFileAndWrite(
@JvmName("groupByFileAndWriteTemplates")
fun Sequence<MemberTemplate>.groupByFileAndWrite(
targetsToGenerate: List<KotlinTarget>,
targetsToGenerate: Collection<KotlinTarget>,
fileNameBuilder: (TargetedSourceFile) -> File
) {
flatMap { it.instantiate(targetsToGenerate) }