From c5005f8695dfdbfd759cedc1dd7fae89bb922d86 Mon Sep 17 00:00:00 2001 From: Simon Ogorodnik Date: Fri, 17 Jul 2020 23:03:27 +0300 Subject: [PATCH] J2K: Speed-up add imports --- .../kotlin/nj2k/NewJavaToKotlinConverter.kt | 23 ++++++++++++------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/nj2k/src/org/jetbrains/kotlin/nj2k/NewJavaToKotlinConverter.kt b/nj2k/src/org/jetbrains/kotlin/nj2k/NewJavaToKotlinConverter.kt index 7e9b501ed63..8cf95adf5fe 100644 --- a/nj2k/src/org/jetbrains/kotlin/nj2k/NewJavaToKotlinConverter.kt +++ b/nj2k/src/org/jetbrains/kotlin/nj2k/NewJavaToKotlinConverter.kt @@ -92,14 +92,21 @@ class NewJavaToKotlinConverter( private fun KtFile.addImports(imports: Collection) { val factory = KtPsiFactory(this) - var importList = importList - for (import in imports) { - val importDirective = factory.createImportDirective(ImportPath(import, isAllUnder = false)) - if (importList == null) { - importList = addImportList(importDirective.parent as KtImportList) - } else { - importList.add(importDirective) - } + + + if (imports.isEmpty()) return + val importPsi = factory.createImportDirectives( + imports.map { ImportPath(it, isAllUnder = false) } + ) + val createdImportList = importPsi.first().parent as KtImportList + val importList = importList + if (importList == null) { + addImportList(createdImportList) + } else { + val updatedList = if(importList.firstChild != null) { + createdImportList.addRangeBefore(importList.firstChild, importList.lastChild, createdImportList.firstChild) + } else createdImportList + importList.replace(updatedList) } }