FIR deserializer: proper annotation loading for value parameter of property setter
This commit is contained in:
committed by
Dmitriy Novozhilov
parent
9308525d93
commit
fab9ee47f9
+1
-1
@@ -6,7 +6,7 @@ public final annotation class A : R|kotlin/Annotation| {
|
|||||||
public final class Class : R|kotlin/Any| {
|
public final class Class : R|kotlin/Any| {
|
||||||
public final var R|kotlin/Int|.foo: R|kotlin/Int|
|
public final var R|kotlin/Int|.foo: R|kotlin/Int|
|
||||||
public get(): R|kotlin/Int|
|
public get(): R|kotlin/Int|
|
||||||
public set(value: R|kotlin/Int|): R|kotlin/Unit|
|
public set(@R|test/A|() value: R|kotlin/Int|): R|kotlin/Unit|
|
||||||
|
|
||||||
public constructor(): R|test/Class|
|
public constructor(): R|test/Class|
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -6,7 +6,7 @@ public final annotation class A : R|kotlin/Annotation| {
|
|||||||
public final class Class : R|kotlin/Any| {
|
public final class Class : R|kotlin/Any| {
|
||||||
public final var foo: R|kotlin/Int|
|
public final var foo: R|kotlin/Int|
|
||||||
public get(): R|kotlin/Int|
|
public get(): R|kotlin/Int|
|
||||||
public set(value: R|kotlin/Int|): R|kotlin/Unit|
|
public set(@R|test/A|() value: R|kotlin/Int|): R|kotlin/Unit|
|
||||||
|
|
||||||
public constructor(): R|test/Class|
|
public constructor(): R|test/Class|
|
||||||
|
|
||||||
|
|||||||
+5
-14
@@ -25,7 +25,6 @@ import org.jetbrains.kotlin.metadata.ProtoBuf
|
|||||||
import org.jetbrains.kotlin.metadata.deserialization.*
|
import org.jetbrains.kotlin.metadata.deserialization.*
|
||||||
import org.jetbrains.kotlin.name.ClassId
|
import org.jetbrains.kotlin.name.ClassId
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
import org.jetbrains.kotlin.name.Name
|
|
||||||
import org.jetbrains.kotlin.protobuf.MessageLite
|
import org.jetbrains.kotlin.protobuf.MessageLite
|
||||||
import org.jetbrains.kotlin.serialization.deserialization.ProtoEnumFlags
|
import org.jetbrains.kotlin.serialization.deserialization.ProtoEnumFlags
|
||||||
import org.jetbrains.kotlin.serialization.deserialization.builtins.BuiltInSerializerProtocol
|
import org.jetbrains.kotlin.serialization.deserialization.builtins.BuiltInSerializerProtocol
|
||||||
@@ -233,19 +232,11 @@ class FirMemberDeserializer(private val c: FirDeserializationContext) {
|
|||||||
c.containerSource, proto, local.nameResolver, local.typeTable, setterFlags
|
c.containerSource, proto, local.nameResolver, local.typeTable, setterFlags
|
||||||
)
|
)
|
||||||
this.symbol = FirPropertyAccessorSymbol()
|
this.symbol = FirPropertyAccessorSymbol()
|
||||||
valueParameters += proto.setterValueParameter.let {
|
valueParameters += local.memberDeserializer.valueParameters(
|
||||||
val parameterFlags = if (it.hasFlags()) it.flags else 0
|
listOf(proto.setterValueParameter),
|
||||||
buildValueParameter {
|
proto,
|
||||||
session = c.session
|
AbstractAnnotationDeserializer.CallableKind.PROPERTY_SETTER
|
||||||
origin = FirDeclarationOrigin.Library
|
)
|
||||||
this.returnTypeRef = returnTypeRef
|
|
||||||
name = if (it.hasName()) c.nameResolver.getName(it.name) else Name.special("<default-setter-parameter>")
|
|
||||||
this.symbol = FirVariableSymbol(CallableId(FqName.ROOT, name))
|
|
||||||
isCrossinline = Flags.IS_CROSSINLINE.get(parameterFlags)
|
|
||||||
isNoinline = Flags.IS_NOINLINE.get(parameterFlags)
|
|
||||||
isVararg = it.hasVarargElementType()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
FirDefaultPropertySetter(null, c.session, FirDeclarationOrigin.Library, returnTypeRef, visibility)
|
FirDefaultPropertySetter(null, c.session, FirDeclarationOrigin.Library, returnTypeRef, visibility)
|
||||||
|
|||||||
Reference in New Issue
Block a user