FIR IDE: separate KtAnnotationApplication and KtAnnotationApplicationValue

This commit is contained in:
Ilya Kirillov
2021-11-23 16:29:04 +01:00
parent b1c8a9e886
commit 47c1da2845
20 changed files with 108 additions and 210 deletions
@@ -5,14 +5,14 @@
package org.jetbrains.kotlin.analysis.api.annotations
import org.jetbrains.kotlin.analysis.api.ValidityTokenOwner
import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget
import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.psi.KtAnnotationEntry
import org.jetbrains.kotlin.psi.KtCallElement
public abstract class KtAnnotationApplication : ValidityTokenOwner {
public abstract val classId: ClassId?
public abstract val useSiteTarget: AnnotationUseSiteTarget?
public abstract val psi: KtCallElement?
public abstract val arguments: List<KtNamedConstantValue>
}
public class KtAnnotationApplication(
public val classId: ClassId?,
public val psi: KtAnnotationEntry?,
public val useSiteTarget: AnnotationUseSiteTarget?,
public val arguments: List<KtNamedAnnotationValue>,
)
@@ -6,8 +6,6 @@
package org.jetbrains.kotlin.analysis.api.annotations
import org.jetbrains.kotlin.name.CallableId
import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.psi.KtCallElement
import org.jetbrains.kotlin.psi.KtElement
import org.jetbrains.kotlin.types.ConstantValueKind
@@ -23,7 +21,7 @@ import org.jetbrains.kotlin.types.ConstantValueKind
*
* [KtLiteralAnnotationValue] covers first two kinds;
* [KtEnumEntryAnnotationValue] corresponds to enum types;
* [KtAnnotationAnnotationValue] represents annotation types (with annotation fq name and arguments); and
* [KtAnnotationApplicationValue] represents annotation types (with annotation fq name and arguments); and
* [KtArrayAnnotationValue] abstracts an array of [KtAnnotationValue]s.
*/
public sealed class KtAnnotationValue(
@@ -47,10 +45,8 @@ public class KtArrayAnnotationValue(
override val sourcePsi: KtElement?,
) : KtAnnotationValue()
public class KtAnnotationAnnotationValue(
public val classId: ClassId?,
public val arguments: List<KtNamedConstantValue>,
override val sourcePsi: KtCallElement?,
public class KtAnnotationApplicationValue(
public val annotationValue: KtAnnotationApplication,
) : KtAnnotationValue()
public class KtEnumEntryAnnotationValue(
@@ -5,4 +5,4 @@
package org.jetbrains.kotlin.analysis.api.annotations
public data class KtNamedConstantValue(val name: String, val expression: KtAnnotationValue)
public data class KtNamedAnnotationValue(val name: String, val expression: KtAnnotationValue)
@@ -142,7 +142,7 @@ public object DebugSymbolRenderer {
append(KtConstantValueRenderer.render(value))
}
private fun Block.renderNamedConstantValue(value: KtNamedConstantValue) {
private fun Block.renderNamedConstantValue(value: KtNamedAnnotationValue) {
append(value.name).append(" = ")
renderValue(value.expression)
}
@@ -189,7 +189,7 @@ public object DebugSymbolRenderer {
is KtSymbol -> renderSymbolTag(value)
is KtType -> renderType(value)
is KtAnnotationValue -> renderConstantValue(value)
is KtNamedConstantValue -> renderNamedConstantValue(value)
is KtNamedAnnotationValue -> renderNamedConstantValue(value)
is KtInitializerValue -> renderKtInitializerValue(value)
is KtAnnotationApplication -> renderAnnotationApplication(value)
is KtAnnotationsList -> renderAnnotationsList(value)
@@ -15,7 +15,7 @@ public object KtConstantValueRenderer {
private fun StringBuilder.renderConstantValue(value: KtAnnotationValue) {
when (value) {
is KtAnnotationAnnotationValue -> {
is KtAnnotationApplicationValue -> {
renderAnnotationConstantValue(value)
}
is KtArrayAnnotationValue -> {
@@ -58,7 +58,11 @@ public object KtConstantValueRenderer {
append(value.callableId?.asSingleFqName()?.asString())
}
private fun StringBuilder.renderAnnotationConstantValue(value: KtAnnotationAnnotationValue) {
private fun StringBuilder.renderAnnotationConstantValue(application: KtAnnotationApplicationValue) {
renderAnnotationApplication(application.annotationValue)
}
private fun StringBuilder.renderAnnotationApplication(value: KtAnnotationApplication) {
append(value.classId)
if (value.arguments.isNotEmpty()) {
append("(")
@@ -79,7 +83,7 @@ public object KtConstantValueRenderer {
}
}
private fun StringBuilder.renderNamedConstantValueList(list: Collection<KtNamedConstantValue>) {
private fun StringBuilder.renderNamedConstantValueList(list: Collection<KtNamedAnnotationValue>) {
renderWithSeparator(list, ", ") { namedValue ->
append(namedValue.name)
append(" = ")