From 80051b8303c929bded75efd7c3a7312c52b7192a Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Wed, 2 Dec 2015 15:50:46 +0300 Subject: [PATCH] Create from Usage: Locate new declaration using RangeMarker #KT-9197 Fixed --- .../callableBuilder/CallableBuilder.kt | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/callableBuilder/CallableBuilder.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/callableBuilder/CallableBuilder.kt index a9f7edc6074..751bb8b05eb 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/callableBuilder/CallableBuilder.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/callableBuilder/CallableBuilder.kt @@ -938,6 +938,8 @@ class CallableBuilder(val config: CallableBuilderConfiguration) { val declaration = declarationPointer.getElement()!! + val declarationMarker = containingFileEditor.document.createRangeMarker(declaration.textRange) + val builder = TemplateBuilderImpl(jetFileToEdit) if (declaration is KtProperty) { setupValVarTemplate(builder, declaration) @@ -979,10 +981,10 @@ class CallableBuilder(val config: CallableBuilderConfiguration) { if (brokenOff && !ApplicationManager.getApplication().isUnitTestMode()) return // file templates - val newDeclaration = if (templateImpl.getSegmentsCount() > 0) { - PsiTreeUtil.findElementOfClassAtOffset(jetFileToEdit, templateImpl.getSegmentOffset(0), declaration.javaClass, false)!! - } - else declarationPointer.getElement()!! + val newDeclaration = PsiTreeUtil.findElementOfClassAtOffset(jetFileToEdit, + declarationMarker.startOffset, + declaration.javaClass, + false) ?: return runWriteAction { // file templates @@ -1004,6 +1006,7 @@ class CallableBuilder(val config: CallableBuilderConfiguration) { } } finally { + declarationMarker.dispose() finished = true onFinish() }