FirProperty: return back 'isReferredViaField' attribute

This commit is contained in:
Mikhail Glukhikh
2020-08-25 17:48:57 +03:00
parent 3e9ac75cfc
commit c6417696cf
4 changed files with 6 additions and 10 deletions
@@ -679,7 +679,7 @@ class Fir2IrDeclarationStorage(
if (initializer != null ||
getter is FirDefaultPropertyGetter ||
property.isVar && setter is FirDefaultPropertySetter ||
property.backingFieldSymbol.isReferenced
property.isReferredViaField == true
) {
backingField = createBackingField(
property, IrDeclarationOrigin.PROPERTY_BACKING_FIELD, descriptor,
@@ -6,10 +6,7 @@
package org.jetbrains.kotlin.fir
import org.jetbrains.kotlin.descriptors.ClassKind
import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
import org.jetbrains.kotlin.fir.declarations.FirTypeParameter
import org.jetbrains.kotlin.fir.declarations.isInner
import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.diagnostics.ConeDiagnostic
import org.jetbrains.kotlin.fir.expressions.*
import org.jetbrains.kotlin.fir.expressions.builder.buildExpressionStub
@@ -515,7 +512,7 @@ class FirCallResolver(
val candidate = candidates.single()
val coneSymbol = candidate.symbol
if (coneSymbol is FirBackingFieldSymbol) {
coneSymbol.isReferenced = true
coneSymbol.fir.isReferredViaField = true
return buildBackingFieldReference {
this.source = source
resolvedSymbol = coneSymbol
@@ -116,6 +116,8 @@ fun FirRegularClass.addDeclaration(declaration: FirDeclaration) {
private object IsFromVarargKey : FirDeclarationDataKey()
var FirProperty.isFromVararg: Boolean? by FirDeclarationDataRegistry.data(IsFromVarargKey)
private object IsReferredViaField : FirDeclarationDataKey()
var FirProperty.isReferredViaField: Boolean? by FirDeclarationDataRegistry.data(IsReferredViaField)
inline val FirProperty.hasJvmFieldAnnotation: Boolean
get() = annotations.any {
@@ -32,10 +32,7 @@ open class FirPropertySymbol(
constructor(name: Name) : this(CallableId(name))
}
class FirBackingFieldSymbol(
callableId: CallableId,
var isReferenced: Boolean = false
) : FirVariableSymbol<FirProperty>(callableId)
class FirBackingFieldSymbol(callableId: CallableId) : FirVariableSymbol<FirProperty>(callableId)
class FirDelegateFieldSymbol<D : FirVariable<D>>(callableId: CallableId) : FirVariableSymbol<D>(callableId) {
val delegate: FirExpression