Turns out, context parameters really aren't stable yet...
Just found this very strange bug. It seems the compiler gets confused at deeply-nested generics and context parameters
Copy code
interface Dsl<F>
context(_: Dsl<F>)
fun <F> dslFun() {}
data object FalseNegative : Dsl<List<List<List<*>>>> {
fun test() {
dslFun<Int>() // FalseNegative is somehow picked as the context
}
}
fun FalseNegative.anotherFalseNegative() {
dslFun<Int>()
}