[low level api] remove unused code
This commit is contained in:
-7
@@ -73,13 +73,6 @@ internal class FirModuleResolveStateDepended(
|
|||||||
originalState.resolveFirToPhase(declaration, toPhase)
|
originalState.resolveFirToPhase(declaration, toPhase)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun tryGetCachedFirFile(declaration: FirDeclaration, cache: ModuleFileCache): FirFile? {
|
|
||||||
val ktFile = declaration.containingKtFileIfAny ?: return null
|
|
||||||
cache.getCachedFirFile(ktFile)?.let { return it }
|
|
||||||
ktFile.originalKtFile?.let(cache::getCachedFirFile)?.let { return it }
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun getDiagnostics(element: KtElement, filter: DiagnosticCheckerFilter): List<KtPsiDiagnostic> =
|
override fun getDiagnostics(element: KtElement, filter: DiagnosticCheckerFilter): List<KtPsiDiagnostic> =
|
||||||
TODO("Diagnostics are not implemented for depended state")
|
TODO("Diagnostics are not implemented for depended state")
|
||||||
|
|
||||||
|
|||||||
-5
@@ -51,11 +51,6 @@ abstract class LLFirModuleResolveState {
|
|||||||
*/
|
*/
|
||||||
internal abstract fun getOrBuildFirFile(ktFile: KtFile): FirFile
|
internal abstract fun getOrBuildFirFile(ktFile: KtFile): FirFile
|
||||||
|
|
||||||
/**
|
|
||||||
* Try get [FirFile] from the cache in undefined phase
|
|
||||||
*/
|
|
||||||
internal abstract fun tryGetCachedFirFile(declaration: FirDeclaration, cache: ModuleFileCache): FirFile?
|
|
||||||
|
|
||||||
internal abstract fun getDiagnostics(element: KtElement, filter: DiagnosticCheckerFilter): List<KtPsiDiagnostic>
|
internal abstract fun getDiagnostics(element: KtElement, filter: DiagnosticCheckerFilter): List<KtPsiDiagnostic>
|
||||||
|
|
||||||
internal abstract fun collectDiagnosticsForFile(ktFile: KtFile, filter: DiagnosticCheckerFilter): Collection<KtPsiDiagnostic>
|
internal abstract fun collectDiagnosticsForFile(ktFile: KtFile, filter: DiagnosticCheckerFilter): Collection<KtPsiDiagnostic>
|
||||||
|
|||||||
-77
@@ -1,77 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
|
||||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder
|
|
||||||
|
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirModuleResolveComponents
|
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.element.builder.FirTowerDataContextAllElementsCollector
|
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.file.structure.FirElementsRecorder
|
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.file.structure.KtToFirMapping
|
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.LLFirLibraryOrLibrarySourceResolvableModuleSession
|
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirClassLikeDeclaration
|
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirFile
|
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
|
||||||
import org.jetbrains.kotlin.fir.psi
|
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
|
||||||
import org.jetbrains.kotlin.name.CallableId
|
|
||||||
import org.jetbrains.kotlin.name.ClassId
|
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
|
||||||
import java.util.*
|
|
||||||
import java.util.concurrent.ConcurrentHashMap
|
|
||||||
|
|
||||||
internal class LLFirLibraryResolveModuleFileCache: ModuleFileCache() {
|
|
||||||
|
|
||||||
private val kfFileToFirCache = ConcurrentHashMap<KtFile, ResolvedFile>()
|
|
||||||
|
|
||||||
override val classifierByClassId: ConcurrentHashMap<ClassId, Optional<FirClassLikeDeclaration>> get() = error("Should not be called")
|
|
||||||
override val callableByCallableId: ConcurrentHashMap<CallableId, List<FirCallableSymbol<*>>> get() = error("Should not be called")
|
|
||||||
|
|
||||||
override fun fileCached(file: KtFile, createValue: () -> FirFile): FirFile {
|
|
||||||
return getResolvedFile(file) { createValue() }.firFile
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun getContainerFirFile(declaration: FirDeclaration): FirFile? {
|
|
||||||
val ktFile = declaration.psi?.containingFile as? KtFile ?: return null
|
|
||||||
return getCachedFirFile(ktFile)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun getCachedFirFile(ktFile: KtFile): FirFile? {
|
|
||||||
return kfFileToFirCache[ktFile]?.firFile
|
|
||||||
}
|
|
||||||
|
|
||||||
override val firFileLockProvider: LockProvider<FirFile> = LockProvider()
|
|
||||||
|
|
||||||
fun getResolvedFile(
|
|
||||||
ktFile: KtFile,
|
|
||||||
createKtFile: (KtFile) -> FirFile
|
|
||||||
): ResolvedFile = kfFileToFirCache.computeIfAbsent(ktFile) {
|
|
||||||
val collector = FirTowerDataContextAllElementsCollector()
|
|
||||||
|
|
||||||
val scopeSession = moduleComponents.scopeSessionProvider.getScopeSession()
|
|
||||||
|
|
||||||
val firFile = createKtFile(ktFile)
|
|
||||||
|
|
||||||
moduleComponents.lazyFirDeclarationsResolver.lazyResolveFileDeclaration(
|
|
||||||
firFile,
|
|
||||||
FirResolvePhase.BODY_RESOLVE,
|
|
||||||
scopeSession,
|
|
||||||
collector,
|
|
||||||
checkPCE = true
|
|
||||||
)
|
|
||||||
|
|
||||||
ResolvedFile(
|
|
||||||
firFile,
|
|
||||||
KtToFirMapping(firFile, FirElementsRecorder()),
|
|
||||||
collector
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
class ResolvedFile(
|
|
||||||
val firFile: FirFile,
|
|
||||||
val mapping: KtToFirMapping,
|
|
||||||
val collector: FirTowerDataContextAllElementsCollector,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
-57
@@ -1,57 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
|
||||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.jetbrains.kotlin.analysis.low.level.api.fir.file.structure
|
|
||||||
|
|
||||||
import org.jetbrains.kotlin.fir.containingClass
|
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration
|
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirFile
|
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
|
|
||||||
import org.jetbrains.kotlin.fir.render
|
|
||||||
import org.jetbrains.kotlin.fir.resolve.toSymbol
|
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder.ModuleFileCache
|
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.lazy.resolve.declarationCanBeLazilyResolved
|
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.replaceFirst
|
|
||||||
import org.jetbrains.kotlin.psi.*
|
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.containingClassOrObject
|
|
||||||
|
|
||||||
internal object FileStructureUtil {
|
|
||||||
fun isStructureElementContainer(ktDeclaration: KtDeclaration): Boolean = when {
|
|
||||||
ktDeclaration !is KtClassOrObject && ktDeclaration !is KtDeclarationWithBody && ktDeclaration !is KtProperty && ktDeclaration !is KtTypeAlias -> false
|
|
||||||
ktDeclaration is KtEnumEntry -> false
|
|
||||||
ktDeclaration.containingClassOrObject is KtEnumEntry -> false
|
|
||||||
ktDeclaration is KtNamedDeclaration -> !declarationCanBeLazilyResolved(ktDeclaration)
|
|
||||||
else -> false
|
|
||||||
}
|
|
||||||
|
|
||||||
fun replaceDeclaration(firFile: FirFile, from: FirCallableDeclaration, to: FirCallableDeclaration) {
|
|
||||||
val declarations = if (from.symbol.callableId.className == null) {
|
|
||||||
firFile.declarations as MutableList<FirDeclaration>
|
|
||||||
} else {
|
|
||||||
val classLikeLookupTag = from.containingClass()
|
|
||||||
?: error("Class name should not be null for non-top-level & non-local declarations, but was null for\n${from.render()}")
|
|
||||||
val containingClass = classLikeLookupTag.toSymbol(firFile.moduleData.session)?.fir as FirRegularClass
|
|
||||||
containingClass.declarations as MutableList<FirDeclaration>
|
|
||||||
}
|
|
||||||
declarations.replaceFirst(from, to)
|
|
||||||
}
|
|
||||||
|
|
||||||
inline fun <R> withDeclarationReplaced(
|
|
||||||
firFile: FirFile,
|
|
||||||
cache: ModuleFileCache,
|
|
||||||
from: FirCallableDeclaration,
|
|
||||||
to: FirCallableDeclaration,
|
|
||||||
action: () -> R,
|
|
||||||
): R {
|
|
||||||
cache.firFileLockProvider.withWriteLock(firFile) { replaceDeclaration(firFile, from, to) }
|
|
||||||
return try {
|
|
||||||
action()
|
|
||||||
} catch (e: Throwable) {
|
|
||||||
cache.firFileLockProvider.withWriteLock(firFile) { replaceDeclaration(firFile, to, from) }
|
|
||||||
throw e
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-36
@@ -1,36 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
|
||||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.jetbrains.kotlin.analysis.low.level.api.fir.providers
|
|
||||||
|
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder.LLFirLibraryResolveModuleFileCache
|
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirClassLikeDeclaration
|
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirFile
|
|
||||||
import org.jetbrains.kotlin.fir.java.deserialization.JvmClassFileBasedSymbolProvider
|
|
||||||
import org.jetbrains.kotlin.fir.resolve.providers.FirProvider
|
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
|
||||||
import org.jetbrains.kotlin.name.ClassId
|
|
||||||
import org.jetbrains.kotlin.name.FqName
|
|
||||||
import org.jetbrains.kotlin.name.Name
|
|
||||||
|
|
||||||
internal class LLFirLibraryResolvableProvider(
|
|
||||||
override val symbolProvider: JvmClassFileBasedSymbolProvider,
|
|
||||||
private val cache: LLFirLibraryResolveModuleFileCache,
|
|
||||||
) : FirProvider() {
|
|
||||||
|
|
||||||
override fun getFirClassifierByFqName(classId: ClassId): FirClassLikeDeclaration? =
|
|
||||||
symbolProvider.getClassLikeSymbolByClassId(classId)?.fir
|
|
||||||
|
|
||||||
override fun getFirClassifierContainerFile(fqName: ClassId): FirFile =
|
|
||||||
getFirClassifierContainerFileIfAny(fqName)!!
|
|
||||||
|
|
||||||
override fun getFirClassifierContainerFileIfAny(fqName: ClassId): FirFile? = null
|
|
||||||
override fun getFirCallableContainerFile(symbol: FirCallableSymbol<*>): FirFile? = null
|
|
||||||
override fun getFirFilesByPackage(fqName: FqName): List<FirFile> = emptyList()
|
|
||||||
|
|
||||||
override fun getClassNamesInPackage(fqName: FqName): Set<Name> = shouldNotBeCalled()
|
|
||||||
|
|
||||||
private fun shouldNotBeCalled(): Nothing = error("Should not be called for LLFirLibrariesSessionProvider")
|
|
||||||
}
|
|
||||||
-3
@@ -59,9 +59,6 @@ internal abstract class LLFirResolvableModuleResolveState(
|
|||||||
return moduleComponents.firFileBuilder.buildRawFirFileWithCaching(ktFile)
|
return moduleComponents.firFileBuilder.buildRawFirFileWithCaching(ktFile)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun tryGetCachedFirFile(declaration: FirDeclaration, cache: ModuleFileCache): FirFile? =
|
|
||||||
cache.getContainerFirFile(declaration)
|
|
||||||
|
|
||||||
protected fun getModuleComponentsForElement(element: KtElement): LLFirModuleResolveComponents {
|
protected fun getModuleComponentsForElement(element: KtElement): LLFirModuleResolveComponents {
|
||||||
val ktModule = element.getKtModule()
|
val ktModule = element.getKtModule()
|
||||||
return sessionProvider.getSession(ktModule).moduleComponents
|
return sessionProvider.getSession(ktModule).moduleComponents
|
||||||
|
|||||||
Reference in New Issue
Block a user