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 {
|
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
|
||||||
|
|||||||
+5
-2
@@ -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() }
|
||||||
|
|||||||
+1
-1
@@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+2
-2
@@ -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)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user