diff --git a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/confidence/EnableAutopopupInStringTemplate.kt b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/confidence/EnableAutopopupInStringTemplate.kt index e93eff2afdc..e1c114362b1 100644 --- a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/confidence/EnableAutopopupInStringTemplate.kt +++ b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/confidence/EnableAutopopupInStringTemplate.kt @@ -25,10 +25,15 @@ import org.jetbrains.kotlin.psi.KtSimpleNameStringTemplateEntry import org.jetbrains.kotlin.psi.psiUtil.endOffset import org.jetbrains.kotlin.psi.psiUtil.getParentOfType import org.jetbrains.kotlin.psi.psiUtil.prevLeaf +import org.jetbrains.kotlin.psi.psiUtil.startOffset class EnableAutopopupInStringTemplate : CompletionConfidence() { override fun shouldSkipAutopopup(contextElement: PsiElement, psiFile: PsiFile, offset: Int): ThreeState { val stringTemplate = contextElement.prevLeaf()?.getParentOfType(strict = false) ?: return ThreeState.UNSURE + + // "$nameRef" stringTemplate here is "$nameRef", so offset are inside template, we should show lookup + if (offset in stringTemplate.startOffset until stringTemplate.endOffset) return ThreeState.NO + val textRange = TextRange.create(stringTemplate.endOffset, offset) val containsWhitespaces = textRange.substring(psiFile.text).any { it.isWhitespace() } return if (containsWhitespaces) ThreeState.UNSURE else ThreeState.NO diff --git a/idea/idea-completion/testData/confidence/AutoPopupInStringTemplateAfterDollar.kt b/idea/idea-completion/testData/confidence/AutoPopupInStringTemplateAfterDollar.kt new file mode 100644 index 00000000000..d4d345c4c58 --- /dev/null +++ b/idea/idea-completion/testData/confidence/AutoPopupInStringTemplateAfterDollar.kt @@ -0,0 +1,7 @@ + +fun foo() { + val aaa = "" + val y = "$aaaa" +} + +// ELEMENT: aaa \ No newline at end of file diff --git a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/confidence/KotlinConfidenceTest.java b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/confidence/KotlinConfidenceTest.java index c2c5bb6e707..3a335995d44 100644 --- a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/confidence/KotlinConfidenceTest.java +++ b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/confidence/KotlinConfidenceTest.java @@ -68,6 +68,10 @@ public class KotlinConfidenceTest extends LightCompletionTestCase { doTest(); } + public void testAutoPopupInStringTemplateAfterDollar() { + doTest(); + } + public void testNoAutoPopupInStringTemplateAfterSpace() { doTest(); }