Completion after $ in string literal works correctly for classes and objects
This commit is contained in:
@@ -16,10 +16,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.idea.completion
|
||||
|
||||
import com.intellij.codeInsight.completion.CompletionProgressIndicator
|
||||
import com.intellij.codeInsight.completion.CompletionService
|
||||
import com.intellij.codeInsight.completion.InsertionContext
|
||||
import com.intellij.codeInsight.completion.PrefixMatcher
|
||||
import com.intellij.codeInsight.completion.*
|
||||
import com.intellij.codeInsight.lookup.*
|
||||
import com.intellij.openapi.progress.ProcessCanceledException
|
||||
import com.intellij.openapi.util.Key
|
||||
@@ -72,7 +69,9 @@ fun LookupElement.withReceiverCast(): LookupElement {
|
||||
fun LookupElement.withBracesSurrounding(): LookupElement {
|
||||
return object: LookupElementDecorator<LookupElement>(this) {
|
||||
override fun handleInsert(context: InsertionContext) {
|
||||
context.getDocument().insertString(context.getStartOffset(), "{")
|
||||
val startOffset = context.getStartOffset()
|
||||
context.getDocument().insertString(startOffset, "{")
|
||||
context.getOffsetMap().addOffset(CompletionInitializationContext.START_OFFSET, startOffset + 1)
|
||||
|
||||
val tailOffset = context.getTailOffset()
|
||||
context.getDocument().insertString(tailOffset, "}")
|
||||
|
||||
@@ -25,6 +25,7 @@ import com.intellij.codeInsight.lookup.LookupElementDecorator
|
||||
import com.intellij.codeInsight.lookup.LookupElementPresentation
|
||||
import com.intellij.openapi.util.TextRange
|
||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||
import org.jetbrains.kotlin.descriptors.ClassifierDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.PropertyDescriptor
|
||||
@@ -70,7 +71,7 @@ class LookupElementsCollector(
|
||||
lookupElement = lookupElement.withReceiverCast()
|
||||
}
|
||||
|
||||
if (surroundCallsWithBraces && descriptor is FunctionDescriptor) {
|
||||
if (surroundCallsWithBraces && (descriptor is FunctionDescriptor || descriptor is ClassifierDescriptor)) {
|
||||
lookupElement = lookupElement.withBracesSurrounding()
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
fun foo(): String {
|
||||
val s = "$OOO<caret>"
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
package ppp
|
||||
|
||||
object OOOOO
|
||||
@@ -0,0 +1,5 @@
|
||||
import ppp.OOOOO
|
||||
|
||||
fun foo(): String {
|
||||
val s = "${OOOOO<caret>}"
|
||||
}
|
||||
+4
@@ -70,6 +70,10 @@ public class CompletionMultifileHandlerTest extends KotlinCompletionTestCase {
|
||||
doTest();
|
||||
}
|
||||
|
||||
public void testObjectInStringTemplate() throws Exception {
|
||||
doTest();
|
||||
}
|
||||
|
||||
public void doTest() throws Exception {
|
||||
String fileName = getTestName(false);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user