[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.FirImplicitTypeBodyResolveTransformerAdapter
|
||||
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.visitors.FirTransformer
|
||||
|
||||
@@ -22,7 +21,7 @@ fun FirResolvePhase.createTransformerByPhase(session: FirSession, scopeSession:
|
||||
return when (this) {
|
||||
RAW_FIR -> throw AssertionError("Raw FIR building phase does not have a transformer")
|
||||
ANNOTATIONS_FOR_PLUGINS -> FirPluginAnnotationsResolveTransformer(session, scopeSession)
|
||||
FIRST_PLUGIN_GENERATION -> FirFirstGenerationTransformer()
|
||||
// FIRST_PLUGIN_GENERATION -> FirFirstGenerationTransformer()
|
||||
IMPORTS -> FirImportResolveTransformer(session)
|
||||
SUPER_TYPES -> FirSupertypeResolverTransformer(session, scopeSession)
|
||||
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 {
|
||||
RAW_FIR,
|
||||
ANNOTATIONS_FOR_PLUGINS, // run only if some extensions are registered
|
||||
FIRST_PLUGIN_GENERATION, // plugin phase
|
||||
// FIRST_PLUGIN_GENERATION, // plugin phase
|
||||
IMPORTS,
|
||||
SUPER_TYPES,
|
||||
SEALED_CLASS_INHERITORS,
|
||||
|
||||
Reference in New Issue
Block a user