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