Add compatibility resolve when SAM conversion was applied partially
#KT-40646 Fixed
This commit is contained in:
+31
@@ -0,0 +1,31 @@
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_EXPRESSION
|
||||
|
||||
// FILE: Observer.java
|
||||
public interface Observer<K> {
|
||||
void onChanged(K k);
|
||||
}
|
||||
|
||||
// FILE: LiveData.java
|
||||
public class LiveData<T> {
|
||||
public void observe(java.lang.Runnable r, Observer<? super T> o) {}
|
||||
}
|
||||
|
||||
// FILE: extension.kt
|
||||
fun <T> LiveData<T>.observe(a: Any, observer: (T) -> Unit): Observer<T> {
|
||||
return Observer { observer(it) }
|
||||
}
|
||||
|
||||
// FILE: test.kt
|
||||
fun <T> test1(r: Runnable, l: LiveData<T>): Observer<T> = l.observe(r) { } // partial conversion
|
||||
|
||||
fun <T> test2(r: Runnable, o: Observer<T>, l: LiveData<T>) {
|
||||
val a = l.observe(r, o) // no conversion
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Unit")!>a<!>
|
||||
|
||||
val b = l.observe({}, {}) // conversion for all arguments
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Unit")!>b<!>
|
||||
|
||||
val c = l.observe({}) {} // conversion for all arguments
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Unit")!>c<!>
|
||||
}
|
||||
|
||||
+30
@@ -0,0 +1,30 @@
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_EXPRESSION
|
||||
|
||||
// FILE: Observer.java
|
||||
public interface Observer<K> {
|
||||
void onChanged(K k);
|
||||
}
|
||||
|
||||
// FILE: LiveData.java
|
||||
public class LiveData<T> {
|
||||
public void observe(java.lang.Runnable r, Observer<? super T> o) {}
|
||||
}
|
||||
|
||||
// FILE: extension.kt
|
||||
fun <T> LiveData<T>.observe(a: Any, observer: (T) -> Unit): Observer<T> {
|
||||
return Observer { observer(it) }
|
||||
}
|
||||
|
||||
// FILE: test.kt
|
||||
fun <T> test1(r: Runnable, l: LiveData<T>): Observer<T> = l.<!COMPATIBILITY_WARNING!>observe<!>(r) { } // partial conversion
|
||||
|
||||
fun <T> test2(r: Runnable, o: Observer<T>, l: LiveData<T>) {
|
||||
val a = l.observe(r, o) // no conversion
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Unit")!>a<!>
|
||||
|
||||
val b = l.observe({}, {}) // conversion for all arguments
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Unit")!>b<!>
|
||||
|
||||
val c = l.observe({}) {} // conversion for all arguments
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Unit")!>c<!>
|
||||
}
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
package
|
||||
|
||||
public fun </*0*/ T> test1(/*0*/ r: java.lang.Runnable, /*1*/ l: LiveData<T>): Observer<T>
|
||||
public fun </*0*/ T> test2(/*0*/ r: java.lang.Runnable, /*1*/ o: Observer<T>, /*2*/ l: LiveData<T>): kotlin.Unit
|
||||
public fun </*0*/ T> LiveData<T>.observe(/*0*/ a: kotlin.Any, /*1*/ observer: (T) -> kotlin.Unit): Observer<T>
|
||||
|
||||
public open class LiveData</*0*/ T : kotlin.Any!> {
|
||||
public constructor LiveData</*0*/ T : kotlin.Any!>()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open fun observe(/*0*/ r: java.lang.Runnable!, /*1*/ o: Observer<in T!>!): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public interface Observer</*0*/ K : kotlin.Any!> {
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public abstract fun onChanged(/*0*/ k: K!): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
Reference in New Issue
Block a user