From 1144a6e036b616cf0aa1397f31811ac4e961376f Mon Sep 17 00:00:00 2001 From: "Rodrigo B. de Oliveira" Date: Wed, 29 Nov 2017 10:42:54 -0200 Subject: [PATCH] Explicitly declare public type of `konanArtifacts` extension Because `KonanArtifactContainer` inherits from Gradle's `DefaultPolymorphicDomainObjectContainer`, it inherits its implementation of [`HasPublicType`](https://github.com/gradle/gradle/blob/283a513257628b93a0b092f78385e2b42fec6da3/subprojects/model-core/src/main/java/org/gradle/api/reflect/HasPublicType.java#L29). This default implementation tells Gradle to expose the extension as a `NamedDomainObjectContainer` where `ElementType` is inferred in a best-effort manner. This means that any additional members of `KonanArtifactContainer` wouldn't be easily accessible in a Gradle Kotlin build script. This commit explicitly declares the public extension type to be `KonanArtifactContainer` by using the appropriate [`ExtensionContainer#create` overload](https://docs.gradle.org/current/javadoc/org/gradle/api/plugins/ExtensionContainer.html#create(java.lang.Class,%20java.lang.String,%20java.lang.Class,%20java.lang.Object...)). --- .../kotlin/org/jetbrains/kotlin/gradle/plugin/KonanPlugin.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 2848ca7c0d9..71cdf83e81b 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 @@ -270,7 +270,7 @@ class KonanPlugin @Inject constructor(private val registry: ToolingModelBuilderR project.tasks.create(KONAN_DOWNLOAD_TASK_NAME, KonanCompilerDownloadTask::class.java) project.tasks.create(KONAN_GENERATE_CMAKE_TASK_NAME, KonanGenerateCMakeTask::class.java) project.extensions.create(KONAN_EXTENSION_NAME, KonanExtension::class.java) - project.extensions.create(ARTIFACTS_CONTAINER_NAME, KonanArtifactContainer::class.java, project) + project.extensions.create(KonanArtifactContainer::class.java, ARTIFACTS_CONTAINER_NAME, KonanArtifactContainer::class.java, project) // Set additional project properties like konan.home, konan.build.targets etc. if (!project.hasProperty(ProjectProperty.KONAN_HOME)) {