[Serialization] Implement serialization checker for K2 version of plugin
^KT-53178 Fixed
This commit is contained in:
committed by
teamcity
parent
e048ffcf6d
commit
671083c701
@@ -5,6 +5,8 @@
|
||||
|
||||
package org.jetbrains.kotlin.fir.caches
|
||||
|
||||
import kotlin.reflect.KProperty
|
||||
|
||||
abstract class FirCache<in K : Any, out V, in CONTEXT> {
|
||||
abstract fun getValue(key: K, context: CONTEXT): V
|
||||
abstract fun getValueIfComputed(key: K): V?
|
||||
@@ -24,6 +26,10 @@ class FirLazyValue<out V, in CONTEXT>(private val cache: FirCache<Unit, V, CONTE
|
||||
}
|
||||
}
|
||||
|
||||
operator fun <V> FirLazyValue<V, Nothing?>.getValue(thisRef: Any?, property: KProperty<*>): V {
|
||||
return getValue(context = null)
|
||||
}
|
||||
|
||||
@Suppress("NOTHING_TO_INLINE")
|
||||
inline fun <V> FirLazyValue<V, Nothing?>.getValue(): V {
|
||||
return getValue(null)
|
||||
|
||||
+25
@@ -10,7 +10,12 @@ import org.jetbrains.kotlin.descriptors.SourceElement
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.declarations.impl.FirDefaultPropertyBackingField
|
||||
import org.jetbrains.kotlin.fir.declarations.impl.FirDefaultPropertyGetter
|
||||
import org.jetbrains.kotlin.fir.expressions.FirPropertyAccessExpression
|
||||
import org.jetbrains.kotlin.fir.references.impl.FirPropertyFromParameterResolvedNamedReference
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirValueParameterSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase
|
||||
import org.jetbrains.kotlin.fir.types.coneType
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
|
||||
@@ -27,6 +32,12 @@ var FirProperty.fromPrimaryConstructor: Boolean? by FirDeclarationDataRegistry.d
|
||||
var FirClassLikeDeclaration.sourceElement: SourceElement? by FirDeclarationDataRegistry.data(SourceElementKey)
|
||||
var FirRegularClass.moduleName: String? by FirDeclarationDataRegistry.data(ModuleNameKey)
|
||||
|
||||
val FirClassLikeSymbol<*>.sourceElement: SourceElement?
|
||||
get() = fir.sourceElement
|
||||
|
||||
val FirPropertySymbol.fromPrimaryConstructor: Boolean
|
||||
get() = fir.fromPrimaryConstructor ?: false
|
||||
|
||||
/**
|
||||
* Constraint without corresponding type argument
|
||||
*/
|
||||
@@ -93,6 +104,12 @@ val FirProperty.hasBackingField: Boolean
|
||||
}
|
||||
}
|
||||
|
||||
val FirPropertySymbol.hasBackingField: Boolean
|
||||
get() {
|
||||
lazyResolveToPhase(FirResolvePhase.BODY_RESOLVE)
|
||||
return fir.hasBackingField
|
||||
}
|
||||
|
||||
fun FirDeclaration.getDanglingTypeConstraintsOrEmpty(): List<DanglingTypeConstraint> {
|
||||
return when (this) {
|
||||
is FirRegularClass -> danglingTypeConstraints
|
||||
@@ -101,3 +118,11 @@ fun FirDeclaration.getDanglingTypeConstraintsOrEmpty(): List<DanglingTypeConstra
|
||||
else -> null
|
||||
} ?: emptyList()
|
||||
}
|
||||
|
||||
val FirPropertySymbol.correspondingValueParameterFromPrimaryConstructor: FirValueParameterSymbol?
|
||||
get() {
|
||||
if (!fromPrimaryConstructor) return null
|
||||
val initializer = resolvedInitializer as? FirPropertyAccessExpression ?: return null
|
||||
val reference = initializer.calleeReference as? FirPropertyFromParameterResolvedNamedReference ?: return null
|
||||
return reference.resolvedSymbol as? FirValueParameterSymbol
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.fir.symbols.impl
|
||||
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.diagnostics.ConeDiagnostic
|
||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
|
||||
import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase
|
||||
import org.jetbrains.kotlin.name.CallableId
|
||||
@@ -39,6 +40,12 @@ open class FirPropertySymbol(
|
||||
val hasInitializer: Boolean
|
||||
get() = fir.initializer != null
|
||||
|
||||
val resolvedInitializer: FirExpression?
|
||||
get() {
|
||||
lazyResolveToPhase(FirResolvePhase.BODY_RESOLVE)
|
||||
return fir.initializer
|
||||
}
|
||||
|
||||
val hasDelegate: Boolean
|
||||
get() = fir.delegate != null
|
||||
|
||||
|
||||
Reference in New Issue
Block a user