From eae130e246dff2502a3f79ee146e333cdc5024bf Mon Sep 17 00:00:00 2001 From: Alexander Gorshenev Date: Fri, 15 Dec 2017 20:15:05 +0300 Subject: [PATCH] He says make it an extension property. --- .../kotlin/native/interop/gen/jvm/ToolConfig.kt | 2 +- .../org/jetbrains/kotlin/backend/konan/KonanConfig.kt | 2 +- .../org/jetbrains/kotlin/backend/konan/KonanPhases.kt | 4 ++-- .../kotlin/backend/konan/library/KonanLibrary.kt | 1 + build.gradle | 5 +++-- .../main/groovy/org/jetbrains/kotlin/KonanTest.groovy | 7 ++++--- .../org/jetbrains/kotlin/NativeInteropPlugin.groovy | 4 +++- dependencies/build.gradle | 3 ++- .../konan/{util/UserNamed.kt => VisibleNamed.kt} | 7 +------ .../org/jetbrains/kotlin/konan/target/KonanTarget.kt | 10 +++++----- .../kotlin/gradle/plugin/KonanBuildingConfig.kt | 1 + .../kotlin/gradle/plugin/KonanLibrariesSpec.kt | 1 + .../org/jetbrains/kotlin/gradle/plugin/KonanPlugin.kt | 1 + .../kotlin/gradle/plugin/KonanToolingModelBuilder.kt | 1 + .../kotlin/gradle/plugin/tasks/KonanBaseTasks.kt | 1 + .../kotlin/gradle/plugin/tasks/KonanCompileTask.kt | 1 + .../gradle/plugin/tasks/KonanCompilerDownloadTask.kt | 3 +-- .../kotlin/gradle/plugin/tasks/KonanInteropTask.kt | 1 + .../kotlin/gradle/plugin/test/KonanProject.groovy | 2 +- 19 files changed, 32 insertions(+), 25 deletions(-) rename shared/src/main/kotlin/org/jetbrains/kotlin/konan/{util/UserNamed.kt => VisibleNamed.kt} (76%) diff --git a/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/jvm/ToolConfig.kt b/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/jvm/ToolConfig.kt index 03be8d1eeb9..69bce5221d7 100644 --- a/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/jvm/ToolConfig.kt +++ b/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/jvm/ToolConfig.kt @@ -19,7 +19,7 @@ package org.jetbrains.kotlin.native.interop.tool import org.jetbrains.kotlin.konan.file.* import org.jetbrains.kotlin.konan.properties.* import org.jetbrains.kotlin.konan.target.* -import org.jetbrains.kotlin.konan.util.DependencyProcessor +import org.jetbrains.kotlin.konan.util.* import kotlin.reflect.KFunction class ToolConfig(userProvidedTargetName: String?, userProvidedKonanProperties: String?, runnerProvidedKonanHome: String) { diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/KonanConfig.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/KonanConfig.kt index e6af55a5450..4ee11c5f412 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/KonanConfig.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/KonanConfig.kt @@ -31,7 +31,7 @@ import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl import org.jetbrains.kotlin.descriptors.ModuleDescriptor import org.jetbrains.kotlin.konan.file.File import org.jetbrains.kotlin.konan.target.* -import org.jetbrains.kotlin.konan.util.DependencyProcessor +import org.jetbrains.kotlin.konan.util.* import org.jetbrains.kotlin.storage.LockBasedStorageManager import org.jetbrains.kotlin.storage.StorageManager diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/KonanPhases.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/KonanPhases.kt index cb0d0dbd53e..d61475c65b1 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/KonanPhases.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/KonanPhases.kt @@ -17,13 +17,13 @@ package org.jetbrains.kotlin.backend.konan import org.jetbrains.kotlin.backend.konan.util.* -import org.jetbrains.kotlin.konan.util.VisibleNamed +import org.jetbrains.kotlin.konan.util.* import org.jetbrains.kotlin.konan.target.CompilerOutputKind enum class KonanPhase(val description: String, vararg prerequisite: KonanPhase, var enabled: Boolean = true, - var verbose: Boolean = false) : VisibleNamed { + var verbose: Boolean = false) { /* */ FRONTEND("Frontend builds AST"), /* */ PSI_TO_IR("Psi to IR conversion"), /* */ SERIALIZER("Serialize descriptor tree and inline IR bodies"), diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/library/KonanLibrary.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/library/KonanLibrary.kt index 540608b2651..a61c82bc27f 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/library/KonanLibrary.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/library/KonanLibrary.kt @@ -18,6 +18,7 @@ package org.jetbrains.kotlin.backend.konan.library import org.jetbrains.kotlin.konan.target.KonanTarget import org.jetbrains.kotlin.konan.file.File +import org.jetbrains.kotlin.konan.util.visibleName // This scheme describes the Konan Library (klib) layout. interface KonanLibraryLayout { diff --git a/build.gradle b/build.gradle index 7ff60717c9e..555597f054c 100644 --- a/build.gradle +++ b/build.gradle @@ -17,6 +17,7 @@ import groovy.io.FileType import org.jetbrains.kotlin.konan.target.* import org.jetbrains.kotlin.konan.properties.* import org.jetbrains.kotlin.konan.util.* +import static org.jetbrains.kotlin.konan.util.VisibleNamedKt.* defaultTasks 'clean', 'dist' @@ -65,7 +66,7 @@ allprojects { void setupHostAndTarget() { ext.hostName = TargetManager.hostName - ext.targetList = TargetManager.enabled*.visibleName as List + ext.targetList = TargetManager.enabled.collect { getVisibleName(it) } as List } void setupClang(Project project) { @@ -337,7 +338,7 @@ private ArrayList targetDefFiles(String target) { } private String targetToPlatform(String target) { - new TargetManager(target).target.family.visibleName + getVisibleName(new TargetManager(target).target.family) } private String targetToOs(String target) { diff --git a/buildSrc/plugins/src/main/groovy/org/jetbrains/kotlin/KonanTest.groovy b/buildSrc/plugins/src/main/groovy/org/jetbrains/kotlin/KonanTest.groovy index 2706bc5f8e3..2c5621aea68 100644 --- a/buildSrc/plugins/src/main/groovy/org/jetbrains/kotlin/KonanTest.groovy +++ b/buildSrc/plugins/src/main/groovy/org/jetbrains/kotlin/KonanTest.groovy @@ -22,6 +22,7 @@ import org.gradle.api.tasks.TaskAction import org.gradle.process.ExecResult import org.jetbrains.kotlin.konan.target.* import org.jetbrains.kotlin.konan.properties.* +import static org.jetbrains.kotlin.konan.util.VisibleNamedKt.* import java.util.regex.Pattern @@ -109,7 +110,7 @@ abstract class KonanTest extends JavaExec { *moreArgs, *project.globalTestArgs] if (project.testTarget) { - args "-target", target.visibleName + args "-target", getVisibleName(target) } if (enableKonanAssertions) { args "-ea" @@ -447,7 +448,7 @@ class RunDriverKonanTest extends KonanTest { *moreArgs, *project.globalTestArgs] if (project.testTarget) { - args "-target", target.visibleName + args "-target", getVisibleName(target) } if (enableKonanAssertions) { args "-ea" @@ -469,7 +470,7 @@ class RunInteropKonanTest extends KonanTest { void setInterop(String value) { this.interop = value this.interopConf = project.kotlinNativeInterop[value] - this.interopConf.target = target.visibleName + this.interopConf.target = getVisibleName(target) this.dependsOn(this.interopConf.genTask) } diff --git a/buildSrc/plugins/src/main/groovy/org/jetbrains/kotlin/NativeInteropPlugin.groovy b/buildSrc/plugins/src/main/groovy/org/jetbrains/kotlin/NativeInteropPlugin.groovy index 4329c718a3d..fdcc04d58f2 100644 --- a/buildSrc/plugins/src/main/groovy/org/jetbrains/kotlin/NativeInteropPlugin.groovy +++ b/buildSrc/plugins/src/main/groovy/org/jetbrains/kotlin/NativeInteropPlugin.groovy @@ -29,6 +29,8 @@ import org.gradle.api.tasks.SourceSet import org.gradle.api.tasks.TaskDependency import org.gradle.internal.reflect.Instantiator import org.jetbrains.kotlin.konan.target.* +import org.jetbrains.kotlin.konan.util.* +import static org.jetbrains.kotlin.konan.util.VisibleNamedKt.* class NamedNativeInteropConfig implements Named { @@ -146,7 +148,7 @@ class NamedNativeInteropConfig implements Named { } File getNativeLibsDir() { - def target = new TargetManager(target).target.visibleName + def target = getVisibleName(new TargetManager(target).target) return new File(project.buildDir, "nativelibs/$target") } diff --git a/dependencies/build.gradle b/dependencies/build.gradle index e001f75b42b..4b177f6e26b 100644 --- a/dependencies/build.gradle +++ b/dependencies/build.gradle @@ -22,6 +22,7 @@ import groovy.transform.stc.FromString import org.jetbrains.kotlin.konan.target.* import org.jetbrains.kotlin.konan.util.DependencyProcessor import static org.jetbrains.kotlin.konan.target.KonanTarget.* +import static org.jetbrains.kotlin.konan.util.VisibleNamedKt.* import org.jetbrains.kotlin.konan.properties.KonanProperties import org.jetbrains.kotlin.konan.properties.* @@ -218,7 +219,7 @@ enum DependencyKind { DependencyKind(String name, @ClosureParams(value = FromString.class, options = "KonanProperties") Closure dirGetter, @ClosureParams(value = FromString.class, options = "KonanTarget") Closure propertyNameGetter = - {target -> "${target.visibleName}${name.capitalize()}Dir"}) { + {target -> "${getVisibleName(target)}${name.capitalize()}Dir"}) { this.name = name this.dirGetter = dirGetter this.propertyNameGetter = propertyNameGetter diff --git a/shared/src/main/kotlin/org/jetbrains/kotlin/konan/util/UserNamed.kt b/shared/src/main/kotlin/org/jetbrains/kotlin/konan/VisibleNamed.kt similarity index 76% rename from shared/src/main/kotlin/org/jetbrains/kotlin/konan/util/UserNamed.kt rename to shared/src/main/kotlin/org/jetbrains/kotlin/konan/VisibleNamed.kt index a0a303ab027..162db6f8dcb 100644 --- a/shared/src/main/kotlin/org/jetbrains/kotlin/konan/util/UserNamed.kt +++ b/shared/src/main/kotlin/org/jetbrains/kotlin/konan/VisibleNamed.kt @@ -16,9 +16,4 @@ package org.jetbrains.kotlin.konan.util -// This interface is good for Enums to make enum members available to users -// as low case words. -interface VisibleNamed { - val name: String - val visibleName get() = name.toLowerCase() -} +val > T.visibleName get() = name.toLowerCase() diff --git a/shared/src/main/kotlin/org/jetbrains/kotlin/konan/target/KonanTarget.kt b/shared/src/main/kotlin/org/jetbrains/kotlin/konan/target/KonanTarget.kt index 3e3060b5b0c..e280a8b5a55 100644 --- a/shared/src/main/kotlin/org/jetbrains/kotlin/konan/target/KonanTarget.kt +++ b/shared/src/main/kotlin/org/jetbrains/kotlin/konan/target/KonanTarget.kt @@ -16,9 +16,9 @@ package org.jetbrains.kotlin.konan.target -import org.jetbrains.kotlin.konan.util.VisibleNamed +import org.jetbrains.kotlin.konan.util.visibleName -enum class Family(val exeSuffix:String, val dynamicPrefix: String, val dynamicSuffix: String) : VisibleNamed { +enum class Family(val exeSuffix:String, val dynamicPrefix: String, val dynamicSuffix: String) { OSX ("kexe", "lib", "dylib"), IOS ("kexe", "lib", "dylib"), LINUX ("kexe", "lib", "so" ), @@ -27,7 +27,7 @@ enum class Family(val exeSuffix:String, val dynamicPrefix: String, val dynamicSu WASM ("wasm", "" , "wasm" ) } -enum class Architecture(val bitness: Int) : VisibleNamed { +enum class Architecture(val bitness: Int) { X64(64), ARM64(64), ARM32(32), @@ -36,7 +36,7 @@ enum class Architecture(val bitness: Int) : VisibleNamed { WASM32(32); } -enum class KonanTarget(val family: Family, val architecture: Architecture, val detailedName: String, var enabled: Boolean = false) : VisibleNamed { +enum class KonanTarget(val family: Family, val architecture: Architecture, val detailedName: String, var enabled: Boolean = false) { ANDROID_ARM32( Family.ANDROID, Architecture.ARM32, "android_arm32"), ANDROID_ARM64( Family.ANDROID, Architecture.ARM64, "android_arm64"), IPHONE( Family.IOS, Architecture.ARM64, "ios"), @@ -53,7 +53,7 @@ enum class KonanTarget(val family: Family, val architecture: Architecture, val d fun hostTargetSuffix(host: KonanTarget, target: KonanTarget) = if (target == host) host.detailedName else "${host.detailedName}-${target.detailedName}" -enum class CompilerOutputKind: VisibleNamed { +enum class CompilerOutputKind { PROGRAM { override fun suffix(target: KonanTarget?) = ".${target!!.family.exeSuffix}" }, diff --git a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanBuildingConfig.kt b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanBuildingConfig.kt index 854358aaf3a..50681cfa87b 100644 --- a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanBuildingConfig.kt +++ b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanBuildingConfig.kt @@ -29,6 +29,7 @@ import org.gradle.util.ConfigureUtil import org.jetbrains.kotlin.gradle.plugin.tasks.KonanBuildingTask import org.jetbrains.kotlin.konan.target.KonanTarget import org.jetbrains.kotlin.konan.target.TargetManager +import org.jetbrains.kotlin.konan.util.visibleName import java.io.File /** Base class for all Kotlin/Native artifacts. */ diff --git a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanLibrariesSpec.kt b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanLibrariesSpec.kt index 4363254c552..5b36959383d 100644 --- a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanLibrariesSpec.kt +++ b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanLibrariesSpec.kt @@ -25,6 +25,7 @@ import org.gradle.api.tasks.Internal import org.jetbrains.kotlin.gradle.plugin.tasks.KonanArtifactWithLibrariesTask import org.jetbrains.kotlin.gradle.plugin.tasks.KonanBuildingTask import org.jetbrains.kotlin.konan.target.KonanTarget +import org.jetbrains.kotlin.konan.util.visibleName import java.io.File open class KonanLibrariesSpec(val task: KonanArtifactWithLibrariesTask, val project: Project) { diff --git a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanPlugin.kt b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanPlugin.kt index b0e54afaa69..09371b19c4f 100644 --- a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanPlugin.kt +++ b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanPlugin.kt @@ -25,6 +25,7 @@ import org.jetbrains.kotlin.gradle.plugin.KonanPlugin.Companion.COMPILE_ALL_TASK import org.jetbrains.kotlin.gradle.plugin.tasks.* import org.jetbrains.kotlin.konan.target.KonanTarget import org.jetbrains.kotlin.konan.target.TargetManager +import org.jetbrains.kotlin.konan.util.visibleName import java.io.File import java.util.* import javax.inject.Inject diff --git a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanToolingModelBuilder.kt b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanToolingModelBuilder.kt index 5f6cb573e3e..35a2f648d6d 100644 --- a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanToolingModelBuilder.kt +++ b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanToolingModelBuilder.kt @@ -20,6 +20,7 @@ import org.gradle.api.Project import org.gradle.tooling.provider.model.ToolingModelBuilder import org.jetbrains.kotlin.gradle.plugin.model.KonanArtifact import org.jetbrains.kotlin.gradle.plugin.model.KonanModel +import org.jetbrains.kotlin.konan.util.visibleName object KonanToolingModelBuilder : ToolingModelBuilder { override fun canBuild(modelName: String): Boolean = KonanModel::class.java.name == modelName diff --git a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/tasks/KonanBaseTasks.kt b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/tasks/KonanBaseTasks.kt index 36b1a5bb401..597ebd1ca4b 100644 --- a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/tasks/KonanBaseTasks.kt +++ b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/tasks/KonanBaseTasks.kt @@ -30,6 +30,7 @@ import org.jetbrains.kotlin.gradle.plugin.KonanArtifactWithLibrariesSpec import org.jetbrains.kotlin.gradle.plugin.KonanLibrariesSpec import org.jetbrains.kotlin.konan.target.KonanTarget import org.jetbrains.kotlin.konan.target.TargetManager +import org.jetbrains.kotlin.konan.util.visibleName import java.io.File internal val Project.host diff --git a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/tasks/KonanCompileTask.kt b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/tasks/KonanCompileTask.kt index ca196af6cbf..4cd5c01adb0 100644 --- a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/tasks/KonanCompileTask.kt +++ b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/tasks/KonanCompileTask.kt @@ -20,6 +20,7 @@ import org.gradle.api.file.FileCollection import org.gradle.api.tasks.* import org.jetbrains.kotlin.gradle.plugin.* import org.jetbrains.kotlin.konan.target.CompilerOutputKind +import org.jetbrains.kotlin.konan.util.visibleName enum class Produce(val cliOption: String, val kind: CompilerOutputKind) { PROGRAM("program", CompilerOutputKind.PROGRAM), diff --git a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/tasks/KonanCompilerDownloadTask.kt b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/tasks/KonanCompilerDownloadTask.kt index 7ecb891a410..0dd4eb26018 100644 --- a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/tasks/KonanCompilerDownloadTask.kt +++ b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/tasks/KonanCompilerDownloadTask.kt @@ -21,8 +21,7 @@ import org.gradle.api.GradleScriptException import org.gradle.api.tasks.Internal import org.gradle.api.tasks.TaskAction import org.jetbrains.kotlin.gradle.plugin.* -import org.jetbrains.kotlin.konan.util.DependencyProcessor -import org.jetbrains.kotlin.konan.util.DependencySource +import org.jetbrains.kotlin.konan.util.* import java.io.File import java.io.IOException diff --git a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/tasks/KonanInteropTask.kt b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/tasks/KonanInteropTask.kt index 08c0a046f63..35f6c4a7bb5 100644 --- a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/tasks/KonanInteropTask.kt +++ b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/tasks/KonanInteropTask.kt @@ -24,6 +24,7 @@ import org.gradle.util.ConfigureUtil import org.jetbrains.kotlin.gradle.plugin.* import org.jetbrains.kotlin.gradle.plugin.KonanInteropSpec.IncludeDirectoriesSpec import org.jetbrains.kotlin.konan.target.KonanTarget +import org.jetbrains.kotlin.konan.util.visibleName import java.io.File /** diff --git a/tools/kotlin-native-gradle-plugin/src/test/groovy/org/jetbrains/kotlin/gradle/plugin/test/KonanProject.groovy b/tools/kotlin-native-gradle-plugin/src/test/groovy/org/jetbrains/kotlin/gradle/plugin/test/KonanProject.groovy index bf8dc308fa8..f24df737fda 100644 --- a/tools/kotlin-native-gradle-plugin/src/test/groovy/org/jetbrains/kotlin/gradle/plugin/test/KonanProject.groovy +++ b/tools/kotlin-native-gradle-plugin/src/test/groovy/org/jetbrains/kotlin/gradle/plugin/test/KonanProject.groovy @@ -24,7 +24,7 @@ class KonanProject { static String DEFAULT_ARTIFACT_NAME = 'main' static String DEFAULT_INTEROP_NAME = "stdio" - static String HOST = TargetManager.host.visibleName + static String HOST = TargetManager.hostName File projectDir Path projectPath