Insert '()' under write action in finishing anonymous object template (EA-82700)

(cherry picked from commit 3234d76)
This commit is contained in:
Nikolay Krasko
2016-10-18 16:49:05 +03:00
committed by Nikolay Krasko
parent 3513cef779
commit 67cc6bb004
4 changed files with 26 additions and 2 deletions
@@ -29,6 +29,7 @@ import org.jetbrains.kotlin.descriptors.ClassDescriptor
import org.jetbrains.kotlin.descriptors.ClassKind
import org.jetbrains.kotlin.idea.caches.resolve.analyze
import org.jetbrains.kotlin.idea.core.overrideImplement.ImplementMembersHandler
import org.jetbrains.kotlin.idea.util.application.runWriteAction
import org.jetbrains.kotlin.psi.KtReferenceExpression
import org.jetbrains.kotlin.resolve.BindingContext
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
@@ -58,7 +59,10 @@ internal class AnonymousTemplateEditingListener(private val psiFile: PsiFile, pr
if (classDescriptor != null) {
if (classDescriptor!!.kind == ClassKind.CLASS) {
val placeToInsert = classRef!!.textRange.endOffset
PsiDocumentManager.getInstance(psiFile.project).getDocument(psiFile)!!.insertString(placeToInsert, "()")
runWriteAction {
PsiDocumentManager.getInstance(psiFile.project).getDocument(psiFile)!!.insertString(placeToInsert, "()")
}
var hasConstructorsParameters = false
for (cd in classDescriptor!!.constructors) {
@@ -0,0 +1,7 @@
// Using class is important
// Test for EA-82700
open class A
val test = object : A() {
}
+5
View File
@@ -0,0 +1,5 @@
// Using class is important
// Test for EA-82700
open class A
val test = <caret>
@@ -213,6 +213,14 @@ class LiveTemplatesTest : KotlinLightCodeInsightFixtureTestCase() {
checkAfter()
}
fun testObject_ForClass() {
start()
typeAndNextTab("A")
checkAfter()
}
private fun doTestIfnInn() {
start()
@@ -272,7 +280,7 @@ class LiveTemplatesTest : KotlinLightCodeInsightFixtureTestCase() {
CommandProcessor.getInstance().executeCommand(
project,
{
ApplicationManager.getApplication().runWriteAction { templateState!!.nextTab() }
templateState!!.nextTab()
},
"nextTab",
null)