Reordered methods

This commit is contained in:
Valentin Kipyatkov
2015-07-21 13:19:50 +03:00
parent e046dc967c
commit 511bb133f5
@@ -36,27 +36,6 @@ import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameUnsafe
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
public class AddForLoopIndicesIntention : JetSelfTargetingRangeIntention<JetForExpression>(javaClass(), "Add indices to 'for' loop") {
override fun applyTo(element: JetForExpression, editor: Editor) {
val loopRange = element.loopRange!!
val loopParameter = element.loopParameter!!
val project = element.project
val psiFactory = JetPsiFactory(element)
loopRange.replace(createWithIndexExpression(loopRange))
var multiParameter = (psiFactory.createExpressionByPattern("for((index, $0) in x){}", loopParameter.text) as JetForExpression).multiParameter!!
multiParameter = loopParameter.replaced(multiParameter)
val indexVariable = multiParameter.entries[0]
editor.caretModel.moveToOffset(indexVariable.startOffset)
val templateBuilder = TemplateBuilderImpl(indexVariable)
templateBuilder.replaceElement(indexVariable, "index")
PsiDocumentManager.getInstance(project).doPostponedOperationsAndUnblockDocument(editor.document)
TemplateManager.getInstance(project).startTemplate(editor, templateBuilder.buildInlineTemplate()!!)
}
private val WITH_INDEX_FQ_NAME = "kotlin.withIndex"
override fun applicabilityRange(element: JetForExpression): TextRange? {
@@ -78,6 +57,27 @@ public class AddForLoopIndicesIntention : JetSelfTargetingRangeIntention<JetForE
return TextRange(element.startOffset, element.body?.startOffset ?: element.endOffset)
}
override fun applyTo(element: JetForExpression, editor: Editor) {
val loopRange = element.loopRange!!
val loopParameter = element.loopParameter!!
val project = element.project
val psiFactory = JetPsiFactory(element)
loopRange.replace(createWithIndexExpression(loopRange))
var multiParameter = (psiFactory.createExpressionByPattern("for((index, $0) in x){}", loopParameter.text) as JetForExpression).multiParameter!!
multiParameter = loopParameter.replaced(multiParameter)
val indexVariable = multiParameter.entries[0]
editor.caretModel.moveToOffset(indexVariable.startOffset)
val templateBuilder = TemplateBuilderImpl(indexVariable)
templateBuilder.replaceElement(indexVariable, "index")
PsiDocumentManager.getInstance(project).doPostponedOperationsAndUnblockDocument(editor.document)
TemplateManager.getInstance(project).startTemplate(editor, templateBuilder.buildInlineTemplate()!!)
}
private fun createWithIndexExpression(originalExpression: JetExpression): JetExpression {
return JetPsiFactory(originalExpression).createExpressionByPattern("$0.withIndex()", originalExpression)
}