Raw FIR: set val setter to null instead of default one
This commit is contained in:
@@ -849,7 +849,7 @@ class HtmlFirDump internal constructor(private var linkResolver: FirLinkResolver
|
||||
|
||||
withIdentLevel {
|
||||
generate(property.getter)
|
||||
generate(property.setter)
|
||||
property.setter?.let { generate(it) }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -497,7 +497,7 @@ internal class Fir2IrVisitor(
|
||||
}
|
||||
getter = property.getter.accept(this@Fir2IrVisitor, type) as IrSimpleFunction
|
||||
if (property.isVar) {
|
||||
setter = property.setter.accept(this@Fir2IrVisitor, type) as IrSimpleFunction
|
||||
setter = property.setter!!.accept(this@Fir2IrVisitor, type) as IrSimpleFunction
|
||||
}
|
||||
property.annotations.forEach {
|
||||
annotations += it.accept(this@Fir2IrVisitor, null) as IrConstructorCall
|
||||
|
||||
@@ -281,7 +281,7 @@ class RawFirBuilder(val session: FirSession, val stubMode: Boolean) {
|
||||
)
|
||||
},
|
||||
getter = FirDefaultPropertyGetter(session, this, type, visibility),
|
||||
setter = FirDefaultPropertySetter(session, this, type, visibility),
|
||||
setter = if (isMutable) FirDefaultPropertySetter(session, this, type, visibility) else null,
|
||||
delegate = null
|
||||
)
|
||||
extractAnnotationsTo(firProperty)
|
||||
@@ -796,7 +796,7 @@ class RawFirBuilder(val session: FirSession, val stubMode: Boolean) {
|
||||
isVar,
|
||||
initializer,
|
||||
property.getter.toFirPropertyAccessor(property, propertyType, isGetter = true),
|
||||
property.setter.toFirPropertyAccessor(property, propertyType, isGetter = false),
|
||||
if (isVar) property.setter.toFirPropertyAccessor(property, propertyType, isGetter = false) else null,
|
||||
if (property.hasDelegate()) {
|
||||
{ property.delegate?.expression }.toFirExpression("Should have delegate")
|
||||
} else null
|
||||
|
||||
+5
-2
@@ -159,6 +159,7 @@ class FirMemberDeserializer(private val c: FirDeserializationContext) {
|
||||
|
||||
val getterFlags = if (proto.hasGetterFlags()) proto.getterFlags else flags
|
||||
val setterFlags = if (proto.hasSetterFlags()) proto.setterFlags else flags
|
||||
val isVar = Flags.IS_VAR.get(flags)
|
||||
|
||||
return FirMemberPropertyImpl(
|
||||
c.session,
|
||||
@@ -174,10 +175,12 @@ class FirMemberDeserializer(private val c: FirDeserializationContext) {
|
||||
isLateInit = Flags.IS_LATEINIT.get(flags),
|
||||
receiverTypeRef = proto.receiverType(c.typeTable)?.toTypeRef(local),
|
||||
returnTypeRef = returnTypeRef,
|
||||
isVar = Flags.IS_VAR.get(flags),
|
||||
isVar = isVar,
|
||||
initializer = null,
|
||||
getter = FirDefaultPropertyGetter(c.session, null, returnTypeRef, ProtoEnumFlags.visibility(Flags.VISIBILITY.get(getterFlags))),
|
||||
setter = FirDefaultPropertySetter(c.session, null, returnTypeRef, ProtoEnumFlags.visibility(Flags.VISIBILITY.get(setterFlags))),
|
||||
setter = if (isVar) {
|
||||
FirDefaultPropertySetter(c.session, null, returnTypeRef, ProtoEnumFlags.visibility(Flags.VISIBILITY.get(setterFlags)))
|
||||
} else null,
|
||||
delegate = null
|
||||
).apply {
|
||||
typeParameters += local.typeDeserializer.ownTypeParameters.map { it.firUnsafe() }
|
||||
|
||||
+1
-1
@@ -43,7 +43,7 @@ class FirStatusResolveTransformer : FirAbstractTreeTransformer() {
|
||||
Modality.FINAL
|
||||
this is FirNamedFunction && body == null ->
|
||||
Modality.ABSTRACT
|
||||
this is FirProperty && initializer == null && getter.body == null && setter.body == null ->
|
||||
this is FirProperty && initializer == null && getter.body == null && setter?.body == null ->
|
||||
Modality.ABSTRACT
|
||||
else ->
|
||||
Modality.OPEN
|
||||
|
||||
@@ -350,8 +350,8 @@ class FirRenderer(builder: StringBuilder) : FirVisitorVoid() {
|
||||
println()
|
||||
}
|
||||
if (property.isVar) {
|
||||
property.setter.accept(this)
|
||||
if (property.setter.body == null) {
|
||||
property.setter?.accept(this)
|
||||
if (property.setter?.body == null) {
|
||||
println()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,7 +22,7 @@ interface FirProperty : @VisitedSupertype FirDeclaration, FirCallableMemberDecla
|
||||
// Should it be nullable or have some default?
|
||||
val getter: FirPropertyAccessor
|
||||
|
||||
val setter: FirPropertyAccessor
|
||||
val setter: FirPropertyAccessor?
|
||||
|
||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
||||
visitor.visitProperty(this, data)
|
||||
@@ -32,6 +32,6 @@ interface FirProperty : @VisitedSupertype FirDeclaration, FirCallableMemberDecla
|
||||
initializer?.accept(visitor, data)
|
||||
delegate?.accept(visitor, data)
|
||||
getter.accept(visitor, data)
|
||||
setter.accept(visitor, data)
|
||||
setter?.accept(visitor, data)
|
||||
}
|
||||
}
|
||||
+2
-2
@@ -36,7 +36,7 @@ class FirMemberPropertyImpl(
|
||||
override val isVar: Boolean,
|
||||
override var initializer: FirExpression?,
|
||||
override var getter: FirPropertyAccessor,
|
||||
override var setter: FirPropertyAccessor,
|
||||
override var setter: FirPropertyAccessor?,
|
||||
override var delegate: FirExpression?
|
||||
) : FirAbstractCallableMember(
|
||||
session, psi, name, visibility, modality, isExpect, isActual, isOverride, receiverTypeRef, returnTypeRef
|
||||
@@ -49,7 +49,7 @@ class FirMemberPropertyImpl(
|
||||
|
||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
||||
getter = getter.transformSingle(transformer, data)
|
||||
setter = setter.transformSingle(transformer, data)
|
||||
setter = setter?.transformSingle(transformer, data)
|
||||
initializer = initializer?.transformSingle(transformer, data)
|
||||
delegate = delegate?.transformSingle(transformer, data)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user