[LL API] Migrate 'getKtModule()' usages to 'ProjectStructureProvider'

Ensure the contextual module is passed wherever possible.

^KT-57559 Fixed
This commit is contained in:
Yan Zhulanow
2023-04-18 17:25:34 +09:00
committed by Space Team
parent c90d094af6
commit e9c077220f
31 changed files with 187 additions and 133 deletions
@@ -35,6 +35,8 @@ import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.psi.KtScript
class SymbolKotlinAsJavaSupport(project: Project) : KotlinAsJavaSupportBase<KtModule>(project) {
private val projectStructureProvider by lazy { ProjectStructureProvider.getInstance(project) }
override fun findClassOrObjectDeclarationsInPackage(
packageFqName: FqName,
searchScope: GlobalSearchScope
@@ -92,16 +94,21 @@ class SymbolKotlinAsJavaSupport(project: Project) : KotlinAsJavaSupportBase<KtMo
.map { fqn.child(it) }
override fun createInstanceOfLightScript(script: KtScript): KtLightClass {
return SymbolLightClassForScript(script, script.getKtModule(project))
val module = ProjectStructureProvider.getModule(script, contextualModule = null)
return SymbolLightClassForScript(script, module)
}
override fun KtFile.findModule(): KtModule = getKtModule(project)
override fun KtFile.findModule(): KtModule {
return projectStructureProvider.getModule(this, contextualModule = null)
}
override fun declarationLocation(file: KtFile): DeclarationLocation? = when (file.getKtModule(project)) {
is KtSourceModule -> DeclarationLocation.ProjectSources
is KtLibraryModule -> DeclarationLocation.LibraryClasses
is KtLibrarySourceModule -> DeclarationLocation.LibrarySources
else -> null
override fun declarationLocation(file: KtFile): DeclarationLocation? {
return when (projectStructureProvider.getModule(file, contextualModule = null)) {
is KtSourceModule -> DeclarationLocation.ProjectSources
is KtLibraryModule -> DeclarationLocation.LibraryClasses
is KtLibrarySourceModule -> DeclarationLocation.LibrarySources
else -> null
}
}
override fun createInstanceOfDecompiledLightClass(classOrObject: KtClassOrObject): KtLightClass? {
@@ -109,7 +116,8 @@ class SymbolKotlinAsJavaSupport(project: Project) : KotlinAsJavaSupportBase<KtMo
}
override fun createInstanceOfLightClass(classOrObject: KtClassOrObject): KtLightClass? {
return createSymbolLightClassNoCache(classOrObject, classOrObject.getKtModule(project))
val module = projectStructureProvider.getModule(classOrObject, contextualModule = null)
return createSymbolLightClassNoCache(classOrObject, module)
}
override fun createInstanceOfDecompiledLightFacade(facadeFqName: FqName, files: List<KtFile>): KtLightClassForFacade? {
@@ -128,10 +136,10 @@ class SymbolKotlinAsJavaSupport(project: Project) : KotlinAsJavaSupportBase<KtMo
return project.createAllLibrariesModificationTracker()
}
override fun createInstanceOfLightFacade(
facadeFqName: FqName,
files: List<KtFile>,
): KtLightClassForFacade = SymbolLightClassForFacade(facadeFqName, files, files.first().getKtModule(project))
override fun createInstanceOfLightFacade(facadeFqName: FqName, files: List<KtFile>): KtLightClassForFacade {
val module = projectStructureProvider.getModule(files.first(), contextualModule = null)
return SymbolLightClassForFacade(facadeFqName, files, module)
}
override val KtModule.contentSearchScope: GlobalSearchScope get() = this.contentScope
@@ -168,7 +176,10 @@ class SymbolKotlinAsJavaSupport(project: Project) : KotlinAsJavaSupportBase<KtMo
override fun getFakeLightClass(classOrObject: KtClassOrObject): KtFakeLightClass = SymbolBasedFakeLightClass(classOrObject)
private fun KtElement.isFromSourceOrLibraryBinary(project: Project): Boolean = getKtModule(project).isFromSourceOrLibraryBinary()
private fun KtElement.isFromSourceOrLibraryBinary(): Boolean {
val module = projectStructureProvider.getModule(this, contextualModule = null)
return module.isFromSourceOrLibraryBinary()
}
private fun KtModule.isFromSourceOrLibraryBinary() = when (this) {
is KtSourceModule -> true
@@ -11,6 +11,7 @@ import com.intellij.psi.PsiModifier
import com.intellij.psi.PsiReferenceList
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
import org.jetbrains.kotlin.analysis.api.annotations.hasAnnotation
import org.jetbrains.kotlin.analysis.api.getModule
import org.jetbrains.kotlin.analysis.api.symbols.*
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolWithMembers
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolWithTypeParameters
@@ -21,7 +22,6 @@ import org.jetbrains.kotlin.analysis.api.types.KtType
import org.jetbrains.kotlin.analysis.api.types.KtTypeMappingMode
import org.jetbrains.kotlin.analysis.project.structure.KtModule
import org.jetbrains.kotlin.analysis.project.structure.KtSourceModule
import org.jetbrains.kotlin.analysis.project.structure.getKtModuleOfTypeSafe
import org.jetbrains.kotlin.analysis.utils.errors.requireIsInstance
import org.jetbrains.kotlin.analysis.utils.printer.parentOfType
import org.jetbrains.kotlin.asJava.builder.LightMemberOriginForDeclaration
@@ -537,7 +537,7 @@ internal fun KtSymbolWithMembers.createInnerClasses(
}
val jvmDefaultMode = classOrObject
?.getKtModuleOfTypeSafe<KtSourceModule>()
?.let { getModule(it) as? KtSourceModule }
?.languageVersionSettings
?.getFlag(JvmAnalysisFlags.jvmDefaultMode)
?: JvmDefaultMode.DEFAULT