Spring Support: Automatic configuration by @Import and @ComponentScan ("basePackages"/"basePackageClasses")

#KT-12135 Fixed
 #KT-12139 Fixed
This commit is contained in:
Alexey Sedunov
2016-05-20 17:28:12 +03:00
parent 781a1e0694
commit 076e31c0f8
16 changed files with 131 additions and 0 deletions
@@ -87,6 +87,13 @@ class KtLightAnnotation(
override fun getValue() = delegate.value
}
inner class LightClassLiteral(
delegate: PsiClassObjectAccessExpression
) : LightExpressionValue<PsiClassObjectAccessExpression>(delegate), PsiClassObjectAccessExpression {
override fun getType() = delegate.type
override fun getOperand(): PsiTypeElement = delegate.operand
}
inner class LightArrayInitializerValue(private val delegate: PsiArrayInitializerMemberValue) : PsiArrayInitializerMemberValue by delegate {
private val _initializers by lazy(LazyThreadSafetyMode.PUBLICATION) { delegate.initializers.map { wrapAnnotationValue(it) }.toTypedArray() }
@@ -97,6 +104,7 @@ class KtLightAnnotation(
private fun wrapAnnotationValue(value: PsiAnnotationMemberValue): PsiAnnotationMemberValue {
return when {
value is PsiLiteralExpression && value.value is String -> LightStringLiteral(value)
value is PsiClassObjectAccessExpression -> LightClassLiteral(value)
value is PsiExpression -> LightExpressionValue(value)
value is PsiArrayInitializerMemberValue -> LightArrayInitializerValue(value)
else -> value