From 098b313a3223bfd924cb41ce1e31ea29e5b16b6a Mon Sep 17 00:00:00 2001 From: Valentin Kipyatkov Date: Wed, 27 May 2015 19:19:37 +0300 Subject: [PATCH] Moved method --- .../idea/util/ImportInsertHelperImpl.kt | 83 +++++++++---------- 1 file changed, 41 insertions(+), 42 deletions(-) diff --git a/idea/src/org/jetbrains/kotlin/idea/util/ImportInsertHelperImpl.kt b/idea/src/org/jetbrains/kotlin/idea/util/ImportInsertHelperImpl.kt index e8ebeed0fca..29d3be5677f 100644 --- a/idea/src/org/jetbrains/kotlin/idea/util/ImportInsertHelperImpl.kt +++ b/idea/src/org/jetbrains/kotlin/idea/util/ImportInsertHelperImpl.kt @@ -65,46 +65,6 @@ public class ImportInsertHelperImpl(private val project: Project) : ImportInsert } } - private fun addImport(file: JetFile, importPath: ImportPath): JetImportDirective { - //TODO: it's a temporary hack for JetCodeFragment's and non-physical files - // We should increment modification tracker after inserting import to invalidate resolve caches. - // Without this modification references with new import won't be resolved. - (PsiModificationTracker.SERVICE.getInstance(project) as PsiModificationTrackerImpl).incOutOfCodeBlockModificationCounter() - - val psiFactory = JetPsiFactory(project) - if (file is JetCodeFragment) { - val newDirective = psiFactory.createImportDirective(importPath) - file.addImportsFromString(newDirective.getText()) - return newDirective - } - - val importList = file.getImportList() - if (importList != null) { - val newDirective = psiFactory.createImportDirective(importPath) - val imports = importList.getImports() - if (imports.isEmpty()) { //TODO: strange hack - importList.add(psiFactory.createNewLine()) - return importList.add(newDirective) as JetImportDirective - } - else { - val insertAfter = imports - .reverse() - .firstOrNull { - val directivePath = it.getImportPath() - directivePath != null && ImportPathComparator.compare(directivePath, importPath) <= 0 - } - return importList.addAfter(newDirective, insertAfter) as JetImportDirective - } - } - else { - val newImportList = psiFactory.createImportDirectiveWithImportList(importPath) - val packageDirective = file.getPackageDirective() - ?: throw IllegalStateException("Scripts are not supported: " + file.getName()) - val addedImportList = packageDirective.getParent().addAfter(newImportList, packageDirective) as JetImportList - return addedImportList.getImports().single() - } - } - override val importSortComparator: Comparator get() = ImportPathComparator @@ -395,7 +355,46 @@ public class ImportInsertHelperImpl(private val project: Project) : ImportInsert private fun JetReferenceExpression.resolveTargets(): Collection = this.getImportableTargets(resolutionFacade.analyze(this, BodyResolveMode.PARTIAL)) - private fun addImport(fqName: FqName, allUnder: Boolean): JetImportDirective - = addImport(file, ImportPath(fqName, allUnder)) + private fun addImport(fqName: FqName, allUnder: Boolean): JetImportDirective { + //TODO: it's a temporary hack for JetCodeFragment's and non-physical files + // We should increment modification tracker after inserting import to invalidate resolve caches. + // Without this modification references with new import won't be resolved. + (PsiModificationTracker.SERVICE.getInstance(project) as PsiModificationTrackerImpl).incOutOfCodeBlockModificationCounter() + + val importPath = ImportPath(fqName, allUnder) + + val psiFactory = JetPsiFactory(project) + if (file is JetCodeFragment) { + val newDirective = psiFactory.createImportDirective(importPath) + file.addImportsFromString(newDirective.getText()) + return newDirective + } + + val importList = file.getImportList() + if (importList != null) { + val newDirective = psiFactory.createImportDirective(importPath) + val imports = importList.getImports() + if (imports.isEmpty()) { //TODO: strange hack + importList.add(psiFactory.createNewLine()) + return importList.add(newDirective) as JetImportDirective + } + else { + val insertAfter = imports + .reverse() + .firstOrNull { + val directivePath = it.getImportPath() + directivePath != null && ImportPathComparator.compare(directivePath, importPath) <= 0 + } + return importList.addAfter(newDirective, insertAfter) as JetImportDirective + } + } + else { + val newImportList = psiFactory.createImportDirectiveWithImportList(importPath) + val packageDirective = file.getPackageDirective() + ?: throw IllegalStateException("Scripts are not supported: " + file.getName()) + val addedImportList = packageDirective.getParent().addAfter(newImportList, packageDirective) as JetImportList + return addedImportList.getImports().single() + } + } } }