FIR2IR: add AnnotationGenerator to Fir2IrComponents

This commit is contained in:
Jinseong Jeon
2020-11-18 12:54:31 -08:00
committed by teamcityserver
parent eff4cec3e0
commit f9a032dbfa
9 changed files with 18 additions and 18 deletions
@@ -6,6 +6,7 @@
package org.jetbrains.kotlin.fir.backend
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.FakeOverrideGenerator
import org.jetbrains.kotlin.fir.resolve.ScopeSession
@@ -16,15 +17,20 @@ import org.jetbrains.kotlin.ir.util.SymbolTable
interface Fir2IrComponents {
val session: FirSession
val scopeSession: ScopeSession
val symbolTable: SymbolTable
val irBuiltIns: IrBuiltIns
val builtIns: Fir2IrBuiltIns
val irFactory: IrFactory
val classifierStorage: Fir2IrClassifierStorage
val declarationStorage: Fir2IrDeclarationStorage
val typeConverter: Fir2IrTypeConverter
val signatureComposer: Fir2IrSignatureComposer
val visibilityConverter: Fir2IrVisibilityConverter
val annotationGenerator: AnnotationGenerator
val callGenerator: CallAndReferenceGenerator
val fakeOverrideGenerator: FakeOverrideGenerator
val visibilityConverter: Fir2IrVisibilityConverter
}
@@ -6,6 +6,7 @@
package org.jetbrains.kotlin.fir.backend
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.FakeOverrideGenerator
import org.jetbrains.kotlin.fir.resolve.ScopeSession
@@ -25,11 +26,14 @@ class Fir2IrComponentsStorage(
) : Fir2IrComponents {
override lateinit var classifierStorage: Fir2IrClassifierStorage
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 typeConverter: Fir2IrTypeConverter
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 typeConverter = Fir2IrTypeConverter(components)
val builtIns = Fir2IrBuiltIns(components, specialSymbolProvider)
val annotationGenerator = AnnotationGenerator(components)
components.declarationStorage = declarationStorage
components.classifierStorage = classifierStorage
components.typeConverter = typeConverter
components.visibilityConverter = visibilityConverter
components.builtIns = builtIns
components.annotationGenerator = annotationGenerator
val irFiles = mutableListOf<IrFile>()
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.descriptors.*
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.declarations.*
import org.jetbrains.kotlin.fir.declarations.builder.buildProperty
@@ -59,8 +58,6 @@ class Fir2IrDeclarationStorage(
private val moduleDescriptor: FirModuleDescriptor
) : Fir2IrComponents by components {
private val annotationGenerator = AnnotationGenerator(this)
private val firSymbolProvider = session.firSymbolProvider
private val firProvider = session.firProvider
@@ -5,7 +5,6 @@
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.resolve.fullyExpandedType
import org.jetbrains.kotlin.fir.resolve.toSymbol
@@ -25,7 +24,6 @@ import org.jetbrains.kotlin.types.Variance
class Fir2IrTypeConverter(
private val components: Fir2IrComponents
) : Fir2IrComponents by components {
private val annotationGenerator = AnnotationGenerator(this)
internal val classIdToSymbolMap = mapOf(
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.Visibilities
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.OperatorExpressionGenerator
import org.jetbrains.kotlin.fir.declarations.*
@@ -51,8 +50,6 @@ class Fir2IrVisitor(
private val conversionScope: Fir2IrConversionScope
) : Fir2IrComponents by components, FirDefaultVisitor<IrElement, Any?>(), IrGeneratorContextInterface {
private val annotationGenerator = AnnotationGenerator(this)
internal val implicitCastInserter = Fir2IrImplicitCastInserter(components, this)
private val memberGenerator = ClassMemberGenerator(components, this, conversionScope)
@@ -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
* 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> =
mapNotNull {
@@ -35,8 +35,6 @@ internal class ClassMemberGenerator(
private val conversionScope: Fir2IrConversionScope
) : Fir2IrComponents by components {
private val annotationGenerator = AnnotationGenerator(visitor)
private fun FirTypeRef.toIrType(): IrType = with(typeConverter) { toIrType() }
private fun ConeKotlinType.toIrType(): IrType = with(typeConverter) { toIrType() }
@@ -36,8 +36,6 @@ internal class DelegatedMemberGenerator(
private val components: Fir2IrComponents
) : Fir2IrComponents by components {
private val annotationGenerator = AnnotationGenerator(this)
// Generate delegated members for [subClass]. The synthetic field [irField] has the super interface type.
fun generate(irField: IrField, firField: FirField, firSubClass: FirClass<*>, subClass: IrClass) {
val subClassLookupTag = firSubClass.symbol.toLookupTag()