diff --git a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/KotlinCompletionContributor.kt b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/KotlinCompletionContributor.kt index 806928bb3f4..90962bdc39f 100644 --- a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/KotlinCompletionContributor.kt +++ b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/KotlinCompletionContributor.kt @@ -248,16 +248,18 @@ class KotlinCompletionContributor : CompletionContributor() { val toFromOriginalFileMapper = ToFromOriginalFileMapper(originalFile, positionFile, parameters.offset) if (position.node.elementType == KtTokens.LONG_TEMPLATE_ENTRY_START) { - val expression = (position.parent as KtBlockStringTemplateEntry).expression as KtDotQualifiedExpression - val correctedPosition = (expression.selectorExpression as KtNameReferenceExpression).firstChild - val context = position.getUserData(CompletionContext.COMPLETION_CONTEXT_KEY)!! - val correctedOffset = context.offsetMap.getOffset(STRING_TEMPLATE_AFTER_DOT_REAL_START_OFFSET) - val correctedParameters = parameters.withPosition(correctedPosition, correctedOffset) - performCompletionWithOutOfBlockTracking(position) { - doComplete(correctedParameters, toFromOriginalFileMapper, result, - lookupElementPostProcessor = { wrapLookupElementForStringTemplateAfterDotCompletion(it) }) + val expression = (position.parent as KtBlockStringTemplateEntry).expression + if (expression is KtDotQualifiedExpression) { + val correctedPosition = (expression.selectorExpression as KtNameReferenceExpression).firstChild + val context = position.getUserData(CompletionContext.COMPLETION_CONTEXT_KEY)!! + val correctedOffset = context.offsetMap.getOffset(STRING_TEMPLATE_AFTER_DOT_REAL_START_OFFSET) + val correctedParameters = parameters.withPosition(correctedPosition, correctedOffset) + performCompletionWithOutOfBlockTracking(position) { + doComplete(correctedParameters, toFromOriginalFileMapper, result, + lookupElementPostProcessor = { wrapLookupElementForStringTemplateAfterDotCompletion(it) }) + } + return } - return } performCompletionWithOutOfBlockTracking(position) { diff --git a/idea/idea-completion/testData/basic/common/inStringLiterals/EA76497.kt b/idea/idea-completion/testData/basic/common/inStringLiterals/EA76497.kt new file mode 100644 index 00000000000..1c9aa92f84e --- /dev/null +++ b/idea/idea-completion/testData/basic/common/inStringLiterals/EA76497.kt @@ -0,0 +1,3 @@ +val v = "$x.1" + +// NUMBER: 0 diff --git a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/JSBasicCompletionTestGenerated.java b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/JSBasicCompletionTestGenerated.java index 474268df173..d5abf908b3e 100644 --- a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/JSBasicCompletionTestGenerated.java +++ b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/JSBasicCompletionTestGenerated.java @@ -1578,6 +1578,12 @@ public class JSBasicCompletionTestGenerated extends AbstractJSBasicCompletionTes KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/idea-completion/testData/basic/common/inStringLiterals"), Pattern.compile("^(.+)\\.kt$"), true); } + @TestMetadata("EA76497.kt") + public void testEA76497() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/inStringLiterals/EA76497.kt"); + doTest(fileName); + } + @TestMetadata("StringTemplate1.kt") public void testStringTemplate1() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/inStringLiterals/StringTemplate1.kt"); diff --git a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/JvmBasicCompletionTestGenerated.java b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/JvmBasicCompletionTestGenerated.java index 5a1746844b2..2d7d29a54e1 100644 --- a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/JvmBasicCompletionTestGenerated.java +++ b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/JvmBasicCompletionTestGenerated.java @@ -1578,6 +1578,12 @@ public class JvmBasicCompletionTestGenerated extends AbstractJvmBasicCompletionT KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/idea-completion/testData/basic/common/inStringLiterals"), Pattern.compile("^(.+)\\.kt$"), true); } + @TestMetadata("EA76497.kt") + public void testEA76497() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/inStringLiterals/EA76497.kt"); + doTest(fileName); + } + @TestMetadata("StringTemplate1.kt") public void testStringTemplate1() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/inStringLiterals/StringTemplate1.kt");