Use constraint system for comparing for specificity against a generic signature.

Drop "discrimiate generics" mode where it's unneeded.
This commit is contained in:
Dmitry Petrov
2015-12-25 15:20:43 +03:00
parent aeefdffaab
commit 02daeac41b
14 changed files with 233 additions and 79 deletions
@@ -0,0 +1,26 @@
package
public fun </*0*/ T1> A<T1>.foo(): X1
public fun </*0*/ T2> A<out T2>.foo(): X2
public fun </*0*/ T> A<out T>.test(): [ERROR : Error function type]
public final class A</*0*/ T> {
public constructor A</*0*/ T>()
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 object X1 {
private constructor X1()
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 object X2 {
private constructor X2()
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
}