[FIR] Introduce utility for creating ConeClassLikeLookupTagImpl from ClassId

`classId.toLookupTag()` looks much cleaner than `ConeClassLikeLookupTagImpl(classId)`
This commit is contained in:
Dmitriy Novozhilov
2023-01-13 14:30:04 +02:00
committed by Space Team
parent 6c449e29cd
commit 125b773205
33 changed files with 95 additions and 118 deletions
@@ -27,7 +27,6 @@ import org.jetbrains.kotlin.fir.resolve.toSymbol
import org.jetbrains.kotlin.fir.symbols.ConeClassLikeLookupTag
import org.jetbrains.kotlin.fir.symbols.ConeClassifierLookupTag
import org.jetbrains.kotlin.fir.symbols.ConeTypeParameterLookupTag
import org.jetbrains.kotlin.fir.symbols.impl.ConeClassLikeLookupTagImpl
import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirTypeAliasSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirTypeParameterSymbol
@@ -49,8 +48,7 @@ import org.jetbrains.org.objectweb.asm.Type
class FirJvmTypeMapper(val session: FirSession) : FirSessionComponent {
companion object {
val NON_EXISTENT_ID = ClassId.topLevel(StandardNames.NON_EXISTENT_CLASS)
private val typeForNonExistentClass = ConeClassLikeLookupTagImpl(NON_EXISTENT_ID)
.constructClassType(emptyArray(), isNullable = false)
private val typeForNonExistentClass = NON_EXISTENT_ID.toLookupTag().constructClassType(emptyArray(), isNullable = false)
}
fun mapType(
@@ -20,10 +20,10 @@ import org.jetbrains.kotlin.fir.symbols.ConeClassLikeLookupTag
import org.jetbrains.kotlin.fir.symbols.Fir2IrClassSymbol
import org.jetbrains.kotlin.fir.symbols.Fir2IrEnumEntrySymbol
import org.jetbrains.kotlin.fir.symbols.Fir2IrTypeAliasSymbol
import org.jetbrains.kotlin.fir.symbols.impl.ConeClassLikeLookupTagImpl
import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirTypeParameterSymbol
import org.jetbrains.kotlin.fir.types.FirTypeRef
import org.jetbrains.kotlin.fir.types.toLookupTag
import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET
import org.jetbrains.kotlin.ir.declarations.*
import org.jetbrains.kotlin.ir.declarations.impl.IrExternalPackageFragmentImpl
@@ -70,14 +70,14 @@ class Fir2IrClassifierStorage(
fun preCacheBuiltinClasses() {
for ((classId, irBuiltinSymbol) in typeConverter.classIdToSymbolMap) {
val firClass = ConeClassLikeLookupTagImpl(classId).toSymbol(session)!!.fir as FirRegularClass
val firClass = classId.toLookupTag().toSymbol(session)!!.fir as FirRegularClass
val irClass = irBuiltinSymbol.owner
classCache[firClass] = irClass
processClassHeader(firClass, irClass)
declarationStorage.preCacheBuiltinClassMembers(firClass, irClass)
}
for ((primitiveClassId, primitiveArrayId) in StandardClassIds.primitiveArrayTypeByElementType) {
val firClass = ConeClassLikeLookupTagImpl(primitiveArrayId).toSymbol(session)!!.fir as FirRegularClass
val firClass = primitiveArrayId.toLookupTag().toSymbol(session)!!.fir as FirRegularClass
val irType = typeConverter.classIdToTypeMap[primitiveClassId]
val irClass = irBuiltIns.primitiveArrayForType[irType]!!.owner
classCache[firClass] = irClass
@@ -588,7 +588,7 @@ class Fir2IrClassifierStorage(
)
val parentId = classId.outerClassId
val parentClass = parentId?.let { getIrClassSymbolForNotFoundClass(ConeClassLikeLookupTagImpl(it)) }
val parentClass = parentId?.let { getIrClassSymbolForNotFoundClass(it.toLookupTag()) }
val irParent = parentClass?.owner ?: declarationStorage.getIrExternalPackageFragment(classId.packageFqName)
val symbol = Fir2IrClassSymbol(signature)
@@ -826,7 +826,7 @@ class Fir2IrDeclarationStorage(
createIrProperty(
field.toStubProperty(),
irParent,
fakeOverrideOwnerLookupTag = containingClassId?.let { ConeClassLikeLookupTagImpl(it) }
fakeOverrideOwnerLookupTag = containingClassId?.let { it.toLookupTag() }
)
}
}
@@ -854,7 +854,7 @@ class Fir2IrDeclarationStorage(
thisReceiverOwner: IrClass? = irParent as? IrClass,
predefinedOrigin: IrDeclarationOrigin? = null,
isLocal: Boolean = false,
fakeOverrideOwnerLookupTag: ConeClassLikeLookupTag? = (irParent as? IrClass)?.classId?.let { ConeClassLikeLookupTagImpl(it) },
fakeOverrideOwnerLookupTag: ConeClassLikeLookupTag? = (irParent as? IrClass)?.classId?.let { it.toLookupTag() },
forceTopLevelPrivate: Boolean = false,
): IrProperty = convertCatching(property) {
val origin =
@@ -1077,7 +1077,7 @@ class Fir2IrDeclarationStorage(
): IrField = convertCatching(field) {
val type = typeRef.toIrType()
val classId = (irParent as? IrClass)?.classId
val containingClassLookupTag = classId?.let { ConeClassLikeLookupTagImpl(it) }
val containingClassLookupTag = classId?.let { it.toLookupTag() }
val signature = signatureComposer.composeSignature(field, containingClassLookupTag)
return field.convertWithOffsets { startOffset, endOffset ->
if (signature != null) {