FIR2IR: add AnnotationGenerator to Fir2IrComponents
This commit is contained in:
committed by
teamcityserver
parent
eff4cec3e0
commit
f9a032dbfa
@@ -6,6 +6,7 @@
|
|||||||
package org.jetbrains.kotlin.fir.backend
|
package org.jetbrains.kotlin.fir.backend
|
||||||
|
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
|
import org.jetbrains.kotlin.fir.backend.generators.AnnotationGenerator
|
||||||
import org.jetbrains.kotlin.fir.backend.generators.CallAndReferenceGenerator
|
import org.jetbrains.kotlin.fir.backend.generators.CallAndReferenceGenerator
|
||||||
import org.jetbrains.kotlin.fir.backend.generators.FakeOverrideGenerator
|
import org.jetbrains.kotlin.fir.backend.generators.FakeOverrideGenerator
|
||||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
||||||
@@ -16,15 +17,20 @@ import org.jetbrains.kotlin.ir.util.SymbolTable
|
|||||||
interface Fir2IrComponents {
|
interface Fir2IrComponents {
|
||||||
val session: FirSession
|
val session: FirSession
|
||||||
val scopeSession: ScopeSession
|
val scopeSession: ScopeSession
|
||||||
|
|
||||||
val symbolTable: SymbolTable
|
val symbolTable: SymbolTable
|
||||||
val irBuiltIns: IrBuiltIns
|
val irBuiltIns: IrBuiltIns
|
||||||
val builtIns: Fir2IrBuiltIns
|
val builtIns: Fir2IrBuiltIns
|
||||||
val irFactory: IrFactory
|
val irFactory: IrFactory
|
||||||
|
|
||||||
val classifierStorage: Fir2IrClassifierStorage
|
val classifierStorage: Fir2IrClassifierStorage
|
||||||
val declarationStorage: Fir2IrDeclarationStorage
|
val declarationStorage: Fir2IrDeclarationStorage
|
||||||
|
|
||||||
val typeConverter: Fir2IrTypeConverter
|
val typeConverter: Fir2IrTypeConverter
|
||||||
val signatureComposer: Fir2IrSignatureComposer
|
val signatureComposer: Fir2IrSignatureComposer
|
||||||
|
val visibilityConverter: Fir2IrVisibilityConverter
|
||||||
|
|
||||||
|
val annotationGenerator: AnnotationGenerator
|
||||||
val callGenerator: CallAndReferenceGenerator
|
val callGenerator: CallAndReferenceGenerator
|
||||||
val fakeOverrideGenerator: FakeOverrideGenerator
|
val fakeOverrideGenerator: FakeOverrideGenerator
|
||||||
val visibilityConverter: Fir2IrVisibilityConverter
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
package org.jetbrains.kotlin.fir.backend
|
package org.jetbrains.kotlin.fir.backend
|
||||||
|
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
|
import org.jetbrains.kotlin.fir.backend.generators.AnnotationGenerator
|
||||||
import org.jetbrains.kotlin.fir.backend.generators.CallAndReferenceGenerator
|
import org.jetbrains.kotlin.fir.backend.generators.CallAndReferenceGenerator
|
||||||
import org.jetbrains.kotlin.fir.backend.generators.FakeOverrideGenerator
|
import org.jetbrains.kotlin.fir.backend.generators.FakeOverrideGenerator
|
||||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
||||||
@@ -25,11 +26,14 @@ class Fir2IrComponentsStorage(
|
|||||||
) : Fir2IrComponents {
|
) : Fir2IrComponents {
|
||||||
override lateinit var classifierStorage: Fir2IrClassifierStorage
|
override lateinit var classifierStorage: Fir2IrClassifierStorage
|
||||||
override lateinit var declarationStorage: Fir2IrDeclarationStorage
|
override lateinit var declarationStorage: Fir2IrDeclarationStorage
|
||||||
override lateinit var typeConverter: Fir2IrTypeConverter
|
|
||||||
override lateinit var callGenerator: CallAndReferenceGenerator
|
|
||||||
override lateinit var fakeOverrideGenerator: FakeOverrideGenerator
|
|
||||||
override lateinit var visibilityConverter: Fir2IrVisibilityConverter
|
|
||||||
override lateinit var builtIns: Fir2IrBuiltIns
|
override lateinit var builtIns: Fir2IrBuiltIns
|
||||||
|
|
||||||
|
override lateinit var typeConverter: Fir2IrTypeConverter
|
||||||
override val signatureComposer = FirBasedSignatureComposer(mangler)
|
override val signatureComposer = FirBasedSignatureComposer(mangler)
|
||||||
|
override lateinit var visibilityConverter: Fir2IrVisibilityConverter
|
||||||
|
|
||||||
|
override lateinit var annotationGenerator: AnnotationGenerator
|
||||||
|
override lateinit var callGenerator: CallAndReferenceGenerator
|
||||||
|
override lateinit var fakeOverrideGenerator: FakeOverrideGenerator
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -276,11 +276,13 @@ class Fir2IrConverter(
|
|||||||
val declarationStorage = Fir2IrDeclarationStorage(components, fir2irVisitor, moduleDescriptor)
|
val declarationStorage = Fir2IrDeclarationStorage(components, fir2irVisitor, moduleDescriptor)
|
||||||
val typeConverter = Fir2IrTypeConverter(components)
|
val typeConverter = Fir2IrTypeConverter(components)
|
||||||
val builtIns = Fir2IrBuiltIns(components, specialSymbolProvider)
|
val builtIns = Fir2IrBuiltIns(components, specialSymbolProvider)
|
||||||
|
val annotationGenerator = AnnotationGenerator(components)
|
||||||
components.declarationStorage = declarationStorage
|
components.declarationStorage = declarationStorage
|
||||||
components.classifierStorage = classifierStorage
|
components.classifierStorage = classifierStorage
|
||||||
components.typeConverter = typeConverter
|
components.typeConverter = typeConverter
|
||||||
components.visibilityConverter = visibilityConverter
|
components.visibilityConverter = visibilityConverter
|
||||||
components.builtIns = builtIns
|
components.builtIns = builtIns
|
||||||
|
components.annotationGenerator = annotationGenerator
|
||||||
val irFiles = mutableListOf<IrFile>()
|
val irFiles = mutableListOf<IrFile>()
|
||||||
|
|
||||||
for (firFile in firFiles) {
|
for (firFile in firFiles) {
|
||||||
|
|||||||
@@ -9,7 +9,6 @@ import org.jetbrains.kotlin.KtNodeTypes
|
|||||||
import org.jetbrains.kotlin.builtins.StandardNames.BUILT_INS_PACKAGE_FQ_NAMES
|
import org.jetbrains.kotlin.builtins.StandardNames.BUILT_INS_PACKAGE_FQ_NAMES
|
||||||
import org.jetbrains.kotlin.descriptors.*
|
import org.jetbrains.kotlin.descriptors.*
|
||||||
import org.jetbrains.kotlin.fir.*
|
import org.jetbrains.kotlin.fir.*
|
||||||
import org.jetbrains.kotlin.fir.backend.generators.AnnotationGenerator
|
|
||||||
import org.jetbrains.kotlin.fir.backend.generators.DelegatedMemberGenerator
|
import org.jetbrains.kotlin.fir.backend.generators.DelegatedMemberGenerator
|
||||||
import org.jetbrains.kotlin.fir.declarations.*
|
import org.jetbrains.kotlin.fir.declarations.*
|
||||||
import org.jetbrains.kotlin.fir.declarations.builder.buildProperty
|
import org.jetbrains.kotlin.fir.declarations.builder.buildProperty
|
||||||
@@ -59,8 +58,6 @@ class Fir2IrDeclarationStorage(
|
|||||||
private val moduleDescriptor: FirModuleDescriptor
|
private val moduleDescriptor: FirModuleDescriptor
|
||||||
) : Fir2IrComponents by components {
|
) : Fir2IrComponents by components {
|
||||||
|
|
||||||
private val annotationGenerator = AnnotationGenerator(this)
|
|
||||||
|
|
||||||
private val firSymbolProvider = session.firSymbolProvider
|
private val firSymbolProvider = session.firSymbolProvider
|
||||||
|
|
||||||
private val firProvider = session.firProvider
|
private val firProvider = session.firProvider
|
||||||
|
|||||||
@@ -5,7 +5,6 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.fir.backend
|
package org.jetbrains.kotlin.fir.backend
|
||||||
|
|
||||||
import org.jetbrains.kotlin.fir.backend.generators.AnnotationGenerator
|
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
||||||
import org.jetbrains.kotlin.fir.resolve.fullyExpandedType
|
import org.jetbrains.kotlin.fir.resolve.fullyExpandedType
|
||||||
import org.jetbrains.kotlin.fir.resolve.toSymbol
|
import org.jetbrains.kotlin.fir.resolve.toSymbol
|
||||||
@@ -25,7 +24,6 @@ import org.jetbrains.kotlin.types.Variance
|
|||||||
class Fir2IrTypeConverter(
|
class Fir2IrTypeConverter(
|
||||||
private val components: Fir2IrComponents
|
private val components: Fir2IrComponents
|
||||||
) : Fir2IrComponents by components {
|
) : Fir2IrComponents by components {
|
||||||
private val annotationGenerator = AnnotationGenerator(this)
|
|
||||||
|
|
||||||
internal val classIdToSymbolMap = mapOf(
|
internal val classIdToSymbolMap = mapOf(
|
||||||
StandardClassIds.Nothing to irBuiltIns.nothingClass,
|
StandardClassIds.Nothing to irBuiltIns.nothingClass,
|
||||||
|
|||||||
@@ -10,7 +10,6 @@ import org.jetbrains.kotlin.descriptors.ClassKind
|
|||||||
import org.jetbrains.kotlin.descriptors.Modality
|
import org.jetbrains.kotlin.descriptors.Modality
|
||||||
import org.jetbrains.kotlin.descriptors.Visibilities
|
import org.jetbrains.kotlin.descriptors.Visibilities
|
||||||
import org.jetbrains.kotlin.fir.*
|
import org.jetbrains.kotlin.fir.*
|
||||||
import org.jetbrains.kotlin.fir.backend.generators.AnnotationGenerator
|
|
||||||
import org.jetbrains.kotlin.fir.backend.generators.ClassMemberGenerator
|
import org.jetbrains.kotlin.fir.backend.generators.ClassMemberGenerator
|
||||||
import org.jetbrains.kotlin.fir.backend.generators.OperatorExpressionGenerator
|
import org.jetbrains.kotlin.fir.backend.generators.OperatorExpressionGenerator
|
||||||
import org.jetbrains.kotlin.fir.declarations.*
|
import org.jetbrains.kotlin.fir.declarations.*
|
||||||
@@ -51,8 +50,6 @@ class Fir2IrVisitor(
|
|||||||
private val conversionScope: Fir2IrConversionScope
|
private val conversionScope: Fir2IrConversionScope
|
||||||
) : Fir2IrComponents by components, FirDefaultVisitor<IrElement, Any?>(), IrGeneratorContextInterface {
|
) : Fir2IrComponents by components, FirDefaultVisitor<IrElement, Any?>(), IrGeneratorContextInterface {
|
||||||
|
|
||||||
private val annotationGenerator = AnnotationGenerator(this)
|
|
||||||
|
|
||||||
internal val implicitCastInserter = Fir2IrImplicitCastInserter(components, this)
|
internal val implicitCastInserter = Fir2IrImplicitCastInserter(components, this)
|
||||||
|
|
||||||
private val memberGenerator = ClassMemberGenerator(components, this, conversionScope)
|
private val memberGenerator = ClassMemberGenerator(components, this, conversionScope)
|
||||||
|
|||||||
+1
-1
@@ -25,7 +25,7 @@ import org.jetbrains.kotlin.ir.util.isSetter
|
|||||||
* whose targets may vary. After all the necessary pieces of IR elements, e.g., backing field, are ready, this generator splits those
|
* whose targets may vary. After all the necessary pieces of IR elements, e.g., backing field, are ready, this generator splits those
|
||||||
* annotations to the specified targets.
|
* annotations to the specified targets.
|
||||||
*/
|
*/
|
||||||
internal class AnnotationGenerator(private val components: Fir2IrComponents) : Fir2IrComponents by components {
|
class AnnotationGenerator(private val components: Fir2IrComponents) : Fir2IrComponents by components {
|
||||||
|
|
||||||
fun List<FirAnnotationCall>.toIrAnnotations(): List<IrConstructorCall> =
|
fun List<FirAnnotationCall>.toIrAnnotations(): List<IrConstructorCall> =
|
||||||
mapNotNull {
|
mapNotNull {
|
||||||
|
|||||||
-2
@@ -35,8 +35,6 @@ internal class ClassMemberGenerator(
|
|||||||
private val conversionScope: Fir2IrConversionScope
|
private val conversionScope: Fir2IrConversionScope
|
||||||
) : Fir2IrComponents by components {
|
) : Fir2IrComponents by components {
|
||||||
|
|
||||||
private val annotationGenerator = AnnotationGenerator(visitor)
|
|
||||||
|
|
||||||
private fun FirTypeRef.toIrType(): IrType = with(typeConverter) { toIrType() }
|
private fun FirTypeRef.toIrType(): IrType = with(typeConverter) { toIrType() }
|
||||||
|
|
||||||
private fun ConeKotlinType.toIrType(): IrType = with(typeConverter) { toIrType() }
|
private fun ConeKotlinType.toIrType(): IrType = with(typeConverter) { toIrType() }
|
||||||
|
|||||||
-2
@@ -36,8 +36,6 @@ internal class DelegatedMemberGenerator(
|
|||||||
private val components: Fir2IrComponents
|
private val components: Fir2IrComponents
|
||||||
) : Fir2IrComponents by components {
|
) : Fir2IrComponents by components {
|
||||||
|
|
||||||
private val annotationGenerator = AnnotationGenerator(this)
|
|
||||||
|
|
||||||
// Generate delegated members for [subClass]. The synthetic field [irField] has the super interface type.
|
// Generate delegated members for [subClass]. The synthetic field [irField] has the super interface type.
|
||||||
fun generate(irField: IrField, firField: FirField, firSubClass: FirClass<*>, subClass: IrClass) {
|
fun generate(irField: IrField, firField: FirField, firSubClass: FirClass<*>, subClass: IrClass) {
|
||||||
val subClassLookupTag = firSubClass.symbol.toLookupTag()
|
val subClassLookupTag = firSubClass.symbol.toLookupTag()
|
||||||
|
|||||||
Reference in New Issue
Block a user