[SLC] introduce EmptyAnnotationsBox
^KT-56046
This commit is contained in:
committed by
Space Team
parent
ad4f6b25ca
commit
8c2cb4f621
+14
@@ -0,0 +1,14 @@
|
||||
/*
|
||||
* 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
|
||||
|
||||
object EmptyAnnotationsBox : AnnotationsBox {
|
||||
override fun annotations(owner: PsiModifierList): Array<PsiAnnotation> = PsiAnnotation.EMPTY_ARRAY
|
||||
override fun findAnnotation(owner: PsiModifierList, qualifiedName: String): PsiAnnotation? = null
|
||||
}
|
||||
+17
-16
@@ -19,6 +19,7 @@ import org.jetbrains.kotlin.asJava.builder.LightMemberOrigin
|
||||
import org.jetbrains.kotlin.asJava.classes.lazyPub
|
||||
import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget
|
||||
import org.jetbrains.kotlin.light.classes.symbol.*
|
||||
import org.jetbrains.kotlin.light.classes.symbol.annotations.SimpleAnnotationsBox
|
||||
import org.jetbrains.kotlin.light.classes.symbol.annotations.computeAnnotations
|
||||
import org.jetbrains.kotlin.light.classes.symbol.annotations.hasDeprecatedAnnotation
|
||||
import org.jetbrains.kotlin.light.classes.symbol.classes.SymbolLightClassBase
|
||||
@@ -145,23 +146,23 @@ internal class SymbolLightFieldForProperty private constructor(
|
||||
|
||||
SymbolLightMemberModifierList(
|
||||
containingDeclaration = this,
|
||||
initialValue = initializerValue,
|
||||
lazyModifiersComputer = ::computeModifiers,
|
||||
) { modifierList ->
|
||||
withPropertySymbol { propertySymbol ->
|
||||
val nullability = if (!(propertySymbol is KtKotlinPropertySymbol && propertySymbol.isLateInit)) {
|
||||
getTypeNullability(propertySymbol.returnType)
|
||||
} else {
|
||||
NullabilityType.Unknown
|
||||
}
|
||||
modifiersBox = LazyModifiersBox(initializerValue, ::computeModifiers),
|
||||
annotationsBox = SimpleAnnotationsBox { modifierList ->
|
||||
withPropertySymbol { propertySymbol ->
|
||||
val nullability = if (!(propertySymbol is KtKotlinPropertySymbol && propertySymbol.isLateInit)) {
|
||||
getTypeNullability(propertySymbol.returnType)
|
||||
} else {
|
||||
NullabilityType.Unknown
|
||||
}
|
||||
|
||||
propertySymbol.computeAnnotations(
|
||||
modifierList = modifierList,
|
||||
nullability = nullability,
|
||||
annotationUseSiteTarget = AnnotationUseSiteTarget.FIELD,
|
||||
)
|
||||
}
|
||||
}
|
||||
propertySymbol.computeAnnotations(
|
||||
modifierList = modifierList,
|
||||
nullability = nullability,
|
||||
annotationUseSiteTarget = AnnotationUseSiteTarget.FIELD,
|
||||
)
|
||||
}
|
||||
},
|
||||
)
|
||||
}
|
||||
|
||||
override fun getModifierList(): PsiModifierList = _modifierList
|
||||
|
||||
+5
-1
@@ -10,6 +10,7 @@ import org.jetbrains.kotlin.asJava.builder.LightMemberOrigin
|
||||
import org.jetbrains.kotlin.asJava.classes.lazyPub
|
||||
import org.jetbrains.kotlin.asJava.elements.KtLightIdentifier
|
||||
import org.jetbrains.kotlin.light.classes.symbol.classes.SymbolLightClassBase
|
||||
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.SimpleModifiersBox
|
||||
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.SymbolLightMemberModifierList
|
||||
import org.jetbrains.kotlin.light.classes.symbol.parameters.SymbolLightParameterList
|
||||
|
||||
@@ -36,7 +37,10 @@ internal class SymbolLightNoArgConstructor(
|
||||
override fun isDeprecated(): Boolean = false
|
||||
|
||||
private val _modifierList: PsiModifierList by lazyPub {
|
||||
SymbolLightMemberModifierList(containingDeclaration = this, staticModifiers = setOf(visibility), annotationsComputer = null)
|
||||
SymbolLightMemberModifierList(
|
||||
containingDeclaration = this,
|
||||
modifiersBox = SimpleModifiersBox(visibility),
|
||||
)
|
||||
}
|
||||
|
||||
override fun getModifierList(): PsiModifierList = _modifierList
|
||||
|
||||
+2
-2
@@ -9,6 +9,7 @@ import com.intellij.psi.*
|
||||
import org.jetbrains.kotlin.asJava.classes.METHOD_INDEX_BASE
|
||||
import org.jetbrains.kotlin.asJava.classes.lazyPub
|
||||
import org.jetbrains.kotlin.light.classes.symbol.classes.SymbolLightClassBase
|
||||
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.SimpleModifiersBox
|
||||
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.SymbolLightMemberModifierList
|
||||
import org.jetbrains.kotlin.light.classes.symbol.parameters.SymbolLightParameterList
|
||||
|
||||
@@ -31,8 +32,7 @@ internal class SymbolLightRepeatableAnnotationContainerMethod(
|
||||
private val _modifierList by lazyPub {
|
||||
SymbolLightMemberModifierList(
|
||||
containingDeclaration = this,
|
||||
staticModifiers = setOf(PsiModifier.PUBLIC, PsiModifier.ABSTRACT),
|
||||
annotationsComputer = null,
|
||||
modifiersBox = SimpleModifiersBox(PsiModifier.PUBLIC, PsiModifier.ABSTRACT),
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
+3
-2
@@ -17,6 +17,7 @@ import org.jetbrains.kotlin.asJava.builder.LightMemberOrigin
|
||||
import org.jetbrains.kotlin.asJava.classes.lazyPub
|
||||
import org.jetbrains.kotlin.lexer.KtTokens
|
||||
import org.jetbrains.kotlin.light.classes.symbol.*
|
||||
import org.jetbrains.kotlin.light.classes.symbol.annotations.SimpleAnnotationsBox
|
||||
import org.jetbrains.kotlin.light.classes.symbol.annotations.computeAnnotations
|
||||
import org.jetbrains.kotlin.light.classes.symbol.annotations.hasInlineOnlyAnnotation
|
||||
import org.jetbrains.kotlin.light.classes.symbol.annotations.hasJvmStaticAnnotation
|
||||
@@ -158,8 +159,8 @@ internal class SymbolLightSimpleMethod(
|
||||
private val _modifierList: PsiModifierList by lazyPub {
|
||||
SymbolLightMemberModifierList(
|
||||
containingDeclaration = this,
|
||||
lazyModifiersComputer = ::computeModifiers,
|
||||
annotationsComputer = ::computeAnnotations,
|
||||
modifiersBox = LazyModifiersBox(computer = ::computeModifiers),
|
||||
annotationsBox = SimpleAnnotationsBox(::computeAnnotations),
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user