diff --git a/compiler/util/src/org/jetbrains/kotlin/utils/PathUtil.java b/compiler/util/src/org/jetbrains/kotlin/utils/PathUtil.java index 0e176b22dc9..4ae88299ceb 100644 --- a/compiler/util/src/org/jetbrains/kotlin/utils/PathUtil.java +++ b/compiler/util/src/org/jetbrains/kotlin/utils/PathUtil.java @@ -30,6 +30,7 @@ public class PathUtil { public static final String JPS_KOTLIN_HOME_PROPERTY = "jps.kotlin.home"; public static final String JS_LIB_JAR_NAME = "kotlin-stdlib-js.jar"; + public static final String JS_LIB_10_JAR_NAME = "kotlin-jslib.jar"; public static final String ALLOPEN_PLUGIN_JAR_NAME = "allopen-compiler-plugin.jar"; public static final String NOARG_PLUGIN_JAR_NAME = "noarg-compiler-plugin.jar"; public static final String JS_LIB_SRC_JAR_NAME = "kotlin-stdlib-js-sources.jar"; @@ -43,6 +44,8 @@ public class PathUtil { public static final String KOTLIN_COMPILER_JAR = "kotlin-compiler.jar"; public static final Pattern KOTLIN_RUNTIME_JAR_PATTERN = Pattern.compile("kotlin-(stdlib|runtime)(-\\d[\\d.]+(-.+)?)?\\.jar"); + public static final Pattern KOTLIN_STDLIB_JS_JAR_PATTERN = Pattern.compile("kotlin-stdlib-js.*\\.jar"); + public static final Pattern KOTLIN_JS_LIBRARY_JAR_PATTERN = Pattern.compile("kotlin-js-library.*\\.jar"); public static final String HOME_FOLDER_NAME = "kotlinc"; private static final File NO_PATH = new File(""); diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/framework/JsLibraryStdDetectionUtil.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/framework/JsLibraryStdDetectionUtil.kt index db1cd68e681..fe9fcd3e373 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/framework/JsLibraryStdDetectionUtil.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/framework/JsLibraryStdDetectionUtil.kt @@ -25,9 +25,9 @@ import com.intellij.openapi.vfs.StandardFileSystems import com.intellij.openapi.vfs.VfsUtilCore import com.intellij.openapi.vfs.VirtualFile import org.jetbrains.kotlin.utils.LibraryUtils - +import org.jetbrains.kotlin.utils.PathUtil import java.io.File -import java.util.Arrays +import java.util.* import java.util.jar.Attributes object JsLibraryStdDetectionUtil { @@ -57,8 +57,12 @@ object JsLibraryStdDetectionUtil { for (root in classesRoots) { if (root.fileSystem.protocol !== StandardFileSystems.JAR_PROTOCOL) continue - val jar = VfsUtilCore.getVirtualFileForJar(root) - if (jar != null) { + val jar = VfsUtilCore.getVirtualFileForJar(root) ?: continue + val name = jar.name + if (name == PathUtil.JS_LIB_JAR_NAME || name == PathUtil.JS_LIB_10_JAR_NAME || + PathUtil.KOTLIN_STDLIB_JS_JAR_PATTERN.matcher(name).matches() || + PathUtil.KOTLIN_JS_LIBRARY_JAR_PATTERN.matcher(name).matches()) { + var isJSStdLib = jar.getUserData(IS_JS_LIBRARY_STD_LIB) if (isJSStdLib == null) { isJSStdLib = LibraryUtils.isKotlinJavascriptStdLibrary(File(jar.path))