[FIR] Move initialization of common services to FirSessionBase

This commit is contained in:
Dmitriy Novozhilov
2020-05-26 16:12:07 +03:00
parent 1973060e8c
commit fec3e4faf1
8 changed files with 34 additions and 64 deletions
@@ -61,11 +61,6 @@ class FirJavaModuleBasedSession(
) as FirSymbolProvider ) as FirSymbolProvider
) )
registerComponent(
FirCorrespondingSupertypesCache::class,
FirCorrespondingSupertypesCache(this)
)
registerComponent( registerComponent(
ConeCallConflictResolverFactory::class, ConeCallConflictResolverFactory::class,
JvmCallConflictResolverFactory JvmCallConflictResolverFactory
@@ -114,28 +109,7 @@ class FirLibrarySession private constructor(
javaSymbolProvider, javaSymbolProvider,
FirDependenciesSymbolProviderImpl(this) FirDependenciesSymbolProviderImpl(this)
) )
) as FirSymbolProvider )
)
registerComponent(FirDeclaredMemberScopeProvider::class, FirDeclaredMemberScopeProvider())
registerComponent(
FirCorrespondingSupertypesCache::class,
FirCorrespondingSupertypesCache(this)
)
registerComponent(
FirExtensionService::class,
FirExtensionService(this)
)
registerComponent(
FirRegisteredPluginAnnotations::class,
FirRegisteredPluginAnnotations.create(this)
)
registerComponent(
FirPredicateBasedProvider::class,
FirPredicateBasedProvider.create(this)
) )
sessionProvider.sessionCache[moduleInfo] = this sessionProvider.sessionCache[moduleInfo] = this
@@ -11,18 +11,17 @@ import com.intellij.openapi.util.io.FileUtil
import com.intellij.openapi.vfs.CharsetToolkit import com.intellij.openapi.vfs.CharsetToolkit
import com.intellij.util.diff.FlyweightCapableTreeStructure import com.intellij.util.diff.FlyweightCapableTreeStructure
import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.FirSessionBase
import org.jetbrains.kotlin.fir.declarations.FirFile import org.jetbrains.kotlin.fir.declarations.FirFile
import org.jetbrains.kotlin.fir.lightTree.converter.DeclarationsConverter import org.jetbrains.kotlin.fir.lightTree.converter.DeclarationsConverter
import org.jetbrains.kotlin.fir.scopes.FirScopeProvider import org.jetbrains.kotlin.fir.scopes.FirScopeProvider
import org.jetbrains.kotlin.lexer.KotlinLexer import org.jetbrains.kotlin.lexer.KotlinLexer
import org.jetbrains.kotlin.parsing.KotlinParserDefinition
import org.jetbrains.kotlin.parsing.KotlinLightParser import org.jetbrains.kotlin.parsing.KotlinLightParser
import org.jetbrains.kotlin.parsing.KotlinParserDefinition
import java.io.File import java.io.File
import java.nio.file.Path import java.nio.file.Path
class LightTree2Fir( class LightTree2Fir(
val session: FirSession = object : FirSessionBase(null) {}, val session: FirSession = object : FirSession(null) {},
private val scopeProvider: FirScopeProvider, private val scopeProvider: FirScopeProvider,
private val stubMode: Boolean = false private val stubMode: Boolean = false
) { ) {
@@ -12,12 +12,13 @@ import com.intellij.psi.impl.PsiManagerEx
import com.intellij.testFramework.LightVirtualFile import com.intellij.testFramework.LightVirtualFile
import com.intellij.testFramework.TestDataPath import com.intellij.testFramework.TestDataPath
import org.jetbrains.kotlin.fir.FirRenderer import org.jetbrains.kotlin.fir.FirRenderer
import org.jetbrains.kotlin.fir.FirSessionBase import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.builder.AbstractRawFirBuilderTestCase import org.jetbrains.kotlin.fir.builder.AbstractRawFirBuilderTestCase
import org.jetbrains.kotlin.fir.builder.StubFirScopeProvider import org.jetbrains.kotlin.fir.builder.StubFirScopeProvider
import org.jetbrains.kotlin.fir.lightTree.converter.DeclarationsConverter import org.jetbrains.kotlin.fir.lightTree.converter.DeclarationsConverter
import org.jetbrains.kotlin.idea.KotlinFileType import org.jetbrains.kotlin.idea.KotlinFileType
import org.jetbrains.kotlin.parsing.* import org.jetbrains.kotlin.parsing.KotlinParser
import org.jetbrains.kotlin.parsing.KotlinParserDefinition
import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.test.JUnit3RunnerWithInners import org.jetbrains.kotlin.test.JUnit3RunnerWithInners
import org.junit.runner.RunWith import org.junit.runner.RunWith
@@ -62,7 +63,7 @@ class SimpleTestCase : AbstractRawFirBuilderTestCase() {
println(DebugUtil.nodeTreeToString(builder.treeBuilt, false)) println(DebugUtil.nodeTreeToString(builder.treeBuilt, false))
val firFromLightTreeFile = DeclarationsConverter( val firFromLightTreeFile = DeclarationsConverter(
object : FirSessionBase(null) {}, object : FirSession(null) {},
StubFirScopeProvider, StubFirScopeProvider,
true, true,
builder.lightTree builder.lightTree
@@ -16,7 +16,7 @@ import com.intellij.util.PathUtil
import org.jetbrains.kotlin.KtNodeTypes import org.jetbrains.kotlin.KtNodeTypes
import org.jetbrains.kotlin.fir.FirElement import org.jetbrains.kotlin.fir.FirElement
import org.jetbrains.kotlin.fir.FirRenderer import org.jetbrains.kotlin.fir.FirRenderer
import org.jetbrains.kotlin.fir.FirSessionBase import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.contracts.impl.FirEmptyContractDescription import org.jetbrains.kotlin.fir.contracts.impl.FirEmptyContractDescription
import org.jetbrains.kotlin.fir.declarations.FirFile import org.jetbrains.kotlin.fir.declarations.FirFile
import org.jetbrains.kotlin.fir.declarations.FirTypeParameter import org.jetbrains.kotlin.fir.declarations.FirTypeParameter
@@ -76,7 +76,7 @@ abstract class AbstractRawFirBuilderTestCase : KtParsingTestCase(
} }
protected fun KtFile.toFirFile(stubMode: Boolean): FirFile = protected fun KtFile.toFirFile(stubMode: Boolean): FirFile =
RawFirBuilder(object : FirSessionBase(null) {}, StubFirScopeProvider, stubMode).buildFirFile(this) RawFirBuilder(object : FirSession(null) {}, StubFirScopeProvider, stubMode).buildFirFile(this)
private fun FirElement.traverseChildren(result: MutableSet<FirElement> = hashSetOf()): MutableSet<FirElement> { private fun FirElement.traverseChildren(result: MutableSet<FirElement> = hashSetOf()): MutableSet<FirElement> {
if (!result.add(this)) { if (!result.add(this)) {
@@ -20,10 +20,6 @@ abstract class FirModuleBasedSession(override val moduleInfo: ModuleInfo, sessio
init { init {
registerComponent(FirQualifierResolver::class, FirQualifierResolverImpl(this)) registerComponent(FirQualifierResolver::class, FirQualifierResolverImpl(this))
registerComponent(FirTypeResolver::class, FirTypeResolverImpl(this)) registerComponent(FirTypeResolver::class, FirTypeResolverImpl(this))
registerComponent(FirDeclaredMemberScopeProvider::class, FirDeclaredMemberScopeProvider())
registerComponent(FirExtensionService::class, FirExtensionService(this))
registerComponent(FirRegisteredPluginAnnotations::class, FirRegisteredPluginAnnotations.create(this))
registerComponent(FirPredicateBasedProvider::class, FirPredicateBasedProvider.create(this))
} }
} }
@@ -0,0 +1,23 @@
/*
* 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.fir
import org.jetbrains.kotlin.fir.extensions.FirExtensionService
import org.jetbrains.kotlin.fir.extensions.FirPredicateBasedProvider
import org.jetbrains.kotlin.fir.extensions.FirRegisteredPluginAnnotations
import org.jetbrains.kotlin.fir.scopes.impl.FirDeclaredMemberScopeProvider
import org.jetbrains.kotlin.fir.types.FirCorrespondingSupertypesCache
abstract class FirSessionBase(sessionProvider: FirSessionProvider?) : FirSession(sessionProvider) {
init {
registerComponent(FirDeclaredMemberScopeProvider::class, FirDeclaredMemberScopeProvider())
registerComponent(FirCorrespondingSupertypesCache::class, FirCorrespondingSupertypesCache(this))
registerComponent(FirExtensionService::class, FirExtensionService(this))
registerComponent(FirRegisteredPluginAnnotations::class, FirRegisteredPluginAnnotations.create(this))
registerComponent(FirPredicateBasedProvider::class, FirPredicateBasedProvider.create(this))
}
}
@@ -1,11 +0,0 @@
/*
* Copyright 2010-2018 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.fir
abstract class FirSessionBase(sessionProvider: FirSessionProvider?) : FirSession(sessionProvider) {
}
@@ -34,15 +34,8 @@ class FirIdeJavaModuleBasedSession(
init { init {
val firIdeProvider = FirIdeProvider(project, scope, this, KotlinScopeProvider(::wrapScopeWithJvmMapped)) val firIdeProvider = FirIdeProvider(project, scope, this, KotlinScopeProvider(::wrapScopeWithJvmMapped))
registerComponent( registerComponent(FirProvider::class, firIdeProvider)
FirProvider::class, registerComponent(FirIdeProvider::class, firIdeProvider)
firIdeProvider
)
registerComponent(
FirIdeProvider::class,
firIdeProvider
)
registerComponent( registerComponent(
FirSymbolProvider::class, FirSymbolProvider::class,
@@ -55,11 +48,6 @@ class FirIdeJavaModuleBasedSession(
) as FirSymbolProvider ) as FirSymbolProvider
) )
registerComponent(
FirCorrespondingSupertypesCache::class,
FirCorrespondingSupertypesCache(this)
)
registerComponent( registerComponent(
ConeCallConflictResolverFactory::class, ConeCallConflictResolverFactory::class,
JvmCallConflictResolverFactory JvmCallConflictResolverFactory