803abfeba8
* `return` should only be added to the last statement if the return type is not Unit * If there is a `return` without an argument, then the expected return type is Unit and the last expression is not a return argument (unless it's an incomplete call, in which case it is inferred to return Unit; this behavior is questionable, but inherited from K1) * There should be a constraint on return arguments even if the expected type is Unit, otherwise errors will be missed * When the expected type is known, using the call completion results writer is pointless (and probably subtly wrong). ^KT-54742 Fixed
46 lines
793 B
Kotlin
Vendored
46 lines
793 B
Kotlin
Vendored
// FIR_IDENTICAL
|
|
// !LANGUAGE: +ContextReceivers
|
|
|
|
interface Lazy<T>
|
|
|
|
context(Lazy<Int>, Lazy<CharSequence>)
|
|
fun test1() {}
|
|
|
|
context(Lazy<T>)
|
|
fun <T> Lazy<Int>.test2() {}
|
|
|
|
context(Lazy<Lazy<T>>)
|
|
fun <T> Lazy<Int>.test3() {}
|
|
|
|
fun <T> f(lazy1: Lazy<Int>, lazy2: Lazy<CharSequence>, lazyT: Lazy<T>, lazyLazyT: Lazy<Lazy<T>>) {
|
|
with(lazy1) {
|
|
with(lazy2) {
|
|
test1()
|
|
test2()
|
|
}
|
|
}
|
|
with(lazy2) {
|
|
with(lazy1) {
|
|
test1()
|
|
test2()
|
|
}
|
|
}
|
|
with(lazyT) {
|
|
with(lazy1) {
|
|
test2()
|
|
}
|
|
}
|
|
with(lazyLazyT) {
|
|
with(lazy1) {
|
|
test2()
|
|
test3()
|
|
}
|
|
}
|
|
with(lazy1) {
|
|
with(lazyLazyT) {
|
|
test2()
|
|
test3()
|
|
}
|
|
}
|
|
}
|