From 34411dcf012e97b76f308895a596fd619f754538 Mon Sep 17 00:00:00 2001 From: Michael Nedzelsky Date: Fri, 24 Oct 2014 12:25:38 +0400 Subject: [PATCH] JS backend: add Specification-Title to manifest and LibraryUtils.isKotlinJavascriptLibrary --- .../org/jetbrains/jet/utils/LibraryUtils.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/compiler/util/src/org/jetbrains/jet/utils/LibraryUtils.java b/compiler/util/src/org/jetbrains/jet/utils/LibraryUtils.java index a6dbd0d5fb9..1dea1c232df 100644 --- a/compiler/util/src/org/jetbrains/jet/utils/LibraryUtils.java +++ b/compiler/util/src/org/jetbrains/jet/utils/LibraryUtils.java @@ -33,9 +33,11 @@ public class LibraryUtils { public static final String TITLE_KOTLIN_JVM_RUNTIME_AND_STDLIB; public static final String TITLE_KOTLIN_JAVASCRIPT_STDLIB; + public static final String TITLE_KOTLIN_JAVASCRIPT_LIB; static { String jsStdLib = ""; + String jsLib = ""; String jvmStdLib = ""; InputStream manifestProperties = LibraryUtils.class.getResourceAsStream("/manifest.properties"); @@ -45,6 +47,7 @@ public class LibraryUtils { properties.load(manifestProperties); jvmStdLib = properties.getProperty("manifest.impl.title.kotlin.jvm.runtime"); jsStdLib = properties.getProperty("manifest.impl.title.kotlin.javascript.stdlib"); + jsLib = properties.getProperty("manifest.spec.title.kotlin.javascript.lib"); } catch (IOException e) { LOG.error(e); @@ -56,6 +59,7 @@ public class LibraryUtils { TITLE_KOTLIN_JVM_RUNTIME_AND_STDLIB = jvmStdLib; TITLE_KOTLIN_JAVASCRIPT_STDLIB = jsStdLib; + TITLE_KOTLIN_JAVASCRIPT_LIB = jsLib; } private LibraryUtils() {} @@ -92,6 +96,18 @@ public class LibraryUtils { return title != null && title.equals(expected); } + private static boolean checkSpecTitle(@NotNull File library, String expected) { + Attributes attributes = getManifestMainAttributesFromJar(library); + if (attributes == null) return false; + + String title = attributes.getValue(Attributes.Name.SPECIFICATION_TITLE); + return title != null && title.equals(expected); + } + + public static boolean isKotlinJavascriptLibrary(@NotNull File library) { + return checkSpecTitle(library, TITLE_KOTLIN_JAVASCRIPT_LIB); + } + public static boolean isJsRuntimeLibrary(@NotNull File library) { return checkImplTitle(library, TITLE_KOTLIN_JAVASCRIPT_STDLIB); }