[FIR] Move Jsr305State from FirSession to separate component

This commit is contained in:
Dmitriy Novozhilov
2020-09-14 15:26:00 +03:00
parent 93d63f7c66
commit d4891cb464
7 changed files with 27 additions and 9 deletions
@@ -11,6 +11,7 @@ import org.jetbrains.kotlin.fir.extensions.FirExtensionService
import org.jetbrains.kotlin.fir.extensions.FirPredicateBasedProvider import org.jetbrains.kotlin.fir.extensions.FirPredicateBasedProvider
import org.jetbrains.kotlin.fir.extensions.FirRegisteredPluginAnnotations import org.jetbrains.kotlin.fir.extensions.FirRegisteredPluginAnnotations
import org.jetbrains.kotlin.fir.java.FirJavaVisibilityChecker import org.jetbrains.kotlin.fir.java.FirJavaVisibilityChecker
import org.jetbrains.kotlin.fir.java.enhancement.FirJsr305StateContainer
import org.jetbrains.kotlin.fir.resolve.* import org.jetbrains.kotlin.fir.resolve.*
import org.jetbrains.kotlin.fir.resolve.calls.ConeCallConflictResolverFactory import org.jetbrains.kotlin.fir.resolve.calls.ConeCallConflictResolverFactory
import org.jetbrains.kotlin.fir.resolve.calls.FirSyntheticNamesProvider import org.jetbrains.kotlin.fir.resolve.calls.FirSyntheticNamesProvider
@@ -52,10 +53,11 @@ fun FirModuleBasedSession.registerResolveComponents() {
* Resolve components which have specific implementations on JVM * Resolve components which have specific implementations on JVM
*/ */
@OptIn(SessionConfiguration::class) @OptIn(SessionConfiguration::class)
fun FirModuleBasedSession.registerJavaSpecificComponents() { fun FirModuleBasedSession.registerJavaSpecificResolveComponents() {
register(FirVisibilityChecker::class, FirJavaVisibilityChecker) register(FirVisibilityChecker::class, FirJavaVisibilityChecker)
register(ConeCallConflictResolverFactory::class, JvmCallConflictResolverFactory) register(ConeCallConflictResolverFactory::class, JvmCallConflictResolverFactory)
register(FirEffectiveVisibilityResolver::class, FirJvmEffectiveVisibilityResolver(this)) register(FirEffectiveVisibilityResolver::class, FirJvmEffectiveVisibilityResolver(this))
register(FirPlatformClassMapper::class, FirJavaClassMapper(this)) register(FirPlatformClassMapper::class, FirJavaClassMapper(this))
register(FirSyntheticNamesProvider::class, FirJavaSyntheticNamesProvider) register(FirSyntheticNamesProvider::class, FirJavaSyntheticNamesProvider)
register(FirJsr305StateContainer::class, FirJsr305StateContainer.Default)
} }
@@ -67,7 +67,7 @@ object FirSessionFactory {
return FirJavaModuleBasedSession(moduleInfo, sessionProvider).apply { return FirJavaModuleBasedSession(moduleInfo, sessionProvider).apply {
registerCommonComponents() registerCommonComponents()
registerResolveComponents() registerResolveComponents()
registerJavaSpecificComponents() registerJavaSpecificResolveComponents()
val kotlinScopeProvider = KotlinScopeProvider(::wrapScopeWithJvmMapped) val kotlinScopeProvider = KotlinScopeProvider(::wrapScopeWithJvmMapped)
@@ -0,0 +1,18 @@
/*
* 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.java.enhancement
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.FirSessionComponent
import org.jetbrains.kotlin.utils.Jsr305State
class FirJsr305StateContainer(val jsr305State: Jsr305State) : FirSessionComponent {
companion object {
val Default: FirJsr305StateContainer = FirJsr305StateContainer(Jsr305State.DEFAULT)
}
}
val FirSession.jsr305StateContainer: FirJsr305StateContainer by FirSession.sessionComponentAccessor()
@@ -47,7 +47,7 @@ class FirSignatureEnhancement(
private val javaTypeParameterStack: JavaTypeParameterStack = private val javaTypeParameterStack: JavaTypeParameterStack =
if (owner is FirJavaClass) owner.javaTypeParameterStack else JavaTypeParameterStack.EMPTY if (owner is FirJavaClass) owner.javaTypeParameterStack else JavaTypeParameterStack.EMPTY
private val jsr305State: Jsr305State = session.jsr305State ?: Jsr305State.DEFAULT private val jsr305State: Jsr305State = session.jsr305StateContainer.jsr305State
private val typeQualifierResolver = FirAnnotationTypeQualifierResolver(session, jsr305State) private val typeQualifierResolver = FirAnnotationTypeQualifierResolver(session, jsr305State)
@@ -30,8 +30,6 @@ abstract class FirSession @PrivateSessionConstructor constructor(val sessionProv
open val moduleInfo: ModuleInfo? get() = null open val moduleInfo: ModuleInfo? get() = null
val jsr305State: Jsr305State? get() = null
val builtinTypes: BuiltinTypes = BuiltinTypes() val builtinTypes: BuiltinTypes = BuiltinTypes()
final override val typeRegistry: TypeRegistry<FirSessionComponent, FirSessionComponent> = Companion final override val typeRegistry: TypeRegistry<FirSessionComponent, FirSessionComponent> = Companion
@@ -1,3 +1,3 @@
package typeReferenceError package typeReferenceError
class Pair<<!SYNTAX!><!>:<!UNRESOLVED_REFERENCE!>(val c: <!SYNTAX!><!SYNTAX!><!>fun<!><!SYNTAX!><!> <!UNRESOLVED_REFERENCE!>main<!><!>() class Pair<<!SYNTAX!><!>:<!UNRESOLVED_REFERENCE!>(val c: <!SYNTAX!><!SYNTAX!><!>fun<!><!SYNTAX!><!> main<!>()
@@ -23,7 +23,7 @@ import org.jetbrains.kotlin.fir.resolve.transformers.FirPhaseManager
import org.jetbrains.kotlin.fir.scopes.KotlinScopeProvider import org.jetbrains.kotlin.fir.scopes.KotlinScopeProvider
import org.jetbrains.kotlin.fir.session.FirSessionFactory import org.jetbrains.kotlin.fir.session.FirSessionFactory
import org.jetbrains.kotlin.fir.session.registerCommonComponents import org.jetbrains.kotlin.fir.session.registerCommonComponents
import org.jetbrains.kotlin.fir.session.registerJavaSpecificComponents import org.jetbrains.kotlin.fir.session.registerJavaSpecificResolveComponents
import org.jetbrains.kotlin.fir.session.registerResolveComponents import org.jetbrains.kotlin.fir.session.registerResolveComponents
import org.jetbrains.kotlin.idea.caches.project.ModuleSourceInfo import org.jetbrains.kotlin.idea.caches.project.ModuleSourceInfo
import org.jetbrains.kotlin.idea.caches.resolve.IDEPackagePartProvider import org.jetbrains.kotlin.idea.caches.resolve.IDEPackagePartProvider
@@ -89,7 +89,7 @@ internal object FirIdeSessionFactory {
} }
) as FirSymbolProvider ) as FirSymbolProvider
) )
registerJavaSpecificComponents() registerJavaSpecificResolveComponents()
FirSessionFactory.FirSessionConfigurator(this).apply { FirSessionFactory.FirSessionConfigurator(this).apply {
registerCommonCheckers() registerCommonCheckers()
init() init()
@@ -115,7 +115,7 @@ internal object FirIdeSessionFactory {
val kotlinClassFinder = VirtualFileFinderFactory.getInstance(project).create(searchScope) val kotlinClassFinder = VirtualFileFinderFactory.getInstance(project).create(searchScope)
return FirIdeLibrariesSession(moduleInfo, sessionProvider, searchScope).apply { return FirIdeLibrariesSession(moduleInfo, sessionProvider, searchScope).apply {
registerCommonComponents() registerCommonComponents()
registerJavaSpecificComponents() registerJavaSpecificResolveComponents()
val javaSymbolProvider = JavaSymbolProvider(this, sessionProvider.project, searchScope) val javaSymbolProvider = JavaSymbolProvider(this, sessionProvider.project, searchScope)