[AA LC] Implement default values for methods of annotations

This commit is contained in:
Dmitriy Novozhilov
2022-08-03 16:00:15 +03:00
parent 3a51a8a655
commit a88fdd5eb7
10 changed files with 85 additions and 21 deletions
@@ -5,6 +5,7 @@
package org.jetbrains.kotlin.analysis.api
import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationValue
import org.jetbrains.kotlin.analysis.api.base.KtConstantValue
import org.jetbrains.kotlin.psi.KtExpression
@@ -29,10 +30,19 @@ public class KtConstantInitializerValue(
) : KtInitializerValue()
/**
* Property intialzer which cannot be represented as Kotlin const value.
* Property initializer which cannot be represented as Kotlin const value.
*
* See [KtConstantInitializerValue] for more info.
*/
public class KtNonConstantInitializerValue(
override val initializerPsi: KtExpression?
) : KtInitializerValue()
) : KtInitializerValue()
/**
* Initializer of property of annotation, which can not be which cannot be represented as Kotlin const value,
* but can be represented as [KtAnnotationValue]
*/
public class KtConstantValueForAnnotation(
public val annotationValue: KtAnnotationValue,
override val initializerPsi: KtExpression?
) : KtInitializerValue()
@@ -6,10 +6,7 @@
package org.jetbrains.kotlin.analysis.api.symbols
import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
import org.jetbrains.kotlin.analysis.api.KtConstantInitializerValue
import org.jetbrains.kotlin.analysis.api.KtInitializerValue
import org.jetbrains.kotlin.analysis.api.KtNonConstantInitializerValue
import org.jetbrains.kotlin.analysis.api.*
import org.jetbrains.kotlin.analysis.api.annotations.*
import org.jetbrains.kotlin.analysis.api.base.KtContextReceiver
import org.jetbrains.kotlin.analysis.api.components.KtSymbolContainingDeclarationProviderMixIn
@@ -262,11 +259,18 @@ public object DebugSymbolRenderer {
append(value.constant.renderAsKotlinConstant())
append(")")
}
is KtNonConstantInitializerValue -> {
append("KtNonConstantInitializerValue(")
append(value.initializerPsi?.firstLineOfPsi() ?: "NO_PSI")
append(")")
}
is KtConstantValueForAnnotation -> {
append("KtConstantValueForAnnotation(")
append(value.annotationValue.renderAsSourceCode())
append(")")
}
}
}
@@ -299,4 +303,4 @@ public object DebugSymbolRenderer {
"org.jetbrains.kotlin.analysis.api.fir",
"org.jetbrains.kotlin.analysis.api.descriptors",
)
}
}