diff --git a/libraries/tools/kotlin-script-util/src/main/kotlin/org/jetbrains/kotlin/script/util/context.kt b/libraries/tools/kotlin-script-util/src/main/kotlin/org/jetbrains/kotlin/script/util/context.kt index 6141179b90f..129f6adbc96 100644 --- a/libraries/tools/kotlin-script-util/src/main/kotlin/org/jetbrains/kotlin/script/util/context.kt +++ b/libraries/tools/kotlin-script-util/src/main/kotlin/org/jetbrains/kotlin/script/util/context.kt @@ -58,6 +58,9 @@ fun File.matchMaybeVersionedFile(baseName: String) = name == baseName.removeSuffix(".jar") || // for classes dirs Regex(Regex.escape(baseName.removeSuffix(".jar")) + "(-\\d.*)?\\.jar").matches(name) +fun File.hasParentNamed(baseName: String): Boolean = + nameWithoutExtension == baseName || parentFile?.hasParentNamed(baseName) ?: false + private const val KOTLIN_COMPILER_EMBEDDABLE_JAR = "$KOTLIN_COMPILER_NAME-embeddable.jar" internal fun List.takeIfContainsAll(vararg keyNames: String): List? = @@ -67,10 +70,12 @@ internal fun List.takeIfContainsAll(vararg keyNames: String): List? internal fun List.filterIfContainsAll(vararg keyNames: String): List? { val res = hashMapOf() - for (jar in this) { + for (cpentry in this) { for (prefix in keyNames) { - if (jar.matchMaybeVersionedFile(prefix)) { - res[prefix] = jar + if (cpentry.matchMaybeVersionedFile(prefix) || + (cpentry.isDirectory && cpentry.hasParentNamed(prefix)) + ) { + res[prefix] = cpentry break } }