Move codegen code to main source set
Mainly to work around a loader constraint violation that appeared when
updating to the latest snapshot.
In the long run it makes sense to have the code available in the
distribution for when we implement code generation at the project site.
Temporarily disable Kotlin API generation until the Action extensions
can be generated again.
Temporarily disable checking the `copy` sample until the Action
extensions are available.
26 Aug 16 7114e6032d4140c0a10518e223bfbfe036f9fa08
Compile scripts against generated Kotlin API jar
We would like Kotlin build scripts to behave as if all the `Action<T>`
parameters in the Gradle API had been declared as `T.() -> Unit` to
avoid the need for explicitly qualifying the single argument to the
given lambda expressions with `it`.
In other words, we would like users to be writing code like:
Where `copySpec` is declared in the Gradle Java API as:
CopySpec copySpec(Action<? super CopySpec> configuration)
So far we have been able to avoid the qualifying `it` in some situations
via mindful use of inheritance and Kotlin extensions but a comprehensive
solution was still lacking. The underlying issue is that while Kotlin
does provide a type extension mechanism, type members still take
precedence over extensions and currently there's no mechanism to
instruct Kotlin otherwise.
In the future we might be able to implement a different solution to this
particular issue via a new Kotlin language feature still in discussion:
In the meantime, by giving the Kotlin compiler a carefully crafted API
jar with all members that could potentially conflict with our provided
extensions removed we can work around the fact that interface members
take precedence over extension members and expose all the extensions we
And that is the solution implemented in this commit:
- Remove all API methods that take a last `Action<T>` parameter
- Generate shim extensions that take a last `T.() -> Unit`
Proper treatment for generic types will be implemented in a future
See also: #54, #117
16 Aug 16 7b3890ea6729eebcafe11974485c89ed7cf1e95d