[FIR] Fix behavior of FirCompilerLazyDeclarationResolverWithPhaseChecking in tests

1. There was an incorrect filtration of failures if FIR_DISABLE_LAZY_RESOLVE_CHECKS
    directive was present
2. `FirDumpHandler` potentially can call lazy resolution in presence of
    compiler plugins, so we should call `startResolvingPhase`/`finishResolvingPhase`
    in it before traversing the tree
This commit is contained in:
Dmitriy Novozhilov
2022-12-20 17:01:53 +02:00
committed by Space Team
parent c9ba9b995e
commit 54a004ef1a
2 changed files with 6 additions and 1 deletions
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.test.frontend.fir
import org.jetbrains.kotlin.test.WrappedException
import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives
import org.jetbrains.kotlin.test.frontend.fir.handlers.FirResolveContractViolationErrorHandler
import org.jetbrains.kotlin.test.model.AfterAnalysisChecker
import org.jetbrains.kotlin.test.services.TestServices
import org.jetbrains.kotlin.test.services.moduleStructure
@@ -53,7 +54,7 @@ class DisableLazyResolveChecksAfterAnalysisChecker(
override fun suppressIfNeeded(failedAssertions: List<WrappedException>): List<WrappedException> {
return if (isDisableLazyResolveDirectivePresent()) {
failedAssertions.filter { it.cause is TestWithDisableLazyResolveDirectivePassesException }
failedAssertions.filterNot { it is WrappedException.FromHandler && it.handler is FirResolveContractViolationErrorHandler }
} else {
failedAssertions
}
@@ -8,11 +8,13 @@ package org.jetbrains.kotlin.test.frontend.fir.handlers
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.backend.createFilesWithGeneratedDeclarations
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
import org.jetbrains.kotlin.fir.extensions.generatedMembers
import org.jetbrains.kotlin.fir.extensions.generatedNestedClassifiers
import org.jetbrains.kotlin.fir.renderer.FirClassMemberRenderer
import org.jetbrains.kotlin.fir.renderer.FirPackageDirectiveRenderer
import org.jetbrains.kotlin.fir.renderer.FirRenderer
import org.jetbrains.kotlin.fir.symbols.lazyDeclarationResolver
import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives
import org.jetbrains.kotlin.test.directives.model.DirectivesContainer
import org.jetbrains.kotlin.test.frontend.fir.FirOutputArtifact
@@ -38,6 +40,7 @@ class FirDumpHandler(
addAll(firFiles.values)
addAll(info.session.createFilesWithGeneratedDeclarations())
}
info.session.lazyDeclarationResolver.startResolvingPhase(FirResolvePhase.BODY_RESOLVE)
val renderer = FirRenderer(
builder = builderForModule,
@@ -47,6 +50,7 @@ class FirDumpHandler(
allFiles.forEach {
renderer.renderElementAsString(it)
}
info.session.lazyDeclarationResolver.finishResolvingPhase(FirResolvePhase.BODY_RESOLVE)
}
override fun processAfterAllModules(someAssertionWasFailed: Boolean) {