diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/plugins/ServiceLoaderLite.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/plugins/ServiceLoaderLite.kt index fa30fdd6489..f387ee771f1 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/plugins/ServiceLoaderLite.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/plugins/ServiceLoaderLite.kt @@ -71,7 +71,7 @@ object ServiceLoaderLite { return when { file.isDirectory -> findImplementationsInDirectory(classIdentifier, file) - file.isFile -> findImplementationsInJar(classIdentifier, file) + file.isFile && file.extension.toLowerCase() == "jar" -> findImplementationsInJar(classIdentifier, file) else -> emptySet() } } diff --git a/compiler/tests/org/jetbrains/kotlin/cli/serviceLoaderLite/AbstractServiceLoaderLiteTest.kt b/compiler/tests/org/jetbrains/kotlin/cli/serviceLoaderLite/AbstractServiceLoaderLiteTest.kt index 72760b7233e..de9b37a8bb9 100644 --- a/compiler/tests/org/jetbrains/kotlin/cli/serviceLoaderLite/AbstractServiceLoaderLiteTest.kt +++ b/compiler/tests/org/jetbrains/kotlin/cli/serviceLoaderLite/AbstractServiceLoaderLiteTest.kt @@ -37,7 +37,7 @@ abstract class AbstractServiceLoaderLiteTest : TestCaseWithTmpdir() { } protected fun writeJar(fileName: String, vararg entries: Entry): File { - val file = File(tmpdir, fileName) + val file = File(tmpdir, "$fileName.jar") if (file.exists()) { throw IllegalStateException("File $fileName already exists") } diff --git a/compiler/tests/org/jetbrains/kotlin/cli/serviceLoaderLite/ServiceLoaderLiteTest.kt b/compiler/tests/org/jetbrains/kotlin/cli/serviceLoaderLite/ServiceLoaderLiteTest.kt index 2fed602ec18..26796ba2483 100644 --- a/compiler/tests/org/jetbrains/kotlin/cli/serviceLoaderLite/ServiceLoaderLiteTest.kt +++ b/compiler/tests/org/jetbrains/kotlin/cli/serviceLoaderLite/ServiceLoaderLiteTest.kt @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.cli.serviceLoaderLite import org.jetbrains.kotlin.cli.jvm.plugins.ServiceLoaderLite import org.jetbrains.kotlin.cli.jvm.plugins.ServiceLoaderLite.ServiceLoadingException +import java.io.File import javax.annotation.processing.Processor class ServiceLoaderLiteTest : AbstractServiceLoaderLiteTest() { @@ -112,5 +113,11 @@ class ServiceLoaderLiteTest : AbstractServiceLoaderLiteTest() { assertTrue("test.Zoo" in impls) } } + + fun testWrongJarName() { + val file = File(tmpdir, "foo.tar.gz") + file.writeText("foobar") + ServiceLoaderLite.findImplementations(Processor::class.java, listOf(file)) + } }