Don't discriminate generics during callable references resolution

^KT-49038 Fixed
This commit is contained in:
Victor Petukhov
2021-10-01 15:19:57 +03:00
committed by TeamCityServer
parent 23f6c29efc
commit abd2507107
8 changed files with 72 additions and 1 deletions
@@ -0,0 +1,13 @@
fun take(arg: Any) {}
fun <T> foo(a: A, t: T) {} // 1
fun <T> foo(b: B, t : T) {} // 2
fun foo(i: Int) {} // 3
class A
class B
fun box(): String {
val ref1 = take(::foo) // error before 1.6.20; ok, resolved to (3) since 1.6.20
return "OK"
}
@@ -0,0 +1,13 @@
fun take(arg: Any) {}
fun <T> foo(a: A, t: T) {} // 1
fun <T> foo(b: B, t : T) {} // 2
fun foo(i: Int) {} // 3
class A
class B
fun box(): String {
val ref1 = take(::<!CALLABLE_REFERENCE_RESOLUTION_AMBIGUITY!>foo<!>) // error before 1.6.20; ok, resolved to (3) since 1.6.20
return "OK"
}
@@ -0,0 +1,21 @@
package
public fun box(): kotlin.String
public fun </*0*/ T> foo(/*0*/ a: A, /*1*/ t: T): kotlin.Unit
public fun </*0*/ T> foo(/*0*/ b: B, /*1*/ t: T): kotlin.Unit
public fun foo(/*0*/ i: kotlin.Int): kotlin.Unit
public fun take(/*0*/ arg: kotlin.Any): kotlin.Unit
public final class A {
public constructor A()
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 override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public final class B {
public constructor B()
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 override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}