From f587c02d3836a615adac87912e359065526ac4be Mon Sep 17 00:00:00 2001 From: Dmitriy Novozhilov Date: Tue, 21 Jun 2022 13:47:54 +0300 Subject: [PATCH] [FE] Move ServiceLoaderLite to :compiler:frontend.common This is needed to be able to use this class inside FIR part of IDE plugin --- .../kotlin/cli/jvm/plugins/PluginCliParser.kt | 1 + .../kotlin/daemon/KotlinRemoteReplService.kt | 2 +- .../org/jetbrains/kotlin/util}/ServiceLoaderLite.kt | 12 ++++++++---- .../cli/serviceLoaderLite/ServiceLoaderLiteTest.kt | 4 ++-- .../ServiceLoaderLiteTestWithClassLoader.kt | 4 ++-- .../src/org/jetbrains/kotlin/kapt3/Kapt3Extension.kt | 2 +- 6 files changed, 15 insertions(+), 10 deletions(-) rename compiler/{cli/src/org/jetbrains/kotlin/cli/jvm/plugins => frontend.common/src/org/jetbrains/kotlin/util}/ServiceLoaderLite.kt (91%) diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/plugins/PluginCliParser.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/plugins/PluginCliParser.kt index 8e34cb63c3f..b3d997fb3b3 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/plugins/PluginCliParser.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/plugins/PluginCliParser.kt @@ -24,6 +24,7 @@ import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity import org.jetbrains.kotlin.cli.common.messages.MessageCollectorUtil import org.jetbrains.kotlin.compiler.plugin.* import org.jetbrains.kotlin.config.CompilerConfiguration +import org.jetbrains.kotlin.util.ServiceLoaderLite import java.io.File import java.net.URLClassLoader diff --git a/compiler/daemon/src/org/jetbrains/kotlin/daemon/KotlinRemoteReplService.kt b/compiler/daemon/src/org/jetbrains/kotlin/daemon/KotlinRemoteReplService.kt index ad1473ab9f5..5a14798e73d 100644 --- a/compiler/daemon/src/org/jetbrains/kotlin/daemon/KotlinRemoteReplService.kt +++ b/compiler/daemon/src/org/jetbrains/kotlin/daemon/KotlinRemoteReplService.kt @@ -26,7 +26,7 @@ import org.jetbrains.kotlin.cli.common.repl.* import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment import org.jetbrains.kotlin.cli.jvm.config.configureJdkClasspathRoots import org.jetbrains.kotlin.cli.jvm.config.addJvmClasspathRoots -import org.jetbrains.kotlin.cli.jvm.plugins.ServiceLoaderLite +import org.jetbrains.kotlin.util.ServiceLoaderLite import org.jetbrains.kotlin.compiler.plugin.ComponentRegistrar import org.jetbrains.kotlin.compiler.plugin.CompilerPluginRegistrar import org.jetbrains.kotlin.config.* diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/plugins/ServiceLoaderLite.kt b/compiler/frontend.common/src/org/jetbrains/kotlin/util/ServiceLoaderLite.kt similarity index 91% rename from compiler/cli/src/org/jetbrains/kotlin/cli/jvm/plugins/ServiceLoaderLite.kt rename to compiler/frontend.common/src/org/jetbrains/kotlin/util/ServiceLoaderLite.kt index 5cfa05c6cf5..0c961740d48 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/plugins/ServiceLoaderLite.kt +++ b/compiler/frontend.common/src/org/jetbrains/kotlin/util/ServiceLoaderLite.kt @@ -1,9 +1,9 @@ /* - * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ -package org.jetbrains.kotlin.cli.jvm.plugins +package org.jetbrains.kotlin.util import java.io.File import java.io.IOError @@ -63,6 +63,10 @@ object ServiceLoaderLite { return loadImplementations(Service::class.java, classLoader) } + inline fun loadImplementations(files: List, classLoader: ClassLoader): List { + return loadImplementations(Service::class.java, files, classLoader) + } + fun findImplementations(service: Class<*>, files: List): Set { return files.flatMapTo(linkedSetOf()) { findImplementations(service, it) } } @@ -72,7 +76,7 @@ object ServiceLoaderLite { return when { file.isDirectory -> findImplementationsInDirectory(classIdentifier, file) - file.isFile && file.extension.toLowerCase() == "jar" -> findImplementationsInJar(classIdentifier, file) + file.isFile && file.extension.lowercase() == "jar" -> findImplementationsInJar(classIdentifier, file) else -> emptySet() } } @@ -117,4 +121,4 @@ object ServiceLoaderLite { private fun getClassIdentifier(service: Class<*>): String { return service.name } -} \ No newline at end of file +} diff --git a/compiler/tests/org/jetbrains/kotlin/cli/serviceLoaderLite/ServiceLoaderLiteTest.kt b/compiler/tests/org/jetbrains/kotlin/cli/serviceLoaderLite/ServiceLoaderLiteTest.kt index e7fd6a58e96..3e721fed82c 100644 --- a/compiler/tests/org/jetbrains/kotlin/cli/serviceLoaderLite/ServiceLoaderLiteTest.kt +++ b/compiler/tests/org/jetbrains/kotlin/cli/serviceLoaderLite/ServiceLoaderLiteTest.kt @@ -5,8 +5,8 @@ package org.jetbrains.kotlin.cli.serviceLoaderLite -import org.jetbrains.kotlin.cli.jvm.plugins.ServiceLoaderLite -import org.jetbrains.kotlin.cli.jvm.plugins.ServiceLoaderLite.ServiceLoadingException +import org.jetbrains.kotlin.util.ServiceLoaderLite +import org.jetbrains.kotlin.util.ServiceLoaderLite.ServiceLoadingException import java.io.File import javax.annotation.processing.Processor diff --git a/compiler/tests/org/jetbrains/kotlin/cli/serviceLoaderLite/ServiceLoaderLiteTestWithClassLoader.kt b/compiler/tests/org/jetbrains/kotlin/cli/serviceLoaderLite/ServiceLoaderLiteTestWithClassLoader.kt index 904e3ab2e7c..575ac4a5748 100644 --- a/compiler/tests/org/jetbrains/kotlin/cli/serviceLoaderLite/ServiceLoaderLiteTestWithClassLoader.kt +++ b/compiler/tests/org/jetbrains/kotlin/cli/serviceLoaderLite/ServiceLoaderLiteTestWithClassLoader.kt @@ -5,7 +5,7 @@ package org.jetbrains.kotlin.cli.serviceLoaderLite -import org.jetbrains.kotlin.cli.jvm.plugins.ServiceLoaderLite +import org.jetbrains.kotlin.util.ServiceLoaderLite import java.net.URLClassLoader import kotlin.reflect.KClass @@ -130,4 +130,4 @@ class ServiceLoaderLiteTestWithClassLoader : AbstractServiceLoaderLiteTest() { } return Entry("META-INF/services/" + Intf::class.java.name, content) } -} \ No newline at end of file +} diff --git a/plugins/kapt3/kapt3-compiler/src/org/jetbrains/kotlin/kapt3/Kapt3Extension.kt b/plugins/kapt3/kapt3-compiler/src/org/jetbrains/kotlin/kapt3/Kapt3Extension.kt index c52f8c37aa4..a317bd9dd93 100644 --- a/plugins/kapt3/kapt3-compiler/src/org/jetbrains/kotlin/kapt3/Kapt3Extension.kt +++ b/plugins/kapt3/kapt3-compiler/src/org/jetbrains/kotlin/kapt3/Kapt3Extension.kt @@ -36,7 +36,7 @@ import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity.OUTPUT import org.jetbrains.kotlin.cli.common.messages.MessageCollector import org.jetbrains.kotlin.cli.common.messages.OutputMessageUtil import org.jetbrains.kotlin.cli.common.output.writeAll -import org.jetbrains.kotlin.cli.jvm.plugins.ServiceLoaderLite +import org.jetbrains.kotlin.util.ServiceLoaderLite import org.jetbrains.kotlin.codegen.ClassBuilderMode import org.jetbrains.kotlin.codegen.DefaultCodegenFactory import org.jetbrains.kotlin.codegen.KotlinCodegenFacade