FIR IDE: fixes after rebase

This commit is contained in:
Ilya Kirillov
2021-06-20 22:18:39 +02:00
parent cf04be5207
commit f20dd8b673
11 changed files with 17 additions and 21 deletions
@@ -15,9 +15,6 @@ import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.realPsi
import org.jetbrains.kotlin.fir.resolve.symbolProvider
import org.jetbrains.kotlin.fir.resolve.ScopeSession
import org.jetbrains.kotlin.idea.caches.project.IdeaModuleInfo
import org.jetbrains.kotlin.idea.caches.project.ModuleSourceInfo
import org.jetbrains.kotlin.idea.caches.project.getModuleInfo
import org.jetbrains.kotlin.idea.fir.low.level.api.annotations.InternalForInline
import org.jetbrains.kotlin.idea.fir.low.level.api.api.DiagnosticCheckerFilter
import org.jetbrains.kotlin.idea.fir.low.level.api.api.FirModuleResolveState
@@ -13,7 +13,6 @@ import org.jetbrains.kotlin.fir.renderWithType
import org.jetbrains.kotlin.fir.resolve.firProvider
import org.jetbrains.kotlin.fir.resolve.toFirRegularClass
import org.jetbrains.kotlin.idea.fir.low.level.api.util.getContainingFile
import org.jetbrains.kotlin.idea.util.ifFalse
class FirDeclarationDesignationWithFile(
path: List<FirDeclaration>,
@@ -77,7 +76,7 @@ private fun collectDesignationPath(declaration: FirDeclaration): List<FirDeclara
require(containingClass is FirRegularClass) {
"FirRegularClass as containing declaration expected but found ${containingClass.renderWithType()}"
}
return containingClass.isLocal.ifFalse { containingClass.collectForNonLocal().asReversed() }
return if (!containingClass.isLocal) containingClass.collectForNonLocal().asReversed() else null
}
fun FirDeclaration.collectDesignation(firFile: FirFile): FirDeclarationDesignationWithFile =
@@ -36,8 +36,6 @@ import org.jetbrains.kotlin.idea.fir.low.level.api.providers.firIdeProvider
import org.jetbrains.kotlin.idea.fir.low.level.api.sessions.FirIdeSourcesSession
import org.jetbrains.kotlin.idea.fir.low.level.api.util.getElementTextInContext
import org.jetbrains.kotlin.idea.fir.low.level.api.util.originalDeclaration
import org.jetbrains.kotlin.idea.util.getElementTextInContext
import org.jetbrains.kotlin.idea.util.ifTrue
import org.jetbrains.kotlin.idea.fir.low.level.api.util.parentOfType
import org.jetbrains.kotlin.idea.fir.low.level.api.util.parentsOfType
import org.jetbrains.kotlin.psi.*
@@ -252,7 +250,7 @@ object LowLevelFirApiFacadeForResolveOnAir {
val isInBodyReplacement = isInBodyReplacement(nonLocalDeclaration, replacement)
return state.rootModuleSession.cache.firFileLockProvider.runCustomResolveUnderLock(originalFirFile, true) {
val copiedFirDeclaration = isInBodyReplacement.ifTrue {
val copiedFirDeclaration = if (isInBodyReplacement) {
when (originalDeclaration) {
is FirSimpleFunction ->
originalDeclaration.withBodyFrom(newDeclarationWithReplacement as FirSimpleFunction)
@@ -263,7 +261,7 @@ object LowLevelFirApiFacadeForResolveOnAir {
is FirTypeAlias -> newDeclarationWithReplacement
else -> error("Not supported type ${originalDeclaration::class.simpleName}")
}
} ?: newDeclarationWithReplacement
} else newDeclarationWithReplacement
val onAirDesignation = FirDeclarationDesignationWithFile(
path = originalDesignation.path,
@@ -26,7 +26,6 @@ import org.jetbrains.kotlin.idea.fir.low.level.api.transformers.LazyTransformerF
import org.jetbrains.kotlin.idea.fir.low.level.api.util.checkCanceled
import org.jetbrains.kotlin.idea.fir.low.level.api.util.ensurePhase
import org.jetbrains.kotlin.idea.fir.low.level.api.util.findSourceNonLocalFirDeclaration
import org.jetbrains.kotlin.idea.util.ifTrue
import org.jetbrains.kotlin.idea.fir.low.level.api.transformers.*
import org.jetbrains.kotlin.idea.fir.low.level.api.util.*
import org.jetbrains.kotlin.psi.*
@@ -160,7 +159,7 @@ internal class FirLazyDeclarationResolver(private val firFileBuilder: FirFileBui
val transformersToApply = designations.mapNotNull {
val needToResolve = it.resolvePhaseForAllDeclarations(includeDeclarationPhase = false) < currentPhase
needToResolve.ifTrue {
if (needToResolve) {
LazyTransformerFactory.createLazyTransformer(
phase = currentPhase,
designation = it,
@@ -172,7 +171,7 @@ internal class FirLazyDeclarationResolver(private val firFileBuilder: FirFileBui
firProviderInterceptor = null,
checkPCE = checkPCE,
)
}
} else null
}
if (transformersToApply.isEmpty()) continue
@@ -5,7 +5,6 @@
package org.jetbrains.kotlin.idea.fir.low.level.api.lazy.resolve
import com.intellij.psi.util.parentOfType
import org.jetbrains.kotlin.fir.FirFakeSourceElement
import org.jetbrains.kotlin.fir.FirFakeSourceElementKind
import org.jetbrains.kotlin.fir.declarations.*
@@ -17,6 +16,7 @@ import org.jetbrains.kotlin.idea.fir.low.level.api.element.builder.getNonLocalCo
import org.jetbrains.kotlin.idea.fir.low.level.api.file.builder.FirFileBuilder
import org.jetbrains.kotlin.idea.fir.low.level.api.file.builder.ModuleFileCache
import org.jetbrains.kotlin.idea.fir.low.level.api.util.findSourceNonLocalFirDeclaration
import org.jetbrains.kotlin.idea.fir.low.level.api.util.parentOfType
import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.psiUtil.containingClassOrObject
import org.jetbrains.kotlin.psi.psiUtil.getParentOfType
@@ -6,7 +6,6 @@
package org.jetbrains.kotlin.idea.fir.low.level.api.transformers
import org.jetbrains.annotations.TestOnly
import org.jetbrains.kotlin.asJava.classes.lazyPub
import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.idea.fir.low.level.api.FirPhaseRunner
import org.jetbrains.kotlin.idea.fir.low.level.api.api.FirDeclarationDesignation
@@ -16,7 +16,6 @@ import org.jetbrains.kotlin.fir.scopes.FirTypeScope
import org.jetbrains.kotlin.fir.session.FirSessionFactory
import org.jetbrains.kotlin.fir.visitors.FirVisitorVoid
import org.jetbrains.kotlin.idea.fir.low.level.api.api.FirDeclarationDesignation
import org.jetbrains.kotlin.idea.fir.low.level.api.api.FirDeclarationUntypedDesignation
import org.jetbrains.kotlin.idea.fir.low.level.api.api.FirModuleResolveState
import org.jetbrains.kotlin.idea.fir.low.level.api.compiler.based.FrontendApiSingleTestDataFileTest
import org.jetbrains.kotlin.idea.fir.low.level.api.lazy.resolve.RawFirNonLocalDeclarationBuilder
@@ -34,6 +34,7 @@ import org.jetbrains.kotlin.idea.fir.low.level.api.test.base.DeclarationProvider
import org.jetbrains.kotlin.idea.fir.low.level.api.test.base.KotlinOutOfBlockModificationTrackerFactoryTestImpl
import org.jetbrains.kotlin.idea.fir.low.level.api.test.base.KtPackageProviderTestImpl
import org.jetbrains.kotlin.idea.fir.low.level.api.test.base.SealedClassInheritorsProviderTestImpl
import org.jetbrains.kotlin.idea.fir.low.level.api.transformers.FirLazyTransformerForIDE
import org.jetbrains.kotlin.load.kotlin.PackagePartProvider
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.platform.TargetPlatform
@@ -129,7 +130,13 @@ abstract class FrontendApiTestWithTestdata : AbstractKotlinCompilerTest() {
if (ignoreTest(filePath, configuration)) {
return
}
super.runTest(filePath)
val oldEnableDeepEnsure = FirLazyTransformerForIDE.enableDeepEnsure
try {
FirLazyTransformerForIDE.enableDeepEnsure = true
super.runTest(filePath)
} finally {
FirLazyTransformerForIDE.enableDeepEnsure = oldEnableDeepEnsure
}
}
private fun ignoreTest(filePath: String, configuration: TestConfiguration): Boolean {
@@ -21,7 +21,6 @@ import org.jetbrains.kotlin.idea.asJava.applyIf
import org.jetbrains.kotlin.idea.fir.low.level.api.api.tryCollectDesignation
import org.jetbrains.kotlin.idea.frontend.api.components.KtTypeRendererOptions
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.idea.util.ifTrue
import org.jetbrains.kotlin.name.StandardClassIds
import org.jetbrains.kotlin.renderer.render
@@ -201,7 +200,7 @@ internal class ConeTypeIdeRenderer(
else -> error("Invalid declaration ${declaration.renderWithType()}")
} ?: return listOf(declaration)
return containingClass.isLocal.ifTrue { containingClass.collectForLocal().reversed() }
return if(containingClass.isLocal) { containingClass.collectForLocal().reversed() } else null
}
private fun StringBuilder.renderTypeConstructorAndArguments(type: ConeClassLikeType) {
@@ -18,7 +18,6 @@ import org.jetbrains.kotlin.idea.frontend.api.fir.utils.weakRef
import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtAnnotationCall
import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtTypeAndAnnotations
import org.jetbrains.kotlin.idea.frontend.api.types.KtType
import org.jetbrains.kotlin.idea.util.ifTrue
internal class KtFirTypeAndAnnotations<T : FirDeclaration>(
private val containingDeclaration: FirRefWithValidityCheck<T>,
@@ -65,9 +64,9 @@ internal fun FirRefWithValidityCheck<FirClass<*>>.superTypesAndAnnotationsList(b
internal fun FirRefWithValidityCheck<FirRegularClass>.superTypesAndAnnotationsListForRegularClass(builder: KtSymbolByFirBuilder): List<KtTypeAndAnnotations> {
return withFir { fir ->
(fir.resolvePhase >= FirResolvePhase.SUPER_TYPES).ifTrue {
if(fir.resolvePhase >= FirResolvePhase.SUPER_TYPES) {
fir.superTypeRefs.mapToTypeAndAnnotations(this, builder)
}
} else null
} ?: withFirWithPossibleResolveInside(ResolveType.NoResolve) { fir ->
fir.resolveSupertypesInTheAir(builder.rootSession).mapToTypeAndAnnotations(this, builder)
}