diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/FirFileAnnotationsContainer.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/FirFileAnnotationsContainer.kt new file mode 100644 index 00000000000..f3b7b5ec19f --- /dev/null +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/FirFileAnnotationsContainer.kt @@ -0,0 +1,35 @@ +/* + * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors. + * 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 + +import org.jetbrains.kotlin.KtSourceElement +import org.jetbrains.kotlin.fir.declarations.FirResolvePhase +import org.jetbrains.kotlin.fir.expressions.FirAnnotation +import org.jetbrains.kotlin.fir.symbols.impl.FirFileSymbol +import org.jetbrains.kotlin.fir.visitors.* + +/* + * This file was generated automatically + * DO NOT MODIFY IT MANUALLY + */ + +abstract class FirFileAnnotationsContainer : FirElementWithResolvePhase(), FirAnnotationContainer { + abstract override val source: KtSourceElement? + abstract override val resolvePhase: FirResolvePhase + abstract override val moduleData: FirModuleData + abstract override val annotations: List + abstract val containingFileSymbol: FirFileSymbol + + override fun accept(visitor: FirVisitor, data: D): R = visitor.visitFileAnnotationsContainer(this, data) + + @Suppress("UNCHECKED_CAST") + override fun transform(transformer: FirTransformer, data: D): E = + transformer.transformFileAnnotationsContainer(this, data) as E + + abstract override fun replaceResolvePhase(newResolvePhase: FirResolvePhase) + + abstract override fun transformAnnotations(transformer: FirTransformer, data: D): FirFileAnnotationsContainer +} diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/builder/FirFileAnnotationsContainerBuilder.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/builder/FirFileAnnotationsContainerBuilder.kt new file mode 100644 index 00000000000..a0c50f5d999 --- /dev/null +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/builder/FirFileAnnotationsContainerBuilder.kt @@ -0,0 +1,53 @@ +/* + * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +@file:Suppress("DuplicatedCode") + +package org.jetbrains.kotlin.fir.builder + +import kotlin.contracts.* +import org.jetbrains.kotlin.KtSourceElement +import org.jetbrains.kotlin.fir.FirFileAnnotationsContainer +import org.jetbrains.kotlin.fir.FirModuleData +import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder +import org.jetbrains.kotlin.fir.builder.FirBuilderDsl +import org.jetbrains.kotlin.fir.declarations.FirResolvePhase +import org.jetbrains.kotlin.fir.expressions.FirAnnotation +import org.jetbrains.kotlin.fir.impl.FirFileAnnotationsContainerImpl +import org.jetbrains.kotlin.fir.symbols.impl.FirFileSymbol +import org.jetbrains.kotlin.fir.visitors.* + +/* + * This file was generated automatically + * DO NOT MODIFY IT MANUALLY + */ + +@FirBuilderDsl +class FirFileAnnotationsContainerBuilder : FirAnnotationContainerBuilder { + override var source: KtSourceElement? = null + var resolvePhase: FirResolvePhase = FirResolvePhase.RAW_FIR + lateinit var moduleData: FirModuleData + override val annotations: MutableList = mutableListOf() + lateinit var containingFileSymbol: FirFileSymbol + + override fun build(): FirFileAnnotationsContainer { + return FirFileAnnotationsContainerImpl( + source, + resolvePhase, + moduleData, + annotations, + containingFileSymbol, + ) + } + +} + +@OptIn(ExperimentalContracts::class) +inline fun buildFileAnnotationsContainer(init: FirFileAnnotationsContainerBuilder.() -> Unit): FirFileAnnotationsContainer { + contract { + callsInPlace(init, kotlin.contracts.InvocationKind.EXACTLY_ONCE) + } + return FirFileAnnotationsContainerBuilder().apply(init).build() +} diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/impl/FirFileAnnotationsContainerImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/impl/FirFileAnnotationsContainerImpl.kt new file mode 100644 index 00000000000..d7ddc415a77 --- /dev/null +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/impl/FirFileAnnotationsContainerImpl.kt @@ -0,0 +1,48 @@ +/* + * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +@file:Suppress("DuplicatedCode") + +package org.jetbrains.kotlin.fir.impl + +import org.jetbrains.kotlin.KtSourceElement +import org.jetbrains.kotlin.fir.FirFileAnnotationsContainer +import org.jetbrains.kotlin.fir.FirModuleData +import org.jetbrains.kotlin.fir.declarations.FirResolvePhase +import org.jetbrains.kotlin.fir.expressions.FirAnnotation +import org.jetbrains.kotlin.fir.symbols.impl.FirFileSymbol +import org.jetbrains.kotlin.fir.visitors.* + +/* + * This file was generated automatically + * DO NOT MODIFY IT MANUALLY + */ + +internal class FirFileAnnotationsContainerImpl( + override val source: KtSourceElement?, + @Volatile + override var resolvePhase: FirResolvePhase, + override val moduleData: FirModuleData, + override val annotations: MutableList, + override val containingFileSymbol: FirFileSymbol, +) : FirFileAnnotationsContainer() { + override fun acceptChildren(visitor: FirVisitor, data: D) { + annotations.forEach { it.accept(visitor, data) } + } + + override fun transformChildren(transformer: FirTransformer, data: D): FirFileAnnotationsContainerImpl { + transformAnnotations(transformer, data) + return this + } + + override fun transformAnnotations(transformer: FirTransformer, data: D): FirFileAnnotationsContainerImpl { + annotations.transformInplace(transformer, data) + return this + } + + override fun replaceResolvePhase(newResolvePhase: FirResolvePhase) { + resolvePhase = newResolvePhase + } +} diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirDefaultVisitor.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirDefaultVisitor.kt index 2290707787b..adfb98b9b2a 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirDefaultVisitor.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirDefaultVisitor.kt @@ -19,6 +19,7 @@ import org.jetbrains.kotlin.fir.expressions.FirStatement import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.declarations.FirContextReceiver import org.jetbrains.kotlin.fir.FirElementWithResolvePhase +import org.jetbrains.kotlin.fir.FirFileAnnotationsContainer import org.jetbrains.kotlin.fir.declarations.FirDeclaration import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRefsOwner import org.jetbrains.kotlin.fir.declarations.FirTypeParametersOwner diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirDefaultVisitorVoid.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirDefaultVisitorVoid.kt index e0cebad9680..5de946adc2e 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirDefaultVisitorVoid.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirDefaultVisitorVoid.kt @@ -19,6 +19,7 @@ import org.jetbrains.kotlin.fir.expressions.FirStatement import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.declarations.FirContextReceiver import org.jetbrains.kotlin.fir.FirElementWithResolvePhase +import org.jetbrains.kotlin.fir.FirFileAnnotationsContainer import org.jetbrains.kotlin.fir.declarations.FirDeclaration import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRefsOwner import org.jetbrains.kotlin.fir.declarations.FirTypeParametersOwner diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirTransformer.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirTransformer.kt index dc49fa3412e..d12006e9b6f 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirTransformer.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirTransformer.kt @@ -19,6 +19,7 @@ import org.jetbrains.kotlin.fir.expressions.FirStatement import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.declarations.FirContextReceiver import org.jetbrains.kotlin.fir.FirElementWithResolvePhase +import org.jetbrains.kotlin.fir.FirFileAnnotationsContainer import org.jetbrains.kotlin.fir.declarations.FirDeclaration import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRefsOwner import org.jetbrains.kotlin.fir.declarations.FirTypeParametersOwner @@ -207,6 +208,10 @@ abstract class FirTransformer : FirVisitor() { return transformElement(elementWithResolvePhase, data) } + open fun transformFileAnnotationsContainer(fileAnnotationsContainer: FirFileAnnotationsContainer, data: D): FirFileAnnotationsContainer { + return transformElement(fileAnnotationsContainer, data) + } + open fun transformDeclaration(declaration: FirDeclaration, data: D): FirDeclaration { return transformElement(declaration, data) } @@ -767,6 +772,10 @@ abstract class FirTransformer : FirVisitor() { return transformElementWithResolvePhase(elementWithResolvePhase, data) } + final override fun visitFileAnnotationsContainer(fileAnnotationsContainer: FirFileAnnotationsContainer, data: D): FirFileAnnotationsContainer { + return transformFileAnnotationsContainer(fileAnnotationsContainer, data) + } + final override fun visitDeclaration(declaration: FirDeclaration, data: D): FirDeclaration { return transformDeclaration(declaration, data) } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirVisitor.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirVisitor.kt index d02db23aaf7..dffbe9243ff 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirVisitor.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirVisitor.kt @@ -19,6 +19,7 @@ import org.jetbrains.kotlin.fir.expressions.FirStatement import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.declarations.FirContextReceiver import org.jetbrains.kotlin.fir.FirElementWithResolvePhase +import org.jetbrains.kotlin.fir.FirFileAnnotationsContainer import org.jetbrains.kotlin.fir.declarations.FirDeclaration import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRefsOwner import org.jetbrains.kotlin.fir.declarations.FirTypeParametersOwner @@ -180,6 +181,8 @@ abstract class FirVisitor { open fun visitElementWithResolvePhase(elementWithResolvePhase: FirElementWithResolvePhase, data: D): R = visitElement(elementWithResolvePhase, data) + open fun visitFileAnnotationsContainer(fileAnnotationsContainer: FirFileAnnotationsContainer, data: D): R = visitElement(fileAnnotationsContainer, data) + open fun visitDeclaration(declaration: FirDeclaration, data: D): R = visitElement(declaration, data) open fun visitTypeParameterRefsOwner(typeParameterRefsOwner: FirTypeParameterRefsOwner, data: D): R = visitElement(typeParameterRefsOwner, data) diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirVisitorVoid.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirVisitorVoid.kt index 2b41f057454..c935df45c33 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirVisitorVoid.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirVisitorVoid.kt @@ -19,6 +19,7 @@ import org.jetbrains.kotlin.fir.expressions.FirStatement import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.declarations.FirContextReceiver import org.jetbrains.kotlin.fir.FirElementWithResolvePhase +import org.jetbrains.kotlin.fir.FirFileAnnotationsContainer import org.jetbrains.kotlin.fir.declarations.FirDeclaration import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRefsOwner import org.jetbrains.kotlin.fir.declarations.FirTypeParametersOwner @@ -206,6 +207,10 @@ abstract class FirVisitorVoid : FirVisitor() { visitElement(elementWithResolvePhase) } + open fun visitFileAnnotationsContainer(fileAnnotationsContainer: FirFileAnnotationsContainer) { + visitElement(fileAnnotationsContainer) + } + open fun visitDeclaration(declaration: FirDeclaration) { visitElement(declaration) } @@ -766,6 +771,10 @@ abstract class FirVisitorVoid : FirVisitor() { visitElementWithResolvePhase(elementWithResolvePhase) } + final override fun visitFileAnnotationsContainer(fileAnnotationsContainer: FirFileAnnotationsContainer, data: Nothing?) { + visitFileAnnotationsContainer(fileAnnotationsContainer) + } + final override fun visitDeclaration(declaration: FirDeclaration, data: Nothing?) { visitDeclaration(declaration) } diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/FirTreeBuilder.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/FirTreeBuilder.kt index 7e797ad7b1a..a8af758a919 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/FirTreeBuilder.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/FirTreeBuilder.kt @@ -30,6 +30,7 @@ object FirTreeBuilder : AbstractFirTreeBuilder() { val contextReceiver by element(Declaration) val elementWithResolvePhase by element(Other) + val fileAnnotationsContainer by element(Other, elementWithResolvePhase, annotationContainer) val declaration by sealedElement(Declaration, elementWithResolvePhase, annotationContainer) val typeParameterRefsOwner by sealedElement(Declaration) val typeParametersOwner by sealedElement(Declaration, typeParameterRefsOwner) diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/NodeConfigurator.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/NodeConfigurator.kt index cb273dca924..45af098dd86 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/NodeConfigurator.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/NodeConfigurator.kt @@ -83,6 +83,10 @@ object NodeConfigurator : AbstractFieldConfigurator(FirTreeBuild shouldBeAbstractClass() } + fileAnnotationsContainer.configure { + +field("containingFileSymbol", type("fir.symbols.impl", "FirFileSymbol"), argument = null) + } + declaration.configure { +symbolWithPackage("fir.symbols", "FirBasedSymbol", "out FirDeclaration") +field("moduleData", firModuleDataType) diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/printer/implementation.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/printer/implementation.kt index f2b84b2ef46..0cadc98f07b 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/printer/implementation.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/printer/implementation.kt @@ -113,6 +113,7 @@ fun SmartPrinter.printImplementation(implementation: Implementation) { !element.type.contains("Reference") && !element.type.contains("ResolvedQualifier") && !element.type.endsWith("Ref") + && !element.type.endsWith("AnnotationsContainer") }?.let { symbolFields -> println("init {") for (symbolField in symbolFields) {