[FIR] Validate generated member declarations

This commit is contained in:
Dmitriy Novozhilov
2021-10-11 17:32:32 +03:00
committed by TeamCityServer
parent 7f836ee6c3
commit fce6efe412
@@ -13,6 +13,7 @@ import org.jetbrains.kotlin.fir.caches.getValue
import org.jetbrains.kotlin.fir.declarations.FirClass import org.jetbrains.kotlin.fir.declarations.FirClass
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
import org.jetbrains.kotlin.fir.declarations.utils.classId import org.jetbrains.kotlin.fir.declarations.utils.classId
import org.jetbrains.kotlin.fir.declarations.validate
import org.jetbrains.kotlin.fir.extensions.FirDeclarationGenerationExtension import org.jetbrains.kotlin.fir.extensions.FirDeclarationGenerationExtension
import org.jetbrains.kotlin.fir.extensions.declarationGenerators import org.jetbrains.kotlin.fir.extensions.declarationGenerators
import org.jetbrains.kotlin.fir.extensions.extensionService import org.jetbrains.kotlin.fir.extensions.extensionService
@@ -56,11 +57,15 @@ class FirGeneratedClassDeclaredMemberScope(
// ------------------------------------------ generators ------------------------------------------ // ------------------------------------------ generators ------------------------------------------
private fun generateMemberFunctions(name: Name): List<FirNamedFunctionSymbol> { private fun generateMemberFunctions(name: Name): List<FirNamedFunctionSymbol> {
return extensions.flatMap { it.generateFunctions(CallableId(firClass.classId, name), firClass.symbol) } return extensions
.flatMap { it.generateFunctions(CallableId(firClass.classId, name), firClass.symbol) }
.onEach { it.fir.validate() }
} }
private fun generateMemberProperties(name: Name): List<FirPropertySymbol> { private fun generateMemberProperties(name: Name): List<FirPropertySymbol> {
return extensions.flatMap { it.generateProperties(CallableId(firClass.classId, name), firClass.symbol) } return extensions
.flatMap { it.generateProperties(CallableId(firClass.classId, name), firClass.symbol) }
.onEach { it.fir.validate() }
} }
private fun generateConstructors(): List<FirConstructorSymbol> { private fun generateConstructors(): List<FirConstructorSymbol> {
@@ -70,7 +75,7 @@ class FirGeneratedClassDeclaredMemberScope(
} else { } else {
CallableId(classId.asSingleFqName().parent(), classId.shortClassName) CallableId(classId.asSingleFqName().parent(), classId.shortClassName)
} }
return extensions.flatMap { it.generateConstructors(callableId) } return extensions.flatMap { it.generateConstructors(callableId) }.onEach { }
} }
// ------------------------------------------ scope methods ------------------------------------------ // ------------------------------------------ scope methods ------------------------------------------