From 448d444b2d4b932b233a06d6aada59436b4574da Mon Sep 17 00:00:00 2001 From: Valentin Kipyatkov Date: Wed, 29 Oct 2014 17:21:42 +0300 Subject: [PATCH] J2K: replaced IntermediateResult with function --- j2k/src/org/jetbrains/jet/j2k/Converter.kt | 18 ++++++------------ .../jetbrains/jet/j2k/JavaToKotlinConverter.kt | 4 ++-- 2 files changed, 8 insertions(+), 14 deletions(-) diff --git a/j2k/src/org/jetbrains/jet/j2k/Converter.kt b/j2k/src/org/jetbrains/jet/j2k/Converter.kt index 23408d98c19..45840212df8 100644 --- a/j2k/src/org/jetbrains/jet/j2k/Converter.kt +++ b/j2k/src/org/jetbrains/jet/j2k/Converter.kt @@ -74,20 +74,14 @@ class Converter private(private val elementToConvert: PsiElement, private fun createDefaultCodeConverter() = CodeConverter(this, DefaultExpressionConverter(), DefaultStatementConverter(), null) - public trait IntermediateResult { - fun finishConversion(usageProcessings: Map): String - } - - public fun convert(): IntermediateResult? { + public fun convert(): ((Map) -> String)? { val element = convertTopElement(elementToConvert) ?: return null - return object: IntermediateResult { - override fun finishConversion(usageProcessings: Map): String { - unfoldDeferredElements(usageProcessings) + return { usageProcessings -> + unfoldDeferredElements(usageProcessings) - val builder = CodeBuilder(elementToConvert) - builder.append(element) - return builder.result - } + val builder = CodeBuilder(elementToConvert) + builder.append(element) + builder.result } } diff --git a/j2k/src/org/jetbrains/jet/j2k/JavaToKotlinConverter.kt b/j2k/src/org/jetbrains/jet/j2k/JavaToKotlinConverter.kt index fe6b3b7aedf..fb9b007a9f4 100644 --- a/j2k/src/org/jetbrains/jet/j2k/JavaToKotlinConverter.kt +++ b/j2k/src/org/jetbrains/jet/j2k/JavaToKotlinConverter.kt @@ -53,7 +53,7 @@ public class JavaToKotlinConverter(private val project: Project, public fun elementsToKotlin(psiElementsAndProcessors: List>): List { try { - val intermediateResults = ArrayList(psiElementsAndProcessors.size) + val intermediateResults = ArrayList<((Map) -> String)?>(psiElementsAndProcessors.size) val usageProcessings = HashMap() val usageProcessingCollector: (UsageProcessing) -> Unit = { usageProcessing -> assert(!usageProcessings.containsKey(usageProcessing.targetElement)) @@ -68,7 +68,7 @@ public class JavaToKotlinConverter(private val project: Project, val results = ArrayList(psiElementsAndProcessors.size) for ((i, result) in intermediateResults.withIndices()) { - results.add(result?.finishConversion(usageProcessings) ?: "") + results.add(if (result != null) result(usageProcessings) else "") intermediateResults[i] = null // to not hold unused objects in the heap }