Create from Usage: Locate new declaration using RangeMarker

#KT-9197 Fixed
This commit is contained in:
Alexey Sedunov
2015-12-02 15:50:46 +03:00
parent 99c88cb0c5
commit 80051b8303
@@ -938,6 +938,8 @@ class CallableBuilder(val config: CallableBuilderConfiguration) {
val declaration = declarationPointer.getElement()!! val declaration = declarationPointer.getElement()!!
val declarationMarker = containingFileEditor.document.createRangeMarker(declaration.textRange)
val builder = TemplateBuilderImpl(jetFileToEdit) val builder = TemplateBuilderImpl(jetFileToEdit)
if (declaration is KtProperty) { if (declaration is KtProperty) {
setupValVarTemplate(builder, declaration) setupValVarTemplate(builder, declaration)
@@ -979,10 +981,10 @@ class CallableBuilder(val config: CallableBuilderConfiguration) {
if (brokenOff && !ApplicationManager.getApplication().isUnitTestMode()) return if (brokenOff && !ApplicationManager.getApplication().isUnitTestMode()) return
// file templates // file templates
val newDeclaration = if (templateImpl.getSegmentsCount() > 0) { val newDeclaration = PsiTreeUtil.findElementOfClassAtOffset(jetFileToEdit,
PsiTreeUtil.findElementOfClassAtOffset(jetFileToEdit, templateImpl.getSegmentOffset(0), declaration.javaClass, false)!! declarationMarker.startOffset,
} declaration.javaClass,
else declarationPointer.getElement()!! false) ?: return
runWriteAction { runWriteAction {
// file templates // file templates
@@ -1004,6 +1006,7 @@ class CallableBuilder(val config: CallableBuilderConfiguration) {
} }
} }
finally { finally {
declarationMarker.dispose()
finished = true finished = true
onFinish() onFinish()
} }