[FIR] Move Jsr305State from FirSession to separate component
This commit is contained in:
+3
-1
@@ -11,6 +11,7 @@ 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.java.FirJavaVisibilityChecker
|
||||
import org.jetbrains.kotlin.fir.java.enhancement.FirJsr305StateContainer
|
||||
import org.jetbrains.kotlin.fir.resolve.*
|
||||
import org.jetbrains.kotlin.fir.resolve.calls.ConeCallConflictResolverFactory
|
||||
import org.jetbrains.kotlin.fir.resolve.calls.FirSyntheticNamesProvider
|
||||
@@ -52,10 +53,11 @@ fun FirModuleBasedSession.registerResolveComponents() {
|
||||
* Resolve components which have specific implementations on JVM
|
||||
*/
|
||||
@OptIn(SessionConfiguration::class)
|
||||
fun FirModuleBasedSession.registerJavaSpecificComponents() {
|
||||
fun FirModuleBasedSession.registerJavaSpecificResolveComponents() {
|
||||
register(FirVisibilityChecker::class, FirJavaVisibilityChecker)
|
||||
register(ConeCallConflictResolverFactory::class, JvmCallConflictResolverFactory)
|
||||
register(FirEffectiveVisibilityResolver::class, FirJvmEffectiveVisibilityResolver(this))
|
||||
register(FirPlatformClassMapper::class, FirJavaClassMapper(this))
|
||||
register(FirSyntheticNamesProvider::class, FirJavaSyntheticNamesProvider)
|
||||
register(FirJsr305StateContainer::class, FirJsr305StateContainer.Default)
|
||||
}
|
||||
|
||||
@@ -67,7 +67,7 @@ object FirSessionFactory {
|
||||
return FirJavaModuleBasedSession(moduleInfo, sessionProvider).apply {
|
||||
registerCommonComponents()
|
||||
registerResolveComponents()
|
||||
registerJavaSpecificComponents()
|
||||
registerJavaSpecificResolveComponents()
|
||||
|
||||
val kotlinScopeProvider = KotlinScopeProvider(::wrapScopeWithJvmMapped)
|
||||
|
||||
|
||||
+18
@@ -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()
|
||||
+1
-1
@@ -47,7 +47,7 @@ class FirSignatureEnhancement(
|
||||
private val javaTypeParameterStack: JavaTypeParameterStack =
|
||||
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)
|
||||
|
||||
|
||||
@@ -30,8 +30,6 @@ abstract class FirSession @PrivateSessionConstructor constructor(val sessionProv
|
||||
|
||||
open val moduleInfo: ModuleInfo? get() = null
|
||||
|
||||
val jsr305State: Jsr305State? get() = null
|
||||
|
||||
val builtinTypes: BuiltinTypes = BuiltinTypes()
|
||||
|
||||
final override val typeRegistry: TypeRegistry<FirSessionComponent, FirSessionComponent> = Companion
|
||||
|
||||
+1
-1
@@ -1,3 +1,3 @@
|
||||
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<!>()
|
||||
|
||||
+3
-3
@@ -23,7 +23,7 @@ import org.jetbrains.kotlin.fir.resolve.transformers.FirPhaseManager
|
||||
import org.jetbrains.kotlin.fir.scopes.KotlinScopeProvider
|
||||
import org.jetbrains.kotlin.fir.session.FirSessionFactory
|
||||
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.idea.caches.project.ModuleSourceInfo
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.IDEPackagePartProvider
|
||||
@@ -89,7 +89,7 @@ internal object FirIdeSessionFactory {
|
||||
}
|
||||
) as FirSymbolProvider
|
||||
)
|
||||
registerJavaSpecificComponents()
|
||||
registerJavaSpecificResolveComponents()
|
||||
FirSessionFactory.FirSessionConfigurator(this).apply {
|
||||
registerCommonCheckers()
|
||||
init()
|
||||
@@ -115,7 +115,7 @@ internal object FirIdeSessionFactory {
|
||||
val kotlinClassFinder = VirtualFileFinderFactory.getInstance(project).create(searchScope)
|
||||
return FirIdeLibrariesSession(moduleInfo, sessionProvider, searchScope).apply {
|
||||
registerCommonComponents()
|
||||
registerJavaSpecificComponents()
|
||||
registerJavaSpecificResolveComponents()
|
||||
|
||||
val javaSymbolProvider = JavaSymbolProvider(this, sessionProvider.project, searchScope)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user