Support overload ambiguity resolution for callable references by expected type.
Resolve callable references taking into account expected callable types. This affects call resolution procedure (resolve 'foo' in for 'foo(::bar)') similar to the approach used for function literals: * During "shape arguments" phase of call resolution, callable references are resolved in independent context without expected type. If the callable reference is ambiguous, its shape type is a function placeholder type without parameter types and return type information. Otherwise, it is a reflection type for the resolved function or property. Upper-level call is resolved without taking into account ambiguous callable references. * During "complete call" phase of call resolution, resolve callable reference arguments to actual descriptors (if possible), and update constraint system for the given call accordingly. #KT-6982 Fixed #KT-5780 Fixed
This commit is contained in:
@@ -0,0 +1,25 @@
|
||||
package
|
||||
|
||||
internal val userOfX0: kotlin.Unit
|
||||
internal val x0: kotlin.reflect.KFunction1<A, kotlin.Unit>
|
||||
internal val x1: (A) -> kotlin.Unit
|
||||
internal val x2: kotlin.reflect.KProperty1<A, kotlin.Int>
|
||||
internal val x3: kotlin.reflect.KProperty1<A, kotlin.Int>
|
||||
internal val x4: (A) -> kotlin.String
|
||||
internal val y0: kotlin.reflect.KFunction1<A, kotlin.Unit>
|
||||
internal val y1: (A) -> kotlin.Unit
|
||||
internal val y2: kotlin.reflect.KProperty1<A, kotlin.Int>
|
||||
internal val y3: kotlin.reflect.KProperty1<A, kotlin.Int>
|
||||
internal fun </*0*/ T> ofType(/*0*/ x: T): T
|
||||
internal fun A.foo(): kotlin.String
|
||||
|
||||
internal final class A {
|
||||
public constructor A()
|
||||
internal final val bar: kotlin.Int = 0
|
||||
internal final val foo: kotlin.Int = 0
|
||||
internal final fun bar(): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
internal final fun foo(): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
Reference in New Issue
Block a user