[LL API] Pass the project instance to ProjectStructureProvider
Eliminate unnecessary PSI tree traversal by providing the 'Project' instance explicitly.
This commit is contained in:
+3
-2
@@ -68,8 +68,9 @@ class CliFe10AnalysisFacade : Fe10AnalysisFacade {
|
||||
}
|
||||
|
||||
private fun getHandler(useSiteElement: KtElement): KtFe10AnalysisHandlerExtension {
|
||||
val ktModule = ProjectStructureProvider.getModule(useSiteElement, contextualModule = null)
|
||||
return KtFe10AnalysisHandlerExtension.getInstance(ktModule.project, ktModule)
|
||||
val project = useSiteElement.project
|
||||
val ktModule = ProjectStructureProvider.getModule(project, useSiteElement, contextualModule = null)
|
||||
return KtFe10AnalysisHandlerExtension.getInstance(project, ktModule)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+5
-4
@@ -5,6 +5,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.analysis.api.descriptors
|
||||
|
||||
import com.intellij.openapi.project.Project
|
||||
import org.jetbrains.kotlin.analysis.api.KtAnalysisApiInternals
|
||||
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
|
||||
import org.jetbrains.kotlin.analysis.api.components.*
|
||||
@@ -26,9 +27,9 @@ class KtFe10AnalysisSession(
|
||||
val analysisContext: Fe10AnalysisContext,
|
||||
override val useSiteModule: KtModule
|
||||
) : KtAnalysisSession(analysisContext.token) {
|
||||
constructor(contextElement: KtElement, token: KtLifetimeToken) : this(
|
||||
Fe10AnalysisContext(Fe10AnalysisFacade.getInstance(contextElement.project), contextElement, token),
|
||||
ProjectStructureProvider.getModule(contextElement, contextualModule = null)
|
||||
constructor(project: Project, contextElement: KtElement, token: KtLifetimeToken) : this(
|
||||
Fe10AnalysisContext(Fe10AnalysisFacade.getInstance(project), contextElement, token),
|
||||
ProjectStructureProvider.getModule(project, contextElement, contextualModule = null)
|
||||
)
|
||||
|
||||
|
||||
@@ -70,6 +71,6 @@ class KtFe10AnalysisSession(
|
||||
|
||||
override fun createContextDependentCopy(originalKtFile: KtFile, elementToReanalyze: KtElement): KtAnalysisSession =
|
||||
withValidityAssertion {
|
||||
KtFe10AnalysisSession(elementToReanalyze, token)
|
||||
KtFe10AnalysisSession(originalKtFile.project, elementToReanalyze, token)
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -18,7 +18,7 @@ import java.lang.UnsupportedOperationException
|
||||
@OptIn(KtAnalysisApiInternals::class)
|
||||
class KtFe10AnalysisSessionProvider(project: Project) : KtAnalysisSessionProvider(project) {
|
||||
override fun getAnalysisSession(useSiteKtElement: KtElement, factory: KtLifetimeTokenFactory): KtAnalysisSession {
|
||||
return KtFe10AnalysisSession(useSiteKtElement, factory.create(project))
|
||||
return KtFe10AnalysisSession(project, useSiteKtElement, factory.create(project))
|
||||
}
|
||||
|
||||
override fun getAnalysisSessionByUseSiteKtModule(useSiteKtModule: KtModule, factory: KtLifetimeTokenFactory): KtAnalysisSession {
|
||||
|
||||
Reference in New Issue
Block a user