FIR: fix order of property accessor annotations
#KT-57219 Fixed
This commit is contained in:
committed by
Space Team
parent
9c995755f0
commit
40c628d431
+1
-1
@@ -1457,8 +1457,8 @@ class DeclarationsConverter(
|
||||
this.isGetter = isGetter
|
||||
this.status = status
|
||||
context.firFunctionTargets += target
|
||||
annotations += modifiers.annotations
|
||||
annotations += accessorAdditionalAnnotations
|
||||
annotations += modifiers.annotations
|
||||
|
||||
if (!isGetter) {
|
||||
valueParameters += firValueParameters
|
||||
|
||||
@@ -453,8 +453,8 @@ open class RawFirBuilder(
|
||||
}
|
||||
this.isGetter = isGetter
|
||||
this.status = status
|
||||
extractAnnotationsTo(this)
|
||||
annotations += accessorAnnotationsFromProperty
|
||||
extractAnnotationsTo(this)
|
||||
this@RawFirBuilder.context.firFunctionTargets += accessorTarget
|
||||
symbol = FirPropertyAccessorSymbol()
|
||||
extractValueParametersTo(
|
||||
|
||||
Vendored
+6
-4
@@ -4,9 +4,6 @@
|
||||
// FULL_JDK
|
||||
// JVM_TARGET: 1.8
|
||||
|
||||
// IGNORE_BACKEND_K2: JVM_IR
|
||||
// FIR status: KT-57219 K2: incorrect relative order of normal and use-site-targeted annotations on property getter in the resulting bytecode
|
||||
|
||||
@Repeatable
|
||||
annotation class A(val v: String)
|
||||
|
||||
@@ -21,5 +18,10 @@ val ef: Int
|
||||
@A("e") @A("f") get() = 0
|
||||
|
||||
@get:A("g")
|
||||
val ghi: Int
|
||||
val gh: Int
|
||||
@A("h") get() = 0
|
||||
|
||||
@set:A("i")
|
||||
var ij: Int
|
||||
get() = 0
|
||||
@A("j") set(value) {}
|
||||
|
||||
Vendored
+3
-1
@@ -25,6 +25,8 @@ public final class PropertyGetterUseSiteTargetKt {
|
||||
public final static @A$Container(value=[A(v="a"), A(v="b")]) method getAb(): int
|
||||
public final static @A$Container(value=[A(v="c"), A(v="d")]) method getCd(): int
|
||||
public final static @A$Container(value=[A(v="e"), A(v="f")]) method getEf(): int
|
||||
public final static @A$Container(value=[A(v="g"), A(v="h")]) method getGhi(): int
|
||||
public final static @A$Container(value=[A(v="g"), A(v="h")]) method getGh(): int
|
||||
public final static method getIj(): int
|
||||
public final static @A$Container(value=[A(v="i"), A(v="j")]) method setIj(p0: int): void
|
||||
public inner class A$Container
|
||||
}
|
||||
|
||||
+6
-6
@@ -4,19 +4,19 @@
|
||||
// Ann is not repeatable
|
||||
annotation class Ann(val x: Int)
|
||||
|
||||
<!REPEATED_ANNOTATION!>@get:Ann(10)<!>
|
||||
@get:Ann(10)
|
||||
val a: String
|
||||
@Ann(20) get() = "foo"
|
||||
<!REPEATED_ANNOTATION!>@Ann(20)<!> get() = "foo"
|
||||
|
||||
<!REPEATED_ANNOTATION!>@set:Ann(10)<!>
|
||||
@set:Ann(10)
|
||||
var b: String = ""
|
||||
@Ann(20) set(value) { field = value }
|
||||
<!REPEATED_ANNOTATION!>@Ann(20)<!> set(value) { field = value }
|
||||
|
||||
<!REPEATED_ANNOTATION!>@setparam:Ann(10)<!>
|
||||
var c = " "
|
||||
set(@Ann(20) x) {}
|
||||
|
||||
<!REPEATED_ANNOTATION!>@get:Ann(10)<!>
|
||||
@get:Ann(10)
|
||||
<!REPEATED_ANNOTATION!>@get:Ann(20)<!>
|
||||
val d: String
|
||||
@Ann(30) <!REPEATED_ANNOTATION!>@Ann(40)<!> get() = "foo"
|
||||
<!REPEATED_ANNOTATION!>@Ann(30)<!> <!REPEATED_ANNOTATION!>@Ann(40)<!> get() = "foo"
|
||||
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
// !LANGUAGE: +ProhibitRepeatedUseSiteTargetAnnotations
|
||||
|
||||
// Ann is not repeatable
|
||||
annotation class Ann(val x: Int)
|
||||
|
||||
@get:Ann(10)
|
||||
val a: String
|
||||
<!REPEATED_ANNOTATION!>@Ann(20)<!> get() = "foo"
|
||||
|
||||
@set:Ann(10)
|
||||
var b: String = ""
|
||||
<!REPEATED_ANNOTATION!>@Ann(20)<!> set(value) { field = value }
|
||||
|
||||
<!REPEATED_ANNOTATION!>@setparam:Ann(10)<!>
|
||||
var c = " "
|
||||
set(@Ann(20) x) {}
|
||||
|
||||
@get:Ann(10)
|
||||
<!REPEATED_ANNOTATION!>@get:Ann(20)<!>
|
||||
val d: String
|
||||
<!REPEATED_ANNOTATION!>@Ann(30)<!> <!REPEATED_ANNOTATION!>@Ann(40)<!> get() = "foo"
|
||||
-1
@@ -1,4 +1,3 @@
|
||||
// FIR_IDENTICAL
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
// !LANGUAGE: +ProhibitRepeatedUseSiteTargetAnnotations
|
||||
|
||||
|
||||
Reference in New Issue
Block a user