Spring Support: Allow injection of SpEL into string literals with escape sequences
#KT-11904 Fixed
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user