FIR: get rid of library type parameter symbol
This commit is contained in:
@@ -8,7 +8,6 @@ package org.jetbrains.kotlin.fir.backend
|
|||||||
import org.jetbrains.kotlin.fir.*
|
import org.jetbrains.kotlin.fir.*
|
||||||
import org.jetbrains.kotlin.fir.resolve.toSymbol
|
import org.jetbrains.kotlin.fir.resolve.toSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.ConeClassifierSymbol
|
import org.jetbrains.kotlin.fir.symbols.ConeClassifierSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.LibraryTypeParameterSymbol
|
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.*
|
import org.jetbrains.kotlin.fir.symbols.impl.*
|
||||||
import org.jetbrains.kotlin.fir.types.*
|
import org.jetbrains.kotlin.fir.types.*
|
||||||
import org.jetbrains.kotlin.ir.IrElement
|
import org.jetbrains.kotlin.ir.IrElement
|
||||||
@@ -82,9 +81,6 @@ fun ConeClassifierSymbol.toIrSymbol(session: FirSession, declarationStorage: Fir
|
|||||||
is FirTypeParameterSymbol -> {
|
is FirTypeParameterSymbol -> {
|
||||||
toTypeParameterSymbol(declarationStorage)
|
toTypeParameterSymbol(declarationStorage)
|
||||||
}
|
}
|
||||||
is LibraryTypeParameterSymbol -> {
|
|
||||||
toTypeParameterSymbol(declarationStorage)
|
|
||||||
}
|
|
||||||
is FirTypeAliasSymbol -> {
|
is FirTypeAliasSymbol -> {
|
||||||
val typeAlias = fir
|
val typeAlias = fir
|
||||||
val coneClassLikeType = (typeAlias.expandedTypeRef as FirResolvedTypeRef).type as ConeClassLikeType
|
val coneClassLikeType = (typeAlias.expandedTypeRef as FirResolvedTypeRef).type as ConeClassLikeType
|
||||||
@@ -123,10 +119,6 @@ fun FirTypeParameterSymbol.toTypeParameterSymbol(declarationStorage: Fir2IrDecla
|
|||||||
return declarationStorage.getIrTypeParameterSymbol(this)
|
return declarationStorage.getIrTypeParameterSymbol(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun LibraryTypeParameterSymbol.toTypeParameterSymbol(declarationStorage: Fir2IrDeclarationStorage): IrTypeParameterSymbol {
|
|
||||||
return declarationStorage.getIrTypeParameterSymbol(this)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun FirFunctionSymbol.toFunctionSymbol(declarationStorage: Fir2IrDeclarationStorage): IrFunctionSymbol {
|
fun FirFunctionSymbol.toFunctionSymbol(declarationStorage: Fir2IrDeclarationStorage): IrFunctionSymbol {
|
||||||
return declarationStorage.getIrFunctionSymbol(this)
|
return declarationStorage.getIrFunctionSymbol(this)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,7 +17,6 @@ import org.jetbrains.kotlin.fir.expressions.FirVariable
|
|||||||
import org.jetbrains.kotlin.fir.render
|
import org.jetbrains.kotlin.fir.render
|
||||||
import org.jetbrains.kotlin.fir.resolve.FirSymbolProvider
|
import org.jetbrains.kotlin.fir.resolve.FirSymbolProvider
|
||||||
import org.jetbrains.kotlin.fir.service
|
import org.jetbrains.kotlin.fir.service
|
||||||
import org.jetbrains.kotlin.fir.symbols.LibraryTypeParameterSymbol
|
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.*
|
import org.jetbrains.kotlin.fir.symbols.impl.*
|
||||||
import org.jetbrains.kotlin.ir.declarations.*
|
import org.jetbrains.kotlin.ir.declarations.*
|
||||||
import org.jetbrains.kotlin.ir.declarations.impl.*
|
import org.jetbrains.kotlin.ir.declarations.impl.*
|
||||||
@@ -29,7 +28,6 @@ import org.jetbrains.kotlin.ir.util.SymbolTable
|
|||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.psi.KtFunctionLiteral
|
import org.jetbrains.kotlin.psi.KtFunctionLiteral
|
||||||
import org.jetbrains.kotlin.types.Variance
|
|
||||||
|
|
||||||
class Fir2IrDeclarationStorage(
|
class Fir2IrDeclarationStorage(
|
||||||
private val session: FirSession,
|
private val session: FirSession,
|
||||||
@@ -44,8 +42,6 @@ class Fir2IrDeclarationStorage(
|
|||||||
|
|
||||||
private val typeParameterCache = mutableMapOf<FirTypeParameter, IrTypeParameter>()
|
private val typeParameterCache = mutableMapOf<FirTypeParameter, IrTypeParameter>()
|
||||||
|
|
||||||
private val libraryTypeParameterCache = mutableMapOf<LibraryTypeParameterSymbol, IrTypeParameter>()
|
|
||||||
|
|
||||||
private val functionCache = mutableMapOf<FirNamedFunction, IrSimpleFunction>()
|
private val functionCache = mutableMapOf<FirNamedFunction, IrSimpleFunction>()
|
||||||
|
|
||||||
private val constructorCache = mutableMapOf<FirConstructor, IrConstructor>()
|
private val constructorCache = mutableMapOf<FirConstructor, IrConstructor>()
|
||||||
@@ -414,24 +410,6 @@ class Fir2IrDeclarationStorage(
|
|||||||
return irSymbolTable.referenceTypeParameter(irTypeParameter.descriptor)
|
return irSymbolTable.referenceTypeParameter(irTypeParameter.descriptor)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getIrTypeParameterSymbol(typeParameterSymbol: LibraryTypeParameterSymbol): IrTypeParameterSymbol {
|
|
||||||
val irTypeParameter = libraryTypeParameterCache.getOrPut(typeParameterSymbol) {
|
|
||||||
val descriptor = WrappedTypeParameterDescriptor()
|
|
||||||
val origin = IrDeclarationOrigin.DEFINED
|
|
||||||
irSymbolTable.declareGlobalTypeParameter(-1, -1, origin, descriptor) { symbol ->
|
|
||||||
IrTypeParameterImpl(
|
|
||||||
-1, -1, origin, symbol,
|
|
||||||
typeParameterSymbol.name, -1,
|
|
||||||
false,
|
|
||||||
Variance.INVARIANT
|
|
||||||
).apply {
|
|
||||||
descriptor.bind(this)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return irSymbolTable.referenceTypeParameter(irTypeParameter.descriptor)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun getIrFunctionSymbol(firFunctionSymbol: FirFunctionSymbol): IrFunctionSymbol {
|
fun getIrFunctionSymbol(firFunctionSymbol: FirFunctionSymbol): IrFunctionSymbol {
|
||||||
return when (val firDeclaration = firFunctionSymbol.fir) {
|
return when (val firDeclaration = firFunctionSymbol.fir) {
|
||||||
is FirNamedFunction -> {
|
is FirNamedFunction -> {
|
||||||
|
|||||||
-12
@@ -1,12 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
|
|
||||||
* that can be found in the license/LICENSE.txt file.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.jetbrains.kotlin.fir.symbols
|
|
||||||
|
|
||||||
import org.jetbrains.kotlin.name.Name
|
|
||||||
|
|
||||||
class LibraryTypeParameterSymbol(override val name: Name) : ConeTypeParameterSymbol {
|
|
||||||
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user