880b278c40
The original idea was in resolving of annotation type ref using only importing scopes and accepting or discarding that resolution result depending on if this annotation is needed for compiler/plugins or not But there is a problem that resolution of FirUserType with type resolver is not a pure operation: type resolver transforms qualifier parts which may contain type arguments, so if they were unresolved at the first resolve, they will stay unresolved forever. To prevent this we will deeply copy annotation type ref before first resolution ^KT-55286 Fixed
33 lines
1005 B
Plaintext
Vendored
33 lines
1005 B
Plaintext
Vendored
FILE: kt55286.kt
|
|
public final annotation class Deprecated<T> : R|kotlin/Annotation| {
|
|
public constructor<T>(): R|Deprecated<T>| {
|
|
super<R|kotlin/Any|>()
|
|
}
|
|
|
|
}
|
|
public open class Base : R|kotlin/Any| {
|
|
public constructor(@R|Deprecated<Base.Nested>|() a: R|kotlin/String|): R|Base| {
|
|
super<R|kotlin/Any|>()
|
|
}
|
|
|
|
@R|Deprecated<Base.Nested>|() public final val a: R|kotlin/String| = R|<local>/a|
|
|
public get(): R|kotlin/String|
|
|
|
|
public final class Nested : R|kotlin/Any| {
|
|
public constructor(): R|Base.Nested| {
|
|
super<R|kotlin/Any|>()
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
public final class Derived : R|Base| {
|
|
public constructor(@R|Deprecated<Base.Nested>|() b: R|kotlin/String|): R|Derived| {
|
|
super<R|Base|>(String())
|
|
}
|
|
|
|
@R|Deprecated<Base.Nested>|() public final val b: R|kotlin/String| = R|<local>/b|
|
|
public get(): R|kotlin/String|
|
|
|
|
}
|