Raw FIR: set val setter to null instead of default one

This commit is contained in:
Mikhail Glukhikh
2019-05-20 16:39:44 +03:00
parent 0aaf8c7689
commit 6589fbbfbb
8 changed files with 16 additions and 13 deletions
@@ -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
@@ -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() }
@@ -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)
}
}
@@ -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)