[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:
committed by
Space Team
parent
c9ba9b995e
commit
54a004ef1a
+2
-1
@@ -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
|
||||
}
|
||||
|
||||
+4
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user