Check jar name before trying to load JS library version
#KT-16596 Fixed
This commit is contained in:
@@ -30,6 +30,7 @@ public class PathUtil {
|
|||||||
public static final String JPS_KOTLIN_HOME_PROPERTY = "jps.kotlin.home";
|
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_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 ALLOPEN_PLUGIN_JAR_NAME = "allopen-compiler-plugin.jar";
|
||||||
public static final String NOARG_PLUGIN_JAR_NAME = "noarg-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";
|
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 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_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";
|
public static final String HOME_FOLDER_NAME = "kotlinc";
|
||||||
private static final File NO_PATH = new File("<no_path>");
|
private static final File NO_PATH = new File("<no_path>");
|
||||||
|
|||||||
+8
-4
@@ -25,9 +25,9 @@ import com.intellij.openapi.vfs.StandardFileSystems
|
|||||||
import com.intellij.openapi.vfs.VfsUtilCore
|
import com.intellij.openapi.vfs.VfsUtilCore
|
||||||
import com.intellij.openapi.vfs.VirtualFile
|
import com.intellij.openapi.vfs.VirtualFile
|
||||||
import org.jetbrains.kotlin.utils.LibraryUtils
|
import org.jetbrains.kotlin.utils.LibraryUtils
|
||||||
|
import org.jetbrains.kotlin.utils.PathUtil
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.util.Arrays
|
import java.util.*
|
||||||
import java.util.jar.Attributes
|
import java.util.jar.Attributes
|
||||||
|
|
||||||
object JsLibraryStdDetectionUtil {
|
object JsLibraryStdDetectionUtil {
|
||||||
@@ -57,8 +57,12 @@ object JsLibraryStdDetectionUtil {
|
|||||||
for (root in classesRoots) {
|
for (root in classesRoots) {
|
||||||
if (root.fileSystem.protocol !== StandardFileSystems.JAR_PROTOCOL) continue
|
if (root.fileSystem.protocol !== StandardFileSystems.JAR_PROTOCOL) continue
|
||||||
|
|
||||||
val jar = VfsUtilCore.getVirtualFileForJar(root)
|
val jar = VfsUtilCore.getVirtualFileForJar(root) ?: continue
|
||||||
if (jar != null) {
|
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)
|
var isJSStdLib = jar.getUserData(IS_JS_LIBRARY_STD_LIB)
|
||||||
if (isJSStdLib == null) {
|
if (isJSStdLib == null) {
|
||||||
isJSStdLib = LibraryUtils.isKotlinJavascriptStdLibrary(File(jar.path))
|
isJSStdLib = LibraryUtils.isKotlinJavascriptStdLibrary(File(jar.path))
|
||||||
|
|||||||
Reference in New Issue
Block a user