From cb531635b160b6cd594c3c70b2388933e9a67022 Mon Sep 17 00:00:00 2001 From: Dmitrii Gridin Date: Wed, 25 Jan 2023 14:53:55 +0100 Subject: [PATCH] [SLC] introduce EmptyAdditionalAnnotationsProvider ^KT-56046 --- ...> DefaultAdditionalAnnotationsProvider.kt} | 2 +- .../EmptyAdditionalAnnotationsProvider.kt | 23 +++++++++++++++++++ .../symbol/annotations/LazyAnnotationsBox.kt | 2 +- ...LightClassForInterfaceOrAnnotationClass.kt | 4 +++- .../SymbolLightParameterForReceiver.kt | 1 - 5 files changed, 28 insertions(+), 4 deletions(-) rename analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/annotations/{DefaultAnnotationsProvider.kt => DefaultAdditionalAnnotationsProvider.kt} (99%) create mode 100644 analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/annotations/EmptyAdditionalAnnotationsProvider.kt diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/annotations/DefaultAnnotationsProvider.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/annotations/DefaultAdditionalAnnotationsProvider.kt similarity index 99% rename from analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/annotations/DefaultAnnotationsProvider.kt rename to analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/annotations/DefaultAdditionalAnnotationsProvider.kt index d6aadfa18e3..0b7b33f4bf3 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/annotations/DefaultAnnotationsProvider.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/annotations/DefaultAdditionalAnnotationsProvider.kt @@ -19,7 +19,7 @@ import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.StandardClassIds import java.lang.annotation.ElementType -internal object DefaultAnnotationsProvider : AdditionalAnnotationsProvider { +internal object DefaultAdditionalAnnotationsProvider : AdditionalAnnotationsProvider { override fun addAllAnnotations( currentRawAnnotations: MutableList, foundQualifiers: MutableSet, diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/annotations/EmptyAdditionalAnnotationsProvider.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/annotations/EmptyAdditionalAnnotationsProvider.kt new file mode 100644 index 00000000000..e87992ed08b --- /dev/null +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/annotations/EmptyAdditionalAnnotationsProvider.kt @@ -0,0 +1,23 @@ +/* + * Copyright 2010-2023 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.light.classes.symbol.annotations + +import com.intellij.psi.PsiAnnotation +import com.intellij.psi.PsiModifierList + +internal object EmptyAdditionalAnnotationsProvider : AdditionalAnnotationsProvider { + override fun addAllAnnotations( + currentRawAnnotations: MutableList, + foundQualifiers: MutableSet, + owner: PsiModifierList + ) = Unit + + override fun findAdditionalAnnotation( + annotationsBox: LazyAnnotationsBox, + qualifiedName: String, + owner: PsiModifierList + ): PsiAnnotation? = null +} diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/annotations/LazyAnnotationsBox.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/annotations/LazyAnnotationsBox.kt index f1786a49d58..51f73f207e5 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/annotations/LazyAnnotationsBox.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/annotations/LazyAnnotationsBox.kt @@ -14,7 +14,7 @@ import java.util.concurrent.atomic.AtomicReference internal class LazyAnnotationsBox( private val annotationsProvider: AnnotationsProvider, - private val additionalAnnotationsProvider: AdditionalAnnotationsProvider = DefaultAnnotationsProvider, + private val additionalAnnotationsProvider: AdditionalAnnotationsProvider = EmptyAdditionalAnnotationsProvider, ) : AnnotationsBox { private val annotationsArray: AtomicReference?> = AtomicReference() private var specialAnnotations: SmartList? = null diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForInterfaceOrAnnotationClass.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForInterfaceOrAnnotationClass.kt index abf11bab63c..5e53256e094 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForInterfaceOrAnnotationClass.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForInterfaceOrAnnotationClass.kt @@ -17,6 +17,7 @@ import org.jetbrains.kotlin.analysis.api.symbols.pointers.symbolPointerOfType import org.jetbrains.kotlin.analysis.project.structure.KtModule import org.jetbrains.kotlin.asJava.classes.lazyPub import org.jetbrains.kotlin.asJava.elements.KtLightField +import org.jetbrains.kotlin.light.classes.symbol.annotations.DefaultAdditionalAnnotationsProvider import org.jetbrains.kotlin.light.classes.symbol.annotations.LazyAnnotationsBox import org.jetbrains.kotlin.light.classes.symbol.annotations.SymbolAnnotationsProvider import org.jetbrains.kotlin.light.classes.symbol.modifierLists.LazyModifiersBox @@ -72,7 +73,8 @@ internal abstract class SymbolLightClassForInterfaceOrAnnotationClass : SymbolLi computer = ::computeModifiers ), annotationsBox = LazyAnnotationsBox( - annotationsProvider = SymbolAnnotationsProvider(ktModule, classOrObjectSymbolPointer) + annotationsProvider = SymbolAnnotationsProvider(ktModule, classOrObjectSymbolPointer), + additionalAnnotationsProvider = DefaultAdditionalAnnotationsProvider, ), ) diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightParameterForReceiver.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightParameterForReceiver.kt index 24fee04ae12..00a9e7d5a1e 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightParameterForReceiver.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightParameterForReceiver.kt @@ -71,7 +71,6 @@ internal class SymbolLightParameterForReceiver private constructor( annotationsBox = LazyAnnotationsBox( annotationsProvider = SymbolAnnotationsProvider(ktModule, receiverPointer), additionalAnnotationsProvider = CompositeAdditionalAnnotationsProvider( - DefaultAnnotationsProvider, NullabilityAnnotationsProvider { withReceiverSymbol { receiver -> receiver.type.nullabilityType