diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/collectors/FirDiagnosticsCollector.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/collectors/FirDiagnosticsCollector.kt index 7930cdd12f5..9c654dca277 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/collectors/FirDiagnosticsCollector.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/collectors/FirDiagnosticsCollector.kt @@ -9,7 +9,6 @@ import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.analysis.checkersComponent import org.jetbrains.kotlin.fir.analysis.extensions.additionalCheckers import org.jetbrains.kotlin.fir.extensions.extensionService -import org.jetbrains.kotlin.fir.extensions.oldExtensionsService object FirDiagnosticsCollector { fun create(session: FirSession): AbstractDiagnosticCollector { diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/extensions/FirOldExtensionsService.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/extensions/FirOldExtensionsService.kt deleted file mode 100644 index cd5e979265d..00000000000 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/extensions/FirOldExtensionsService.kt +++ /dev/null @@ -1,178 +0,0 @@ -/* - * 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.extensions - -import com.google.common.collect.LinkedHashMultimap -import com.google.common.collect.Multimap -import org.jetbrains.kotlin.fir.FirAnnotationContainer -import org.jetbrains.kotlin.fir.FirSession -import org.jetbrains.kotlin.fir.FirSessionComponent -import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin -import org.jetbrains.kotlin.fir.declarations.FirPluginKey -import org.jetbrains.kotlin.fir.declarations.FirRegularClass -import org.jetbrains.kotlin.fir.resolve.fqName -import org.jetbrains.kotlin.fir.utils.ComponentArrayOwner -import org.jetbrains.kotlin.fir.utils.TypeRegistry -import kotlin.properties.ReadOnlyProperty -import kotlin.reflect.KClass -import kotlin.reflect.KProperty - -class OldFirRegisteredExtension

( - val extensionsWithAllMode: List

, - val extensionsWithAnnotatedMode: Multimap, - val extensionsWithAllInAnnotatedMode: Multimap, - val extensionsByPluginKey: Multimap -) { - fun isEmpty(): Boolean { - return extensionsWithAllMode.isEmpty() && extensionsWithAnnotatedMode.isEmpty() && extensionsWithAllInAnnotatedMode.isEmpty() - } -} - -@Deprecated("") -class FirOldExtensionsService( - val session: FirSession -) : ComponentArrayOwner>(), FirSessionComponent { - companion object : TypeRegistry>() { - inline fun > registeredExtensions(): ReadOnlyProperty> { - val accessor = generateAccessor(P::class) - return object : ReadOnlyProperty> { - override fun getValue(thisRef: FirOldExtensionsService, property: KProperty<*>): ExtensionsAccessor

{ - return ExtensionsAccessor(thisRef.session, accessor.getValue(thisRef, property)) - } - } - } - - private fun createMultimap(): Multimap = LinkedHashMultimap.create() - } - - override val typeRegistry: TypeRegistry> - get() = Companion - - fun

registerExtensions(extensionClass: KClass

, extensionFactories: List>) { -// registeredExtensionsSize += extensionFactories.size -// val extensions = extensionFactories.map { it.create(session) } -// -// val extensionsWithAllMode = mutableListOf

() -// val extensionsWithAnnotatedMode = createMultimap() -// val extensionsWithAllInAnnotatedMode = createMultimap() -// val extensionsByPlugin = createMultimap() -// for (extension in extensions) { -// _metaAnnotations += extension.metaAnnotations.keys -// for (metaAnnotation in extension.metaAnnotations.keys) { -// extensionsWithMetaAnnotations.put(metaAnnotation, extension) -// } -// _annotations += extension.directlyApplicableAnnotations -// _annotations += extension.childrenApplicableAnnotations -// when (extension.mode) { -// FirExtension.Mode.ANNOTATED_ELEMENT -> { -// for (annotation in extension.directlyApplicableAnnotations) { -// extensionsWithAnnotatedMode.put(annotation, extension) -// } -// for (annotation in extension.childrenApplicableAnnotations) { -// extensionsWithAllInAnnotatedMode.put(annotation, extension) -// } -// } -// FirExtension.Mode.ALL -> extensionsWithAllMode += extension -// } -// extensionsByPlugin.put(extension.key, extension) -// } -// registerComponent( -// extensionClass, -// FirRegisteredExtension( -// extensionsWithAllMode, -// extensionsWithAnnotatedMode, -// extensionsWithAllInAnnotatedMode, -// extensionsByPlugin -// ) -// ) - } - - @Deprecated("") - fun registerUserDefinedAnnotation(metaAnnotation: AnnotationFqn, annotations: Collection) { -// for (annotation in annotations) { -// require(annotation.classKind == ClassKind.ANNOTATION_CLASS) -// val fqName = annotation.symbol.classId.asSingleFqName() -// _annotations += fqName -// userDefinedAnnotations.put(metaAnnotation, fqName) -// val extensions = extensionsWithMetaAnnotations[metaAnnotation] -// if (extensions.isEmpty()) return -// for (extension in extensions) { -// val registeredExtensions = this[extension.extensionType] -// -// val metaAnnotationMode = extension.metaAnnotations.getValue(metaAnnotation) -// -// if (metaAnnotationMode.directed) { -// @Suppress("UNCHECKED_CAST") -// (registeredExtensions.extensionsWithAnnotatedMode as Multimap).put(fqName, extension) -// } -// -// if (metaAnnotationMode.children) { -// @Suppress("UNCHECKED_CAST") -// (registeredExtensions.extensionsWithAllInAnnotatedMode as Multimap).put(fqName, extension) -// } -// } -// } - } - - @Deprecated("") - val annotations: Set - get() = _annotations - private val _annotations: MutableSet = mutableSetOf() - - @Deprecated("") - val metaAnnotations: Set - get() = _metaAnnotations - private val _metaAnnotations: MutableSet = mutableSetOf() - - private val extensionsWithMetaAnnotations: Multimap = createMultimap() - - // MetaAnnotation -> Annotations - @Deprecated("") - val userDefinedAnnotations: Multimap = createMultimap() - - var registeredExtensionsSize: Int = 0 - private set - - class ExtensionsAccessor

( - private val session: FirSession, - private val extensions: OldFirRegisteredExtension

- ) { - fun forDeclaration(declaration: FirAnnotationContainer, owners: Collection): Collection

{ - if (extensions.isEmpty()) return emptySet() - if ( - (declaration.annotations.isEmpty() || extensions.extensionsWithAnnotatedMode.isEmpty) && - extensions.extensionsWithAllInAnnotatedMode.isEmpty - ) { - return extensions.extensionsWithAllMode - } - - return LinkedHashSet(extensions.extensionsWithAllMode).apply { - collectExtensions(this, declaration, extensions.extensionsWithAnnotatedMode) - collectExtensions(this, declaration, extensions.extensionsWithAllInAnnotatedMode) - for (owner in owners) { - collectExtensions(this, owner, extensions.extensionsWithAllInAnnotatedMode) - } - } - } - - fun forGeneratedDeclaration(origin: FirDeclarationOrigin.Plugin): Collection

{ - return extensions.extensionsByPluginKey.get(origin.key) - } - - private fun collectExtensions(result: MutableSet

, declaration: FirAnnotationContainer, extensions: Multimap) { - for (annotation in declaration.annotations) { - val fqName = annotation.fqName(session) ?: continue - result += extensions[fqName] - } - } - } -} - -@Deprecated("") -val FirSession.oldExtensionsService: FirOldExtensionsService by FirSession.sessionComponentAccessor() - -val FirOldExtensionsService.hasExtensions: Boolean - get() = registeredExtensionsSize > 0 \ No newline at end of file diff --git a/idea/idea-fir/tests/org/jetbrains/kotlin/idea/fir/AbstractFirMultiModuleResolveTest.kt b/idea/idea-fir/tests/org/jetbrains/kotlin/idea/fir/AbstractFirMultiModuleResolveTest.kt index 47835ff02a1..ebb88b8b517 100644 --- a/idea/idea-fir/tests/org/jetbrains/kotlin/idea/fir/AbstractFirMultiModuleResolveTest.kt +++ b/idea/idea-fir/tests/org/jetbrains/kotlin/idea/fir/AbstractFirMultiModuleResolveTest.kt @@ -17,7 +17,9 @@ import org.jetbrains.kotlin.fir.declarations.FirFile import org.jetbrains.kotlin.fir.declarations.FirResolvePhase import org.jetbrains.kotlin.fir.dependenciesWithoutSelf import org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrar +import org.jetbrains.kotlin.fir.extensions.extensionService import org.jetbrains.kotlin.fir.extensions.oldExtensionsService +import org.jetbrains.kotlin.fir.extensions.registerExtensions import org.jetbrains.kotlin.fir.java.FirJavaModuleBasedSession import org.jetbrains.kotlin.fir.java.FirLibrarySession import org.jetbrains.kotlin.fir.java.FirProjectSessionProvider @@ -71,7 +73,7 @@ abstract class AbstractFirMultiModuleResolveTest : AbstractMultiModuleTest() { private fun createSession(module: Module, provider: FirProjectSessionProvider): FirJavaModuleBasedSession { val moduleInfo = module.productionSourceInfo()!! return FirJavaModuleBasedSession(moduleInfo, provider, moduleInfo.contentScope()).also { - it.oldExtensionsService.registerExtensions(FirExtensionRegistrar.OldRegisteredExtensions.EMPTY) + it.extensionService.registerExtensions(emptyList()) } }