[FIR] Remove first version of class generation transformer
This commit is contained in:
+1
-2
@@ -12,7 +12,6 @@ import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
|||||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirBodyResolveTransformerAdapter
|
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirBodyResolveTransformerAdapter
|
||||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirImplicitTypeBodyResolveTransformerAdapter
|
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirImplicitTypeBodyResolveTransformerAdapter
|
||||||
import org.jetbrains.kotlin.fir.resolve.transformers.contracts.FirContractResolveTransformerAdapter
|
import org.jetbrains.kotlin.fir.resolve.transformers.contracts.FirContractResolveTransformerAdapter
|
||||||
import org.jetbrains.kotlin.fir.resolve.transformers.plugin.FirFirstGenerationTransformer
|
|
||||||
import org.jetbrains.kotlin.fir.resolve.transformers.plugin.FirPluginAnnotationsResolveTransformer
|
import org.jetbrains.kotlin.fir.resolve.transformers.plugin.FirPluginAnnotationsResolveTransformer
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||||
|
|
||||||
@@ -22,7 +21,7 @@ fun FirResolvePhase.createTransformerByPhase(session: FirSession, scopeSession:
|
|||||||
return when (this) {
|
return when (this) {
|
||||||
RAW_FIR -> throw AssertionError("Raw FIR building phase does not have a transformer")
|
RAW_FIR -> throw AssertionError("Raw FIR building phase does not have a transformer")
|
||||||
ANNOTATIONS_FOR_PLUGINS -> FirPluginAnnotationsResolveTransformer(session, scopeSession)
|
ANNOTATIONS_FOR_PLUGINS -> FirPluginAnnotationsResolveTransformer(session, scopeSession)
|
||||||
FIRST_PLUGIN_GENERATION -> FirFirstGenerationTransformer()
|
// FIRST_PLUGIN_GENERATION -> FirFirstGenerationTransformer()
|
||||||
IMPORTS -> FirImportResolveTransformer(session)
|
IMPORTS -> FirImportResolveTransformer(session)
|
||||||
SUPER_TYPES -> FirSupertypeResolverTransformer(session, scopeSession)
|
SUPER_TYPES -> FirSupertypeResolverTransformer(session, scopeSession)
|
||||||
SEALED_CLASS_INHERITORS -> FirSealedClassInheritorsTransformer()
|
SEALED_CLASS_INHERITORS -> FirSealedClassInheritorsTransformer()
|
||||||
|
|||||||
-104
@@ -1,104 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2010-2020 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.resolve.transformers.plugin
|
|
||||||
|
|
||||||
import org.jetbrains.kotlin.fir.FirAnnotationContainer
|
|
||||||
import org.jetbrains.kotlin.fir.FirElement
|
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
|
||||||
import org.jetbrains.kotlin.fir.declarations.*
|
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirStatement
|
|
||||||
import org.jetbrains.kotlin.fir.extensions.FirClassGenerationExtension
|
|
||||||
import org.jetbrains.kotlin.fir.extensions.classGenerationExtensions
|
|
||||||
import org.jetbrains.kotlin.fir.extensions.oldExtensionsService
|
|
||||||
import org.jetbrains.kotlin.fir.extensions.hasExtensions
|
|
||||||
import org.jetbrains.kotlin.fir.visitors.CompositeTransformResult
|
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirDefaultTransformer
|
|
||||||
import org.jetbrains.kotlin.fir.visitors.compose
|
|
||||||
|
|
||||||
class FirFirstGenerationTransformer : FirDefaultTransformer<Nothing?>() {
|
|
||||||
private lateinit var session: FirSession
|
|
||||||
private val generatedDeclarations: MutableList<FirClassGenerationExtension.GeneratedClass> = mutableListOf()
|
|
||||||
private lateinit var file: FirFile
|
|
||||||
private val extensionPointService get() = session.oldExtensionsService
|
|
||||||
|
|
||||||
override fun transformFile(file: FirFile, data: Nothing?): CompositeTransformResult<FirDeclaration> {
|
|
||||||
session = file.session
|
|
||||||
if (!extensionPointService.hasExtensions) return file.compose()
|
|
||||||
file.replaceResolvePhase(FirResolvePhase.FIRST_PLUGIN_GENERATION)
|
|
||||||
generatedDeclarations.clear()
|
|
||||||
this.file = file
|
|
||||||
|
|
||||||
file.transformDeclarations(this, data)
|
|
||||||
visitAnnotatedDeclaration(file)
|
|
||||||
addGeneratedClasses()
|
|
||||||
return file.compose()
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun addGeneratedClasses() {
|
|
||||||
for ((generatedClass, owner) in generatedDeclarations) {
|
|
||||||
when (owner) {
|
|
||||||
is FirFile -> owner.addDeclaration(generatedClass)
|
|
||||||
is FirRegularClass -> owner.addDeclaration(generatedClass)
|
|
||||||
else -> throw IllegalStateException()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun <T> visitAnnotatedDeclaration(declaration: T) where T : FirDeclaration, T : FirAnnotationContainer {
|
|
||||||
val extensions = extensionPointService.classGenerationExtensions.forDeclaration(declaration, emptyList())
|
|
||||||
extensions.flatMapTo(generatedDeclarations) { it.generateClass(file, declaration) }
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun transformProperty(property: FirProperty, data: Nothing?): CompositeTransformResult<FirDeclaration> {
|
|
||||||
visitAnnotatedDeclaration(property)
|
|
||||||
return property.compose()
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun transformRegularClass(
|
|
||||||
regularClass: FirRegularClass,
|
|
||||||
data: Nothing?
|
|
||||||
): CompositeTransformResult<FirStatement> {
|
|
||||||
regularClass.transformDeclarations(this, data)
|
|
||||||
regularClass.transformCompanionObject(this, data)
|
|
||||||
visitAnnotatedDeclaration(regularClass)
|
|
||||||
return regularClass.compose()
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun transformSimpleFunction(
|
|
||||||
simpleFunction: FirSimpleFunction,
|
|
||||||
data: Nothing?
|
|
||||||
): CompositeTransformResult<FirDeclaration> {
|
|
||||||
simpleFunction.transformValueParameters(this, data)
|
|
||||||
visitAnnotatedDeclaration(simpleFunction)
|
|
||||||
return simpleFunction.compose()
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun transformConstructor(
|
|
||||||
constructor: FirConstructor,
|
|
||||||
data: Nothing?
|
|
||||||
): CompositeTransformResult<FirDeclaration> {
|
|
||||||
constructor.transformValueParameters(this, data)
|
|
||||||
visitAnnotatedDeclaration(constructor)
|
|
||||||
return constructor.compose()
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun transformValueParameter(
|
|
||||||
valueParameter: FirValueParameter,
|
|
||||||
data: Nothing?
|
|
||||||
): CompositeTransformResult<FirStatement> {
|
|
||||||
visitAnnotatedDeclaration(valueParameter)
|
|
||||||
return valueParameter.compose()
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun transformTypeAlias(typeAlias: FirTypeAlias, data: Nothing?): CompositeTransformResult<FirDeclaration> {
|
|
||||||
visitAnnotatedDeclaration(typeAlias)
|
|
||||||
return typeAlias.compose()
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun <E : FirElement> transformElement(element: E, data: Nothing?): CompositeTransformResult<E> {
|
|
||||||
return element.compose()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -8,7 +8,7 @@ package org.jetbrains.kotlin.fir.declarations
|
|||||||
enum class FirResolvePhase {
|
enum class FirResolvePhase {
|
||||||
RAW_FIR,
|
RAW_FIR,
|
||||||
ANNOTATIONS_FOR_PLUGINS, // run only if some extensions are registered
|
ANNOTATIONS_FOR_PLUGINS, // run only if some extensions are registered
|
||||||
FIRST_PLUGIN_GENERATION, // plugin phase
|
// FIRST_PLUGIN_GENERATION, // plugin phase
|
||||||
IMPORTS,
|
IMPORTS,
|
||||||
SUPER_TYPES,
|
SUPER_TYPES,
|
||||||
SEALED_CLASS_INHERITORS,
|
SEALED_CLASS_INHERITORS,
|
||||||
|
|||||||
Reference in New Issue
Block a user