J2K: replaced IntermediateResult with function
This commit is contained in:
committed by
valentin
parent
2e0ccf6984
commit
448d444b2d
@@ -74,20 +74,14 @@ class Converter private(private val elementToConvert: PsiElement,
|
|||||||
|
|
||||||
private fun createDefaultCodeConverter() = CodeConverter(this, DefaultExpressionConverter(), DefaultStatementConverter(), null)
|
private fun createDefaultCodeConverter() = CodeConverter(this, DefaultExpressionConverter(), DefaultStatementConverter(), null)
|
||||||
|
|
||||||
public trait IntermediateResult {
|
public fun convert(): ((Map<PsiElement, UsageProcessing>) -> String)? {
|
||||||
fun finishConversion(usageProcessings: Map<PsiElement, UsageProcessing>): String
|
|
||||||
}
|
|
||||||
|
|
||||||
public fun convert(): IntermediateResult? {
|
|
||||||
val element = convertTopElement(elementToConvert) ?: return null
|
val element = convertTopElement(elementToConvert) ?: return null
|
||||||
return object: IntermediateResult {
|
return { usageProcessings ->
|
||||||
override fun finishConversion(usageProcessings: Map<PsiElement, UsageProcessing>): String {
|
unfoldDeferredElements(usageProcessings)
|
||||||
unfoldDeferredElements(usageProcessings)
|
|
||||||
|
|
||||||
val builder = CodeBuilder(elementToConvert)
|
val builder = CodeBuilder(elementToConvert)
|
||||||
builder.append(element)
|
builder.append(element)
|
||||||
return builder.result
|
builder.result
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ public class JavaToKotlinConverter(private val project: Project,
|
|||||||
|
|
||||||
public fun elementsToKotlin(psiElementsAndProcessors: List<Pair<PsiElement, PostProcessor?>>): List<String> {
|
public fun elementsToKotlin(psiElementsAndProcessors: List<Pair<PsiElement, PostProcessor?>>): List<String> {
|
||||||
try {
|
try {
|
||||||
val intermediateResults = ArrayList<Converter.IntermediateResult?>(psiElementsAndProcessors.size)
|
val intermediateResults = ArrayList<((Map<PsiElement, UsageProcessing>) -> String)?>(psiElementsAndProcessors.size)
|
||||||
val usageProcessings = HashMap<PsiElement, UsageProcessing>()
|
val usageProcessings = HashMap<PsiElement, UsageProcessing>()
|
||||||
val usageProcessingCollector: (UsageProcessing) -> Unit = { usageProcessing ->
|
val usageProcessingCollector: (UsageProcessing) -> Unit = { usageProcessing ->
|
||||||
assert(!usageProcessings.containsKey(usageProcessing.targetElement))
|
assert(!usageProcessings.containsKey(usageProcessing.targetElement))
|
||||||
@@ -68,7 +68,7 @@ public class JavaToKotlinConverter(private val project: Project,
|
|||||||
|
|
||||||
val results = ArrayList<String>(psiElementsAndProcessors.size)
|
val results = ArrayList<String>(psiElementsAndProcessors.size)
|
||||||
for ((i, result) in intermediateResults.withIndices()) {
|
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
|
intermediateResults[i] = null // to not hold unused objects in the heap
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user