Spring Support: Allow injection of SpEL into string literals with escape sequences

#KT-11904 Fixed
This commit is contained in:
Alexey Sedunov
2016-04-15 13:44:49 +03:00
parent 68776be186
commit c21dff66aa
2 changed files with 3 additions and 2 deletions
@@ -413,6 +413,7 @@ private val MODALITY_MODIFIERS = TokenSet.create(
fun KtDeclaration.modalityModifier() = modifierFromTokenSet(MODALITY_MODIFIERS)
fun KtStringTemplateExpression.isPlain() = entries.all { it is KtLiteralStringTemplateEntry }
fun KtStringTemplateExpression.isPlainWithEscapes() = entries.all { it is KtLiteralStringTemplateEntry || it is KtEscapeStringTemplateEntry }
val KtDeclaration.containingClassOrObject: KtClassOrObject?
get() = (parent as? KtClassBody)?.parent as? KtClassOrObject
@@ -33,7 +33,7 @@ import org.jetbrains.kotlin.psi.KtAnnotationEntry
import org.jetbrains.kotlin.psi.KtStringTemplateExpression
import org.jetbrains.kotlin.psi.KtValueArgument
import org.jetbrains.kotlin.psi.psiUtil.getStrictParentOfType
import org.jetbrains.kotlin.psi.psiUtil.isPlain
import org.jetbrains.kotlin.psi.psiUtil.isPlainWithEscapes
import org.jetbrains.kotlin.resolve.calls.callUtil.getResolvedCall
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
import org.jetbrains.kotlin.utils.ifEmpty
@@ -52,7 +52,7 @@ class KotlinSpringELInjector : MultiHostInjector {
override fun getLanguagesToInject(registrar: MultiHostRegistrar, host: PsiElement) {
if (host is KtStringTemplateExpression) {
if (!host.isPlain()) return
if (!host.isPlainWithEscapes()) return
val argument = host.parent as? KtValueArgument ?: return
val entry = argument.getStrictParentOfType<KtAnnotationEntry>() ?: return