Implement source sections compiler plugin

allows to compile only parts of the source files, denoted by top-level
"sections" (function with lambda param calls), but preserving original
file line/column numbers for easier diagnostics. Allow e.g. to compile
gradle "buildscript" section without preprocessing original file in
advance. See tests for examples.
This commit is contained in:
Ilya Chernikov
2017-03-10 16:15:11 +01:00
parent 63c276d444
commit 4b430b49a7
17 changed files with 708 additions and 4 deletions
@@ -0,0 +1,22 @@
println("should not be printed")
fun unlistedSectionName(body: () -> Unit): Unit = body()
let {
println("Hello, World!")
}
println("ignore here")
unlistedSectionName {
println("should not be printed too")
}
println("ignore here")
apply {
println("That's all, folks!")
}
println("ignore here")
@@ -0,0 +1,22 @@
let {
println("Hello, World!")
}
apply {
println("That's all, folks!")
}
@@ -0,0 +1,2 @@
Hello, World!
That's all, folks!