AA FIR: constant evaluation for Java field

This commit is contained in:
Jinseong Jeon
2022-08-15 11:46:12 -07:00
committed by Ilya Kirillov
parent 0869dd9c92
commit 25f7554a31
13 changed files with 186 additions and 11 deletions
@@ -9,10 +9,7 @@ import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccess
import org.jetbrains.kotlin.fir.resolvedSymbol
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirAnonymousObjectSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol
import org.jetbrains.kotlin.fir.symbols.impl.*
import org.jetbrains.kotlin.fir.types.ConeClassLikeType
import org.jetbrains.kotlin.fir.types.coneTypeSafe
import org.jetbrains.kotlin.name.ClassId
@@ -41,10 +38,11 @@ val FirClass.anonymousInitializers: List<FirAnonymousInitializer>
val FirClass.delegateFields: List<FirField>
get() = declarations.filterIsInstance<FirField>().filter { it.isSynthetic }
val FirQualifiedAccess.referredVariableSymbol: FirVariableSymbol<*>?
get() = calleeReference.resolvedSymbol as? FirVariableSymbol<*>
val FirQualifiedAccess.referredPropertySymbol: FirPropertySymbol?
get() {
return calleeReference.resolvedSymbol as? FirPropertySymbol
}
get() = referredVariableSymbol as? FirPropertySymbol
inline val FirDeclaration.isJava: Boolean
get() = origin is FirDeclarationOrigin.Java
@@ -76,7 +76,16 @@ class FirBackingFieldSymbol(callableId: CallableId) : FirVariableSymbol<FirBacki
class FirDelegateFieldSymbol(callableId: CallableId) : FirVariableSymbol<FirProperty>(callableId)
class FirFieldSymbol(callableId: CallableId) : FirVariableSymbol<FirField>(callableId)
class FirFieldSymbol(callableId: CallableId) : FirVariableSymbol<FirField>(callableId) {
val hasInitializer: Boolean
get() = fir.initializer != null
val isVal: Boolean
get() = fir.isVal
val isVar: Boolean
get() = fir.isVar
}
class FirEnumEntrySymbol(callableId: CallableId) : FirVariableSymbol<FirEnumEntry>(callableId)