[FIR] Generate annotations to data class copy method parameters

#KT-57003 Fixed
This commit is contained in:
Kirill Rakhman
2023-05-15 13:45:27 +02:00
committed by Space Team
parent 5ae3a93084
commit 0ac02be534
25 changed files with 255 additions and 43 deletions
@@ -0,0 +1,48 @@
FILE: annotationsOnDataClassCopy.kt
public final annotation class NoTarget : R|kotlin/Annotation| {
public constructor(): R|NoTarget| {
super<R|kotlin/Any|>()
}
}
@R|kotlin/annotation/Target|(allowedTargets = vararg(Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.VALUE_PARAMETER|)) public final annotation class Param : R|kotlin/Annotation| {
public constructor(): R|Param| {
super<R|kotlin/Any|>()
}
}
@R|kotlin/annotation/Target|(allowedTargets = vararg(Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.PROPERTY|)) public final annotation class Prop : R|kotlin/Annotation| {
public constructor(): R|Prop| {
super<R|kotlin/Any|>()
}
}
@R|kotlin/annotation/Target|(allowedTargets = vararg(Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.PROPERTY|, Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.VALUE_PARAMETER|)) public final annotation class Both : R|kotlin/Annotation| {
public constructor(): R|Both| {
super<R|kotlin/Any|>()
}
}
public final data class Foo : R|kotlin/Any| {
public constructor(@R|NoTarget|() @R|Param|() @R|Both|() p1: R|kotlin/Int|, @CONSTRUCTOR_PARAMETER:R|NoTarget|() @CONSTRUCTOR_PARAMETER:R|Both|() p2: R|kotlin/String|, p3: R|kotlin/Boolean|): R|Foo| {
super<R|kotlin/Any|>()
}
@R|Prop|() public final val p1: R|kotlin/Int| = R|<local>/p1|
public get(): R|kotlin/Int|
public final val p2: R|kotlin/String| = R|<local>/p2|
public get(): R|kotlin/String|
@PROPERTY:R|NoTarget|() @PROPERTY:R|Both|() public final val p3: R|kotlin/Boolean| = R|<local>/p3|
public get(): R|kotlin/Boolean|
public final operator fun component1(): R|kotlin/Int|
public final operator fun component2(): R|kotlin/String|
public final operator fun component3(): R|kotlin/Boolean|
public final fun copy(@R|NoTarget|() @R|Param|() @R|Both|() p1: R|kotlin/Int| = this@R|/Foo|.R|/Foo.p1|, @R|NoTarget|() @R|Both|() p2: R|kotlin/String| = this@R|/Foo|.R|/Foo.p2|, p3: R|kotlin/Boolean| = this@R|/Foo|.R|/Foo.p3|): R|Foo|
}
@@ -0,0 +1,19 @@
// FIR_IDENTICAL
// FIR_DUMP
annotation class NoTarget
@Target(AnnotationTarget.VALUE_PARAMETER)
annotation class Param
@Target(AnnotationTarget.PROPERTY)
annotation class Prop
@Target(AnnotationTarget.PROPERTY, AnnotationTarget.VALUE_PARAMETER)
annotation class Both
data class Foo(
@NoTarget @Param @Prop @Both val p1: Int,
@param:NoTarget @param:Both val p2: String,
@property:NoTarget @property:Both val p3: Boolean,
)
@@ -0,0 +1,44 @@
package
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.PROPERTY, AnnotationTarget.VALUE_PARAMETER}) public final annotation class Both : kotlin.Annotation {
public constructor Both()
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 final data class Foo {
public constructor Foo(/*0*/ @NoTarget @Param @Both p1: kotlin.Int, /*1*/ @NoTarget @Both p2: kotlin.String, /*2*/ p3: kotlin.Boolean)
@Prop public final val p1: kotlin.Int
public final val p2: kotlin.String
@NoTarget @Both public final val p3: kotlin.Boolean
public final operator /*synthesized*/ fun component1(): kotlin.Int
public final operator /*synthesized*/ fun component2(): kotlin.String
public final operator /*synthesized*/ fun component3(): kotlin.Boolean
public final /*synthesized*/ fun copy(/*0*/ @NoTarget @Param @Both p1: kotlin.Int = ..., /*1*/ @NoTarget @Both p2: kotlin.String = ..., /*2*/ p3: kotlin.Boolean = ...): Foo
public open override /*1*/ /*synthesized*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*synthesized*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
}
public final annotation class NoTarget : kotlin.Annotation {
public constructor NoTarget()
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
}
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.VALUE_PARAMETER}) public final annotation class Param : kotlin.Annotation {
public constructor Param()
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
}
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.PROPERTY}) public final annotation class Prop : kotlin.Annotation {
public constructor Prop()
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
}