[FIR] Make FirErrorConstructor a FirDiagnosticHolder

This commit is contained in:
Nikolay Lunyak
2023-08-17 15:45:17 +03:00
committed by Space Team
parent 673b4b4d52
commit f238ffa4bf
35 changed files with 239 additions and 46 deletions
@@ -18,7 +18,6 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.util.isScriptStatement
import org.jetbrains.kotlin.fir.FirElement
import org.jetbrains.kotlin.fir.correspondingProperty
import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.declarations.impl.FirErrorConstructor
import org.jetbrains.kotlin.fir.declarations.impl.FirPrimaryConstructor
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirCodeFragmentSymbol
@@ -261,13 +260,16 @@ internal class NonReanalyzableClassDeclarationStructureElement(
override fun visitConstructor(constructor: FirConstructor, data: MutableMap<KtElement, FirElement>) {
if (
(constructor is FirPrimaryConstructor || constructor is FirErrorConstructor) &&
(constructor is FirPrimaryConstructor || constructor is FirErrorPrimaryConstructor) &&
constructor.source?.kind == KtFakeSourceElementKind.ImplicitConstructor
) {
NonReanalyzableNonClassDeclarationStructureElement.Recorder.visitConstructor(constructor, data)
}
}
override fun visitErrorPrimaryConstructor(errorPrimaryConstructor: FirErrorPrimaryConstructor, data: MutableMap<KtElement, FirElement>) =
visitConstructor(errorPrimaryConstructor, data)
override fun visitAnonymousInitializer(anonymousInitializer: FirAnonymousInitializer, data: MutableMap<KtElement, FirElement>) {
}
@@ -448,6 +448,9 @@ private abstract class FirLazyBodiesCalculatorTransformer : FirTransformer<Persi
return constructor
}
override fun transformErrorPrimaryConstructor(errorPrimaryConstructor: FirErrorPrimaryConstructor, data: PersistentList<FirRegularClass>) =
transformConstructor(errorPrimaryConstructor, data)
override fun transformProperty(property: FirProperty, data: PersistentList<FirRegularClass>): FirProperty {
if (needCalculatingLazyBodyForProperty(property)) {
val designation = FirDesignation(data, property)