From f59e56b7e94b5f5c05de259dfddcb71ff2d3032e Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Wed, 7 Oct 2015 15:48:41 +0300 Subject: [PATCH] Minor: Simplify generateMembers() function --- .../kotlin/idea/quickfix/generateUtil.kt | 23 +++++-------------- 1 file changed, 6 insertions(+), 17 deletions(-) diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/quickfix/generateUtil.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/quickfix/generateUtil.kt index cc7938b30dc..4df274c1546 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/quickfix/generateUtil.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/quickfix/generateUtil.kt @@ -29,6 +29,7 @@ import org.jetbrains.kotlin.idea.util.ShortenReferences import org.jetbrains.kotlin.idea.util.application.runWriteAction import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.psiUtil.siblings +import org.jetbrains.kotlin.utils.ifEmpty public fun moveCaretIntoGeneratedElement(editor: Editor, element: PsiElement) { val project = element.project @@ -146,32 +147,20 @@ public fun generateMembers( classOrObject: JetClassOrObject, generators: Collection<() -> T> ): List { - val insertedMembers = SmartList() - return runWriteAction> { - if (generators.isEmpty()) return@runWriteAction emptyList() + generators.ifEmpty { return emptyList() } + return runWriteAction> { val body = classOrObject.getOrCreateBody() var afterAnchor = findInsertAfterAnchor(editor, body) ?: return@runWriteAction emptyList() - - var firstGenerated: PsiElement? = null - - for (generator in generators) { - val member = generator() + val insertedMembers = generators.mapTo(SmartList()) { @Suppress("UNCHECKED_CAST") - val added = body.addAfter(member, afterAnchor) as T - - if (firstGenerated == null) { - firstGenerated = added - } - - afterAnchor = added - insertedMembers.add(added) + (body.addAfter(it(), afterAnchor) as T).apply { afterAnchor = this } } ShortenReferences.DEFAULT.process(insertedMembers) - moveCaretIntoGeneratedElement(editor, firstGenerated!!) + moveCaretIntoGeneratedElement(editor, insertedMembers.first()) insertedMembers }