Introduce FirProperty.hasBackingField & use it in FIR2IR

This commit is contained in:
Mikhail Glukhikh
2020-08-25 17:58:25 +03:00
parent c6417696cf
commit 962059a878
2 changed files with 27 additions and 21 deletions
@@ -9,6 +9,8 @@ import org.jetbrains.kotlin.descriptors.ClassKind
import org.jetbrains.kotlin.fir.Visibilities
import org.jetbrains.kotlin.fir.declarations.builder.FirRegularClassBuilder
import org.jetbrains.kotlin.fir.declarations.builder.FirTypeParameterBuilder
import org.jetbrains.kotlin.fir.declarations.impl.FirDefaultPropertyGetter
import org.jetbrains.kotlin.fir.declarations.impl.FirDefaultPropertySetter
import org.jetbrains.kotlin.fir.declarations.impl.FirFileImpl
import org.jetbrains.kotlin.fir.declarations.impl.FirRegularClassImpl
import org.jetbrains.kotlin.fir.symbols.impl.FirAnonymousObjectSymbol
@@ -119,6 +121,13 @@ var FirProperty.isFromVararg: Boolean? by FirDeclarationDataRegistry.data(IsFrom
private object IsReferredViaField : FirDeclarationDataKey()
var FirProperty.isReferredViaField: Boolean? by FirDeclarationDataRegistry.data(IsReferredViaField)
val FirProperty.hasBackingField: Boolean
get() = initializer != null ||
getter is FirDefaultPropertyGetter ||
isVar && setter is FirDefaultPropertySetter ||
delegate != null ||
isReferredViaField == true
inline val FirProperty.hasJvmFieldAnnotation: Boolean
get() = annotations.any {
val classId = it.annotationTypeRef.coneTypeSafe<ConeClassLikeType>()?.classId