Load WasExperimental values correctly for associated declarations

For example, if a class is `@SinceKotlin("X")
@WasExperimental(M::class)`, then its constructor should also be
accessible if API < X, provided that the opt-in to M is given
This commit is contained in:
Alexander Udalov
2018-05-04 15:12:47 +02:00
parent 9995438b37
commit 1f0d3d9c7c
4 changed files with 63 additions and 17 deletions
@@ -8,6 +8,8 @@ class Bar @SinceKotlin("1.1") constructor()
@SinceKotlin("1.0")
class Baz @SinceKotlin("1.1") constructor()
@SinceKotlin("1.1")
class Quux @SinceKotlin("1.0") constructor()
fun t1(): <!API_NOT_AVAILABLE!>Foo<!> = <!UNRESOLVED_REFERENCE!>Foo<!>()
@@ -17,3 +19,5 @@ fun t2() = object : <!UNRESOLVED_REFERENCE, API_NOT_AVAILABLE, API_NOT_AVAILABLE
fun t3(): Bar? = <!UNRESOLVED_REFERENCE!>Bar<!>()
fun t4(): Baz = <!UNRESOLVED_REFERENCE!>Baz<!>()
fun t5(): <!API_NOT_AVAILABLE!>Quux<!> = <!UNRESOLVED_REFERENCE!>Quux<!>()
@@ -4,6 +4,7 @@ public fun t1(): Foo
public fun t2(): Foo
public fun t3(): Bar?
public fun t4(): Baz
public fun t5(): Quux
public final class Bar {
@kotlin.SinceKotlin(version = "1.1") public constructor Bar()
@@ -25,3 +26,10 @@ public final class Bar {
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@kotlin.SinceKotlin(version = "1.1") public final class Quux {
@kotlin.SinceKotlin(version = "1.0") public constructor Quux()
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
}