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 || if (initializer != null ||
getter is FirDefaultPropertyGetter || getter is FirDefaultPropertyGetter ||
property.isVar && setter is FirDefaultPropertySetter || property.isVar && setter is FirDefaultPropertySetter ||
property.backingFieldSymbol.isReferenced property.isReferredViaField == true
) { ) {
backingField = createBackingField( backingField = createBackingField(
property, IrDeclarationOrigin.PROPERTY_BACKING_FIELD, descriptor, property, IrDeclarationOrigin.PROPERTY_BACKING_FIELD, descriptor,
@@ -6,10 +6,7 @@
package org.jetbrains.kotlin.fir package org.jetbrains.kotlin.fir
import org.jetbrains.kotlin.descriptors.ClassKind import org.jetbrains.kotlin.descriptors.ClassKind
import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration import org.jetbrains.kotlin.fir.declarations.*
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.diagnostics.ConeDiagnostic import org.jetbrains.kotlin.fir.diagnostics.ConeDiagnostic
import org.jetbrains.kotlin.fir.expressions.* import org.jetbrains.kotlin.fir.expressions.*
import org.jetbrains.kotlin.fir.expressions.builder.buildExpressionStub import org.jetbrains.kotlin.fir.expressions.builder.buildExpressionStub
@@ -515,7 +512,7 @@ class FirCallResolver(
val candidate = candidates.single() val candidate = candidates.single()
val coneSymbol = candidate.symbol val coneSymbol = candidate.symbol
if (coneSymbol is FirBackingFieldSymbol) { if (coneSymbol is FirBackingFieldSymbol) {
coneSymbol.isReferenced = true coneSymbol.fir.isReferredViaField = true
return buildBackingFieldReference { return buildBackingFieldReference {
this.source = source this.source = source
resolvedSymbol = coneSymbol resolvedSymbol = coneSymbol
@@ -116,6 +116,8 @@ fun FirRegularClass.addDeclaration(declaration: FirDeclaration) {
private object IsFromVarargKey : FirDeclarationDataKey() private object IsFromVarargKey : FirDeclarationDataKey()
var FirProperty.isFromVararg: Boolean? by FirDeclarationDataRegistry.data(IsFromVarargKey) 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 inline val FirProperty.hasJvmFieldAnnotation: Boolean
get() = annotations.any { get() = annotations.any {
@@ -32,10 +32,7 @@ open class FirPropertySymbol(
constructor(name: Name) : this(CallableId(name)) constructor(name: Name) : this(CallableId(name))
} }
class FirBackingFieldSymbol( class FirBackingFieldSymbol(callableId: CallableId) : FirVariableSymbol<FirProperty>(callableId)
callableId: CallableId,
var isReferenced: Boolean = false
) : FirVariableSymbol<FirProperty>(callableId)
class FirDelegateFieldSymbol<D : FirVariable<D>>(callableId: CallableId) : FirVariableSymbol<D>(callableId) { class FirDelegateFieldSymbol<D : FirVariable<D>>(callableId: CallableId) : FirVariableSymbol<D>(callableId) {
val delegate: FirExpression val delegate: FirExpression