[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.WrappedException
|
||||||
import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives
|
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.model.AfterAnalysisChecker
|
||||||
import org.jetbrains.kotlin.test.services.TestServices
|
import org.jetbrains.kotlin.test.services.TestServices
|
||||||
import org.jetbrains.kotlin.test.services.moduleStructure
|
import org.jetbrains.kotlin.test.services.moduleStructure
|
||||||
@@ -53,7 +54,7 @@ class DisableLazyResolveChecksAfterAnalysisChecker(
|
|||||||
|
|
||||||
override fun suppressIfNeeded(failedAssertions: List<WrappedException>): List<WrappedException> {
|
override fun suppressIfNeeded(failedAssertions: List<WrappedException>): List<WrappedException> {
|
||||||
return if (isDisableLazyResolveDirectivePresent()) {
|
return if (isDisableLazyResolveDirectivePresent()) {
|
||||||
failedAssertions.filter { it.cause is TestWithDisableLazyResolveDirectivePassesException }
|
failedAssertions.filterNot { it is WrappedException.FromHandler && it.handler is FirResolveContractViolationErrorHandler }
|
||||||
} else {
|
} else {
|
||||||
failedAssertions
|
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.FirSession
|
||||||
import org.jetbrains.kotlin.fir.backend.createFilesWithGeneratedDeclarations
|
import org.jetbrains.kotlin.fir.backend.createFilesWithGeneratedDeclarations
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
|
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.generatedMembers
|
||||||
import org.jetbrains.kotlin.fir.extensions.generatedNestedClassifiers
|
import org.jetbrains.kotlin.fir.extensions.generatedNestedClassifiers
|
||||||
import org.jetbrains.kotlin.fir.renderer.FirClassMemberRenderer
|
import org.jetbrains.kotlin.fir.renderer.FirClassMemberRenderer
|
||||||
import org.jetbrains.kotlin.fir.renderer.FirPackageDirectiveRenderer
|
import org.jetbrains.kotlin.fir.renderer.FirPackageDirectiveRenderer
|
||||||
import org.jetbrains.kotlin.fir.renderer.FirRenderer
|
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.FirDiagnosticsDirectives
|
||||||
import org.jetbrains.kotlin.test.directives.model.DirectivesContainer
|
import org.jetbrains.kotlin.test.directives.model.DirectivesContainer
|
||||||
import org.jetbrains.kotlin.test.frontend.fir.FirOutputArtifact
|
import org.jetbrains.kotlin.test.frontend.fir.FirOutputArtifact
|
||||||
@@ -38,6 +40,7 @@ class FirDumpHandler(
|
|||||||
addAll(firFiles.values)
|
addAll(firFiles.values)
|
||||||
addAll(info.session.createFilesWithGeneratedDeclarations())
|
addAll(info.session.createFilesWithGeneratedDeclarations())
|
||||||
}
|
}
|
||||||
|
info.session.lazyDeclarationResolver.startResolvingPhase(FirResolvePhase.BODY_RESOLVE)
|
||||||
|
|
||||||
val renderer = FirRenderer(
|
val renderer = FirRenderer(
|
||||||
builder = builderForModule,
|
builder = builderForModule,
|
||||||
@@ -47,6 +50,7 @@ class FirDumpHandler(
|
|||||||
allFiles.forEach {
|
allFiles.forEach {
|
||||||
renderer.renderElementAsString(it)
|
renderer.renderElementAsString(it)
|
||||||
}
|
}
|
||||||
|
info.session.lazyDeclarationResolver.finishResolvingPhase(FirResolvePhase.BODY_RESOLVE)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun processAfterAllModules(someAssertionWasFailed: Boolean) {
|
override fun processAfterAllModules(someAssertionWasFailed: Boolean) {
|
||||||
|
|||||||
Reference in New Issue
Block a user