FIR: Set correct modality to default accessors on deserialization
fixes some tests with new IrBuiltIns
This commit is contained in:
committed by
TeamCityServer
parent
5b677c068f
commit
3b20ec46ef
+13
-19
@@ -249,10 +249,12 @@ class FirMemberDeserializer(private val c: FirDeserializationContext) {
|
|||||||
emptyList()
|
emptyList()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val propertyModality = ProtoEnumFlags.modality(Flags.MODALITY.get(flags))
|
||||||
|
|
||||||
val getter = if (hasGetter) {
|
val getter = if (hasGetter) {
|
||||||
val getterFlags = if (proto.hasGetterFlags()) proto.getterFlags else defaultAccessorFlags
|
val getterFlags = if (proto.hasGetterFlags()) proto.getterFlags else defaultAccessorFlags
|
||||||
val visibility = ProtoEnumFlags.visibility(Flags.VISIBILITY.get(getterFlags))
|
val visibility = ProtoEnumFlags.visibility(Flags.VISIBILITY.get(getterFlags))
|
||||||
val modality = ProtoEnumFlags.modality(Flags.MODALITY.get(getterFlags))
|
val accessorModality = ProtoEnumFlags.modality(Flags.MODALITY.get(getterFlags))
|
||||||
val effectiveVisibility = visibility.toEffectiveVisibility(classSymbol)
|
val effectiveVisibility = visibility.toEffectiveVisibility(classSymbol)
|
||||||
if (Flags.IS_NOT_DEFAULT.get(getterFlags)) {
|
if (Flags.IS_NOT_DEFAULT.get(getterFlags)) {
|
||||||
buildPropertyAccessor {
|
buildPropertyAccessor {
|
||||||
@@ -261,11 +263,7 @@ class FirMemberDeserializer(private val c: FirDeserializationContext) {
|
|||||||
this.returnTypeRef = returnTypeRef
|
this.returnTypeRef = returnTypeRef
|
||||||
resolvePhase = FirResolvePhase.ANALYZED_DEPENDENCIES
|
resolvePhase = FirResolvePhase.ANALYZED_DEPENDENCIES
|
||||||
isGetter = true
|
isGetter = true
|
||||||
status = FirResolvedDeclarationStatusImpl(
|
status = FirResolvedDeclarationStatusImpl(visibility, accessorModality, effectiveVisibility).apply {
|
||||||
visibility,
|
|
||||||
modality,
|
|
||||||
effectiveVisibility
|
|
||||||
).apply {
|
|
||||||
isInline = Flags.IS_INLINE_ACCESSOR.get(getterFlags)
|
isInline = Flags.IS_INLINE_ACCESSOR.get(getterFlags)
|
||||||
isExternal = Flags.IS_EXTERNAL_ACCESSOR.get(getterFlags)
|
isExternal = Flags.IS_EXTERNAL_ACCESSOR.get(getterFlags)
|
||||||
}
|
}
|
||||||
@@ -275,7 +273,9 @@ class FirMemberDeserializer(private val c: FirDeserializationContext) {
|
|||||||
versionRequirementsTable = c.versionRequirementTable
|
versionRequirementsTable = c.versionRequirementTable
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
FirDefaultPropertyGetter(null, c.moduleData, FirDeclarationOrigin.Library, returnTypeRef, visibility, effectiveVisibility)
|
FirDefaultPropertyGetter(
|
||||||
|
null, c.moduleData, FirDeclarationOrigin.Library, returnTypeRef, visibility, propertyModality, effectiveVisibility
|
||||||
|
)
|
||||||
}.apply {
|
}.apply {
|
||||||
(annotations as MutableList<FirAnnotationCall>) +=
|
(annotations as MutableList<FirAnnotationCall>) +=
|
||||||
c.annotationDeserializer.loadPropertyGetterAnnotations(
|
c.annotationDeserializer.loadPropertyGetterAnnotations(
|
||||||
@@ -289,7 +289,7 @@ class FirMemberDeserializer(private val c: FirDeserializationContext) {
|
|||||||
val setter = if (Flags.HAS_SETTER.get(flags)) {
|
val setter = if (Flags.HAS_SETTER.get(flags)) {
|
||||||
val setterFlags = if (proto.hasSetterFlags()) proto.setterFlags else defaultAccessorFlags
|
val setterFlags = if (proto.hasSetterFlags()) proto.setterFlags else defaultAccessorFlags
|
||||||
val visibility = ProtoEnumFlags.visibility(Flags.VISIBILITY.get(setterFlags))
|
val visibility = ProtoEnumFlags.visibility(Flags.VISIBILITY.get(setterFlags))
|
||||||
val modality = ProtoEnumFlags.modality(Flags.MODALITY.get(setterFlags))
|
val accessorModality = ProtoEnumFlags.modality(Flags.MODALITY.get(setterFlags))
|
||||||
val effectiveVisibility = visibility.toEffectiveVisibility(classSymbol)
|
val effectiveVisibility = visibility.toEffectiveVisibility(classSymbol)
|
||||||
if (Flags.IS_NOT_DEFAULT.get(setterFlags)) {
|
if (Flags.IS_NOT_DEFAULT.get(setterFlags)) {
|
||||||
buildPropertyAccessor {
|
buildPropertyAccessor {
|
||||||
@@ -298,11 +298,7 @@ class FirMemberDeserializer(private val c: FirDeserializationContext) {
|
|||||||
this.returnTypeRef = FirImplicitUnitTypeRef(source)
|
this.returnTypeRef = FirImplicitUnitTypeRef(source)
|
||||||
resolvePhase = FirResolvePhase.ANALYZED_DEPENDENCIES
|
resolvePhase = FirResolvePhase.ANALYZED_DEPENDENCIES
|
||||||
isGetter = false
|
isGetter = false
|
||||||
status = FirResolvedDeclarationStatusImpl(
|
status = FirResolvedDeclarationStatusImpl(visibility, accessorModality, effectiveVisibility).apply {
|
||||||
visibility,
|
|
||||||
modality,
|
|
||||||
effectiveVisibility
|
|
||||||
).apply {
|
|
||||||
isInline = Flags.IS_INLINE_ACCESSOR.get(setterFlags)
|
isInline = Flags.IS_INLINE_ACCESSOR.get(setterFlags)
|
||||||
isExternal = Flags.IS_EXTERNAL_ACCESSOR.get(setterFlags)
|
isExternal = Flags.IS_EXTERNAL_ACCESSOR.get(setterFlags)
|
||||||
}
|
}
|
||||||
@@ -318,7 +314,9 @@ class FirMemberDeserializer(private val c: FirDeserializationContext) {
|
|||||||
versionRequirementsTable = c.versionRequirementTable
|
versionRequirementsTable = c.versionRequirementTable
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
FirDefaultPropertySetter(null, c.moduleData, FirDeclarationOrigin.Library, returnTypeRef, visibility, effectiveVisibility)
|
FirDefaultPropertySetter(
|
||||||
|
null, c.moduleData, FirDeclarationOrigin.Library, returnTypeRef, visibility, propertyModality, effectiveVisibility
|
||||||
|
)
|
||||||
}.apply {
|
}.apply {
|
||||||
(annotations as MutableList<FirAnnotationCall>) +=
|
(annotations as MutableList<FirAnnotationCall>) +=
|
||||||
c.annotationDeserializer.loadPropertySetterAnnotations(
|
c.annotationDeserializer.loadPropertySetterAnnotations(
|
||||||
@@ -343,11 +341,7 @@ class FirMemberDeserializer(private val c: FirDeserializationContext) {
|
|||||||
dispatchReceiverType = c.dispatchReceiver
|
dispatchReceiverType = c.dispatchReceiver
|
||||||
isLocal = false
|
isLocal = false
|
||||||
val visibility = ProtoEnumFlags.visibility(Flags.VISIBILITY.get(flags))
|
val visibility = ProtoEnumFlags.visibility(Flags.VISIBILITY.get(flags))
|
||||||
status = FirResolvedDeclarationStatusImpl(
|
status = FirResolvedDeclarationStatusImpl(visibility, propertyModality, visibility.toEffectiveVisibility(classSymbol)).apply {
|
||||||
visibility,
|
|
||||||
ProtoEnumFlags.modality(Flags.MODALITY.get(flags)),
|
|
||||||
visibility.toEffectiveVisibility(classSymbol)
|
|
||||||
).apply {
|
|
||||||
isExpect = Flags.IS_EXPECT_PROPERTY.get(flags)
|
isExpect = Flags.IS_EXPECT_PROPERTY.get(flags)
|
||||||
isActual = false
|
isActual = false
|
||||||
isOverride = false
|
isOverride = false
|
||||||
|
|||||||
+12
-7
@@ -30,6 +30,7 @@ abstract class FirDefaultPropertyAccessor(
|
|||||||
valueParameters: MutableList<FirValueParameter>,
|
valueParameters: MutableList<FirValueParameter>,
|
||||||
isGetter: Boolean,
|
isGetter: Boolean,
|
||||||
visibility: Visibility,
|
visibility: Visibility,
|
||||||
|
modality: Modality = Modality.FINAL,
|
||||||
effectiveVisibility: EffectiveVisibility? = null,
|
effectiveVisibility: EffectiveVisibility? = null,
|
||||||
symbol: FirPropertyAccessorSymbol
|
symbol: FirPropertyAccessorSymbol
|
||||||
) : FirPropertyAccessorImpl(
|
) : FirPropertyAccessorImpl(
|
||||||
@@ -40,9 +41,9 @@ abstract class FirDefaultPropertyAccessor(
|
|||||||
FirDeclarationAttributes(),
|
FirDeclarationAttributes(),
|
||||||
propertyTypeRef,
|
propertyTypeRef,
|
||||||
status = if (effectiveVisibility == null)
|
status = if (effectiveVisibility == null)
|
||||||
FirDeclarationStatusImpl(visibility, Modality.FINAL)
|
FirDeclarationStatusImpl(visibility, modality)
|
||||||
else
|
else
|
||||||
FirResolvedDeclarationStatusImpl(visibility, Modality.FINAL, effectiveVisibility),
|
FirResolvedDeclarationStatusImpl(visibility, modality, effectiveVisibility),
|
||||||
deprecation = null,
|
deprecation = null,
|
||||||
containerSource = null,
|
containerSource = null,
|
||||||
dispatchReceiverType = null,
|
dispatchReceiverType = null,
|
||||||
@@ -72,9 +73,9 @@ abstract class FirDefaultPropertyAccessor(
|
|||||||
isGetter: Boolean
|
isGetter: Boolean
|
||||||
): FirDefaultPropertyAccessor {
|
): FirDefaultPropertyAccessor {
|
||||||
return if (isGetter) {
|
return if (isGetter) {
|
||||||
FirDefaultPropertyGetter(source, moduleData, origin, propertyTypeRef, visibility)
|
FirDefaultPropertyGetter(source, moduleData, origin, propertyTypeRef, visibility, Modality.FINAL)
|
||||||
} else {
|
} else {
|
||||||
FirDefaultPropertySetter(source, moduleData, origin, propertyTypeRef, visibility)
|
FirDefaultPropertySetter(source, moduleData, origin, propertyTypeRef, visibility, Modality.FINAL)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -86,6 +87,7 @@ class FirDefaultPropertyGetter(
|
|||||||
origin: FirDeclarationOrigin,
|
origin: FirDeclarationOrigin,
|
||||||
propertyTypeRef: FirTypeRef,
|
propertyTypeRef: FirTypeRef,
|
||||||
visibility: Visibility,
|
visibility: Visibility,
|
||||||
|
modality: Modality = Modality.FINAL,
|
||||||
effectiveVisibility: EffectiveVisibility? = null,
|
effectiveVisibility: EffectiveVisibility? = null,
|
||||||
symbol: FirPropertyAccessorSymbol = FirPropertyAccessorSymbol()
|
symbol: FirPropertyAccessorSymbol = FirPropertyAccessorSymbol()
|
||||||
) : FirDefaultPropertyAccessor(
|
) : FirDefaultPropertyAccessor(
|
||||||
@@ -96,6 +98,7 @@ class FirDefaultPropertyGetter(
|
|||||||
valueParameters = mutableListOf(),
|
valueParameters = mutableListOf(),
|
||||||
isGetter = true,
|
isGetter = true,
|
||||||
visibility = visibility,
|
visibility = visibility,
|
||||||
|
modality = modality,
|
||||||
effectiveVisibility = effectiveVisibility,
|
effectiveVisibility = effectiveVisibility,
|
||||||
symbol = symbol
|
symbol = symbol
|
||||||
)
|
)
|
||||||
@@ -106,6 +109,7 @@ class FirDefaultPropertySetter(
|
|||||||
origin: FirDeclarationOrigin,
|
origin: FirDeclarationOrigin,
|
||||||
propertyTypeRef: FirTypeRef,
|
propertyTypeRef: FirTypeRef,
|
||||||
visibility: Visibility,
|
visibility: Visibility,
|
||||||
|
modality: Modality = Modality.FINAL,
|
||||||
effectiveVisibility: EffectiveVisibility? = null,
|
effectiveVisibility: EffectiveVisibility? = null,
|
||||||
symbol: FirPropertyAccessorSymbol = FirPropertyAccessorSymbol()
|
symbol: FirPropertyAccessorSymbol = FirPropertyAccessorSymbol()
|
||||||
) : FirDefaultPropertyAccessor(
|
) : FirDefaultPropertyAccessor(
|
||||||
@@ -123,7 +127,8 @@ class FirDefaultPropertySetter(
|
|||||||
}
|
}
|
||||||
),
|
),
|
||||||
isGetter = false,
|
isGetter = false,
|
||||||
visibility,
|
visibility = visibility,
|
||||||
effectiveVisibility,
|
modality = modality,
|
||||||
symbol
|
effectiveVisibility = effectiveVisibility,
|
||||||
|
symbol = symbol
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user