diff --git a/subprojects/integ-tests/src/test/kotlin/org/gradle/kotlin/dsl/integration/ProjectSchemaAccessorsIntegrationTest.kt b/subprojects/integ-tests/src/test/kotlin/org/gradle/kotlin/dsl/integration/ProjectSchemaAccessorsIntegrationTest.kt index 19109dd63..b625c2ad3 100644 --- a/subprojects/integ-tests/src/test/kotlin/org/gradle/kotlin/dsl/integration/ProjectSchemaAccessorsIntegrationTest.kt +++ b/subprojects/integ-tests/src/test/kotlin/org/gradle/kotlin/dsl/integration/ProjectSchemaAccessorsIntegrationTest.kt @@ -145,6 +145,47 @@ class ProjectSchemaAccessorsIntegrationTest : AbstractPluginIntegrationTest() { ) } + @Test + fun `can access task of default package type`() { + + withFolders { + + "buildSrc" { + + withPrecompiledPlugins() + + "src/main/kotlin" { + + withFile("CustomTask.kt", """ + open class CustomTask : org.gradle.api.DefaultTask() + """) + + withFile("plugin.gradle.kts", """ + tasks.register("customTask") + """) + } + } + } + + withBuildScript(""" + + plugins { id("plugin") } + + inline fun typeOf(value: T) = typeOf() + + println("task: " + typeOf(tasks.customTask)) + tasks.customTask { println("task{} " + typeOf(this)) } + """) + + assertThat( + build("customTask", "-q").output, + containsMultiLineString(""" + task: org.gradle.api.tasks.TaskProvider + task{} CustomTask + """) + ) + } + @Test fun `can access extension of nested type`() { diff --git a/subprojects/provider/src/main/kotlin/org/gradle/kotlin/dsl/accessors/AccessorsClassPath.kt b/subprojects/provider/src/main/kotlin/org/gradle/kotlin/dsl/accessors/AccessorsClassPath.kt index 635f88d9f..0d400bd70 100644 --- a/subprojects/provider/src/main/kotlin/org/gradle/kotlin/dsl/accessors/AccessorsClassPath.kt +++ b/subprojects/provider/src/main/kotlin/org/gradle/kotlin/dsl/accessors/AccessorsClassPath.kt @@ -251,8 +251,7 @@ private fun importsRequiredBy(schemaSubset: ProjectSchema): List = defaultPackageTypesIn( schemaSubset - .extensions - .flatMap { listOf(it.target, it.type) } + .run { extensions.flatMap { listOf(it.target, it.type) } + tasks.map { it.type } } .filterIsInstance() .map { it.type } ) diff --git a/subprojects/provider/src/test/kotlin/org/gradle/kotlin/dsl/accessors/TypeAccessibilityProviderTest.kt b/subprojects/provider/src/test/kotlin/org/gradle/kotlin/dsl/accessors/TypeAccessibilityProviderTest.kt index 358dc7c68..3a525ce6a 100644 --- a/subprojects/provider/src/test/kotlin/org/gradle/kotlin/dsl/accessors/TypeAccessibilityProviderTest.kt +++ b/subprojects/provider/src/test/kotlin/org/gradle/kotlin/dsl/accessors/TypeAccessibilityProviderTest.kt @@ -46,6 +46,11 @@ class TypeAccessibilityProviderTest : TestWithClassPath() { assertTrue(leafs.isEmpty()) } + classNamesFromTypeString("CustomTask").apply { + assertThat(all, hasItems("CustomTask")) + assertThat(leafs, hasItems("CustomTask")) + } + classNamesFromTypeString("java.util.List").apply { assertThat(all, hasItems("java.util.List")) assertTrue(leafs.isEmpty())