From 01503a84d9ec248db1cc859cff22e27af2318813 Mon Sep 17 00:00:00 2001 From: Denis Zharkov Date: Fri, 20 Jul 2018 17:23:57 +0300 Subject: [PATCH] Partially revert 79e776e9d7e5d9c015cab98a07a7e113bce78766 --- .../kotlin/psi/KtImportsFactory.java | 63 +++++++++++++++++++ .../org/jetbrains/kotlin/psi/KtPsiFactory.kt | 13 ++++ 2 files changed, 76 insertions(+) create mode 100644 compiler/psi/src/org/jetbrains/kotlin/psi/KtImportsFactory.java diff --git a/compiler/psi/src/org/jetbrains/kotlin/psi/KtImportsFactory.java b/compiler/psi/src/org/jetbrains/kotlin/psi/KtImportsFactory.java new file mode 100644 index 00000000000..1ca4bb0483b --- /dev/null +++ b/compiler/psi/src/org/jetbrains/kotlin/psi/KtImportsFactory.java @@ -0,0 +1,63 @@ +/* + * Copyright 2010-2015 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jetbrains.kotlin.psi; + +import com.intellij.openapi.project.Project; +import kotlin.collections.CollectionsKt; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.kotlin.resolve.ImportPath; + +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +/** + * @deprecated This class is not used in the kotlin plugin/compiler and will be removed soon + */ +@Deprecated +public class KtImportsFactory { + @NotNull private final Project project; + + private final Map importsCache = new HashMap<>(); + + public KtImportsFactory(@NotNull Project project) { + this.project = project; + } + + @NotNull + private KtImportDirective createImportDirective(@NotNull ImportPath importPath) { + KtImportDirective directive = importsCache.get(importPath); + if (directive != null) { + return directive; + } + + KtImportDirective createdDirective = KtPsiFactoryKt.KtPsiFactory(project, false).createImportDirective(importPath); + importsCache.put(importPath, createdDirective); + + return createdDirective; + } + + @NotNull + public Collection createImportDirectives(@NotNull Collection importPaths) { + return CollectionsKt.map(importPaths, this::createImportDirective); + } + + @NotNull + public Collection createImportDirectivesNotCached(@NotNull Collection importPaths) { + return KtPsiFactoryKt.KtPsiFactory(project, false).createImportDirectives(importPaths); + } +} diff --git a/compiler/psi/src/org/jetbrains/kotlin/psi/KtPsiFactory.kt b/compiler/psi/src/org/jetbrains/kotlin/psi/KtPsiFactory.kt index fd240126c61..13da8534d8e 100644 --- a/compiler/psi/src/org/jetbrains/kotlin/psi/KtPsiFactory.kt +++ b/compiler/psi/src/org/jetbrains/kotlin/psi/KtPsiFactory.kt @@ -437,6 +437,19 @@ class KtPsiFactory @JvmOverloads constructor(private val project: Project, val m } } + @Deprecated("function is not used in the kotlin plugin/compiler and will be removed soon") + fun createImportDirectives(paths: Collection): List { + val fileContent = buildString { + for (path in paths) { + appendImport(path) + append('\n') + } + } + + val file = createFile(fileContent) + return file.importDirectives + } + fun createPrimaryConstructor(text: String = ""): KtPrimaryConstructor { return createClass(if (text.isNotEmpty()) "class A $text" else "class A()").primaryConstructor!! }