[FIR] Remove generic parameter from FirDeclaration
This commit is contained in:
+2
-2
@@ -5,7 +5,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.fir.serialization
|
||||
|
||||
import org.jetbrains.kotlin.contracts.description.*
|
||||
import org.jetbrains.kotlin.contracts.description.EventOccurrencesRange
|
||||
import org.jetbrains.kotlin.fir.contracts.FirContractDescription
|
||||
import org.jetbrains.kotlin.fir.contracts.description.*
|
||||
import org.jetbrains.kotlin.fir.contracts.effects
|
||||
@@ -17,7 +17,7 @@ import org.jetbrains.kotlin.metadata.deserialization.Flags
|
||||
|
||||
class FirContractSerializer {
|
||||
fun serializeContractOfFunctionIfAny(
|
||||
function: FirFunction<*>,
|
||||
function: FirFunction,
|
||||
proto: ProtoBuf.Function.Builder,
|
||||
parentSerializer: FirElementSerializer
|
||||
) {
|
||||
|
||||
+3
-3
@@ -15,13 +15,13 @@ interface FirElementAwareStringTable : StringTable {
|
||||
fun getQualifiedClassNameIndex(classId: ClassId): Int =
|
||||
getQualifiedClassNameIndex(classId.asString(), classId.isLocal)
|
||||
|
||||
fun getFqNameIndex(classLikeDeclaration: FirClassLikeDeclaration<*>): Int {
|
||||
fun getFqNameIndex(classLikeDeclaration: FirClassLikeDeclaration): Int {
|
||||
val classId = classLikeDeclaration.symbol.classId.takeIf { !it.isLocal }
|
||||
?: getLocalClassIdReplacement(classLikeDeclaration as FirClass<*>)
|
||||
?: getLocalClassIdReplacement(classLikeDeclaration as FirClass)
|
||||
?: throw IllegalStateException("Cannot get FQ name of local class: ${classLikeDeclaration.render()}")
|
||||
|
||||
return getQualifiedClassNameIndex(classId)
|
||||
}
|
||||
|
||||
fun getLocalClassIdReplacement(firClass: FirClass<*>): ClassId? = null
|
||||
fun getLocalClassIdReplacement(firClass: FirClass): ClassId? = null
|
||||
}
|
||||
|
||||
+14
-14
@@ -60,7 +60,7 @@ import org.jetbrains.kotlin.types.TypeApproximatorConfiguration
|
||||
class FirElementSerializer private constructor(
|
||||
private val session: FirSession,
|
||||
private val scopeSession: ScopeSession,
|
||||
private val containingDeclaration: FirDeclaration<*>?,
|
||||
private val containingDeclaration: FirDeclaration?,
|
||||
private val typeParameters: Interner<FirTypeParameter>,
|
||||
private val extension: FirSerializerExtension,
|
||||
private val typeTable: MutableTypeTable,
|
||||
@@ -96,7 +96,7 @@ class FirElementSerializer private constructor(
|
||||
return builder
|
||||
}
|
||||
|
||||
fun classProto(klass: FirClass<*>): ProtoBuf.Class.Builder {
|
||||
fun classProto(klass: FirClass): ProtoBuf.Class.Builder {
|
||||
val builder = ProtoBuf.Class.newBuilder()
|
||||
|
||||
val regularClass = klass as? FirRegularClass
|
||||
@@ -156,7 +156,7 @@ class FirElementSerializer private constructor(
|
||||
}
|
||||
}
|
||||
|
||||
val nestedClassifiers = klass.declarations.filterIsInstance<FirClassLikeDeclaration<*>>()
|
||||
val nestedClassifiers = klass.declarations.filterIsInstance<FirClassLikeDeclaration>()
|
||||
for (nestedClassifier in nestedClassifiers) {
|
||||
if (nestedClassifier is FirTypeAlias) {
|
||||
typeAliasProto(nestedClassifier)?.let { builder.addTypeAlias(it) }
|
||||
@@ -218,13 +218,13 @@ class FirElementSerializer private constructor(
|
||||
}
|
||||
|
||||
@OptIn(ExperimentalStdlibApi::class)
|
||||
private fun FirClass<*>.declarations(): List<FirCallableMemberDeclaration<*>> = buildList {
|
||||
private fun FirClass.declarations(): List<FirCallableMemberDeclaration> = buildList {
|
||||
val memberScope =
|
||||
defaultType().scope(session, scopeSession, FakeOverrideTypeCalculator.DoNothing)
|
||||
?: error("Null scope for $this")
|
||||
|
||||
fun addDeclarationIfNeeded(symbol: FirCallableSymbol<*>) {
|
||||
val declaration = symbol.fir as? FirCallableMemberDeclaration<*> ?: return
|
||||
val declaration = symbol.fir as? FirCallableMemberDeclaration ?: return
|
||||
if (declaration.isIntersectionOverride) {
|
||||
// This part is a kind of hack for case like
|
||||
//
|
||||
@@ -259,7 +259,7 @@ class FirElementSerializer private constructor(
|
||||
memberScope.processAllProperties(::addDeclarationIfNeeded)
|
||||
|
||||
for (declaration in declarations) {
|
||||
if (declaration is FirCallableMemberDeclaration<*> && declaration.isStatic) {
|
||||
if (declaration is FirCallableMemberDeclaration && declaration.isStatic) {
|
||||
add(declaration)
|
||||
}
|
||||
}
|
||||
@@ -375,7 +375,7 @@ class FirElementSerializer private constructor(
|
||||
return builder
|
||||
}
|
||||
|
||||
fun functionProto(function: FirFunction<*>): ProtoBuf.Function.Builder? {
|
||||
fun functionProto(function: FirFunction): ProtoBuf.Function.Builder? {
|
||||
if (!extension.shouldSerializeFunction(function)) return null
|
||||
|
||||
val builder = ProtoBuf.Function.newBuilder()
|
||||
@@ -822,7 +822,7 @@ class FirElementSerializer private constructor(
|
||||
)
|
||||
}
|
||||
|
||||
private fun createChildSerializer(declaration: FirDeclaration<*>): FirElementSerializer =
|
||||
private fun createChildSerializer(declaration: FirDeclaration): FirElementSerializer =
|
||||
FirElementSerializer(
|
||||
session, scopeSession, declaration, Interner(typeParameters), extension,
|
||||
typeTable, versionRequirementTable, serializeTypeTableToFunction = false,
|
||||
@@ -834,18 +834,18 @@ class FirElementSerializer private constructor(
|
||||
|
||||
private fun useTypeTable(): Boolean = extension.shouldUseTypeTable()
|
||||
|
||||
private fun FirDeclaration<*>.hasInlineClassTypesInSignature(): Boolean {
|
||||
private fun FirDeclaration.hasInlineClassTypesInSignature(): Boolean {
|
||||
// TODO
|
||||
return false
|
||||
}
|
||||
|
||||
private fun FirCallableDeclaration<*>.isSuspendOrHasSuspendTypesInSignature(): Boolean {
|
||||
private fun FirCallableDeclaration.isSuspendOrHasSuspendTypesInSignature(): Boolean {
|
||||
// TODO (types in signature)
|
||||
return this is FirCallableMemberDeclaration<*> && this.isSuspend
|
||||
return this is FirCallableMemberDeclaration && this.isSuspend
|
||||
}
|
||||
|
||||
private fun writeVersionRequirementForInlineClasses(
|
||||
klass: FirClass<*>,
|
||||
klass: FirClass,
|
||||
builder: ProtoBuf.Class.Builder,
|
||||
versionRequirementTable: MutableVersionRequirementTable
|
||||
) {
|
||||
@@ -937,7 +937,7 @@ class FirElementSerializer private constructor(
|
||||
return declaration.visibility.normalize()
|
||||
}
|
||||
|
||||
private fun getClassifierId(declaration: FirClassLikeDeclaration<*>): Int =
|
||||
private fun getClassifierId(declaration: FirClassLikeDeclaration): Int =
|
||||
stringTable.getFqNameIndex(declaration)
|
||||
|
||||
private fun getClassifierId(classId: ClassId): Int =
|
||||
@@ -982,7 +982,7 @@ class FirElementSerializer private constructor(
|
||||
fun create(
|
||||
session: FirSession,
|
||||
scopeSession: ScopeSession,
|
||||
klass: FirClass<*>,
|
||||
klass: FirClass,
|
||||
extension: FirSerializerExtension,
|
||||
parentSerializer: FirElementSerializer?,
|
||||
typeApproximator: AbstractTypeApproximator,
|
||||
|
||||
+5
-5
@@ -28,14 +28,14 @@ abstract class FirSerializerExtension {
|
||||
open fun shouldSerializeTypeAlias(typeAlias: FirTypeAlias): Boolean = true
|
||||
open fun shouldUseTypeTable(): Boolean = false
|
||||
open fun shouldUseNormalizedVisibility(): Boolean = false
|
||||
open fun shouldSerializeFunction(function: FirFunction<*>): Boolean = false
|
||||
open fun shouldSerializeFunction(function: FirFunction): Boolean = false
|
||||
open fun shouldSerializeProperty(property: FirProperty): Boolean = false
|
||||
|
||||
open fun serializePackage(packageFqName: FqName, proto: ProtoBuf.Package.Builder) {
|
||||
}
|
||||
|
||||
open fun serializeClass(
|
||||
klass: FirClass<*>,
|
||||
klass: FirClass,
|
||||
proto: ProtoBuf.Class.Builder,
|
||||
versionRequirementTable: MutableVersionRequirementTable,
|
||||
childSerializer: FirElementSerializer
|
||||
@@ -50,7 +50,7 @@ abstract class FirSerializerExtension {
|
||||
}
|
||||
|
||||
open fun serializeFunction(
|
||||
function: FirFunction<*>,
|
||||
function: FirFunction,
|
||||
proto: ProtoBuf.Function.Builder,
|
||||
versionRequirementTable: MutableVersionRequirementTable?,
|
||||
childSerializer: FirElementSerializer
|
||||
@@ -91,7 +91,7 @@ abstract class FirSerializerExtension {
|
||||
get() = null
|
||||
|
||||
interface ClassMembersProducer {
|
||||
fun getCallableMembers(klass: FirClass<*>): Collection<FirCallableMemberDeclaration<*>>
|
||||
fun getCallableMembers(klass: FirClass): Collection<FirCallableMemberDeclaration>
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user