JS backend: compile some builtins to builtins.js instead of stdlib

This commit is contained in:
Michael Nedzelsky
2014-11-06 14:31:49 +03:00
parent 5f576c4c05
commit dd86823480
6 changed files with 31 additions and 17 deletions
+11 -1
View File
@@ -218,12 +218,18 @@
</target>
<target name="jslib">
<property name="compiled.builtins.js" value="builtins.js" />
<property name="compiled.stdlib.js" value="stdlib.js" />
<property name="stdlib.js.dir" value="${basedir}/js/js.translator/testData" />
<kotlin2js output="${output}/${compiled.stdlib.js}" noStdlib="true" main="noCall">
<kotlin2js output="${output}/${compiled.builtins.js}" noStdlib="true" main="noCall">
<src>
<fileset refid="kotlin.builtin.files" />
</src>
</kotlin2js>
<kotlin2js output="${output}/${compiled.stdlib.js}" noStdlib="true" main="noCall">
<src>
<resources refid="js.lib.files" />
</src>
</kotlin2js>
@@ -264,6 +270,10 @@
<file name="long.js"/>
</sources>
<sources dir="${output}">
<file name="${compiled.builtins.js}"/>
</sources>
<sources dir="${output}">
<file name="${compiled.stdlib.js}"/>
</sources>
@@ -44,6 +44,8 @@ public class LibrarySourcesConfig extends Config {
@NotNull
private static final Logger LOG = Logger.getInstance("#org.jetbrains.k2js.config.LibrarySourcesConfig");
public static final String STDLIB_JS_MODULE_NAME = "stdlib";
public static final String BUILTINS_JS_MODULE_NAME = "builtins";
public static final String BUILTINS_JS_FILE_NAME = BUILTINS_JS_MODULE_NAME + ".js";
public static final String STDLIB_JS_FILE_NAME = STDLIB_JS_MODULE_NAME + ".js";
@NotNull
@@ -33,8 +33,7 @@ import java.util.Map;
import java.util.Set;
import static org.jetbrains.jet.utils.UtilsPackage.rethrow;
import static org.jetbrains.k2js.config.LibrarySourcesConfig.STDLIB_JS_FILE_NAME;
import static org.jetbrains.k2js.config.LibrarySourcesConfig.STDLIB_JS_MODULE_NAME;
import static org.jetbrains.k2js.config.LibrarySourcesConfig.*;
import static org.jetbrains.k2js.test.BasicTest.DIST_DIR_PATH;
import static org.jetbrains.k2js.test.BasicTest.TEST_DATA_DIR_PATH;
@@ -178,9 +177,11 @@ public final class RhinoUtils {
NativeObject modules = (NativeObject) kotlin.get("modules");
assert modules != null;
NativeObject stdlibModule = (NativeObject) modules.get(STDLIB_JS_MODULE_NAME);
NativeObject builtinsModule = (NativeObject) modules.get(BUILTINS_JS_MODULE_NAME);
NativeObject newModules = new NativeObject();
newModules.put(STDLIB_JS_MODULE_NAME, newModules, stdlibModule);
newModules.put(BUILTINS_JS_MODULE_NAME, newModules, builtinsModule);
kotlin.put("modules", kotlin, newModules);
}
@@ -196,6 +197,7 @@ public final class RhinoUtils {
runFileWithRhino(TEST_DATA_DIR_PATH + "maps.js", context, scope);
runFileWithRhino(TEST_DATA_DIR_PATH + "long.js", context, scope);
runFileWithRhino(DIST_DIR_PATH + STDLIB_JS_FILE_NAME, context, scope);
runFileWithRhino(DIST_DIR_PATH + BUILTINS_JS_FILE_NAME, context, scope);
//runFileWithRhino(pathToTestFilesRoot() + "jshint.js", context, scope);
for (String jsLibrary : jsLibraries) {
runFileWithRhino(jsLibrary, context, scope);
@@ -39,7 +39,7 @@ import org.jetbrains.k2js.translate.utils.JsAstUtils;
import java.util.Map;
import static org.jetbrains.jet.lang.resolve.DescriptorToSourceUtils.descriptorToDeclaration;
import static org.jetbrains.k2js.config.LibrarySourcesConfig.STDLIB_JS_MODULE_NAME;
import static org.jetbrains.k2js.config.LibrarySourcesConfig.BUILTINS_JS_MODULE_NAME;
import static org.jetbrains.k2js.translate.utils.AnnotationsUtils.*;
import static org.jetbrains.k2js.translate.utils.JsDescriptorUtils.*;
import static org.jetbrains.k2js.translate.utils.ManglingUtils.getMangledName;
@@ -468,7 +468,7 @@ public final class StaticContext {
}
private String getExternalModuleName(DeclarationDescriptor descriptor) {
if (isBuiltin(descriptor)) return STDLIB_JS_MODULE_NAME;
if (isBuiltin(descriptor)) return BUILTINS_JS_MODULE_NAME;
PsiElement element = descriptorToDeclaration(descriptor);
if (element == null && descriptor instanceof PropertyAccessorDescriptor) {
+6 -6
View File
@@ -236,7 +236,7 @@
*/
lazyInitClasses.ArrayIterator = Kotlin.createClass(
function () {
return [Kotlin.modules['stdlib'].kotlin.MutableIterator];
return [Kotlin.modules['builtins'].kotlin.MutableIterator];
},
/** @constructs */
function (array) {
@@ -268,7 +268,7 @@
*/
lazyInitClasses.ListIterator = Kotlin.createClass(
function () {
return [Kotlin.modules['stdlib'].kotlin.Iterator];
return [Kotlin.modules['builtins'].kotlin.Iterator];
},
/** @constructs */
function (list) {
@@ -315,7 +315,7 @@
lazyInitClasses.AbstractCollection = Kotlin.createClass(
function () {
return [Kotlin.modules['stdlib'].kotlin.MutableCollection];
return [Kotlin.modules['builtins'].kotlin.MutableCollection];
}, null, {
addAll_4fm7v2$: function (collection) {
var modified = false;
@@ -404,7 +404,7 @@
*/
lazyInitClasses.AbstractList = Kotlin.createClass(
function () {
return [Kotlin.modules['stdlib'].kotlin.MutableList, Kotlin.AbstractCollection];
return [Kotlin.modules['builtins'].kotlin.MutableList, Kotlin.AbstractCollection];
}, null, {
iterator: function () {
return new Kotlin.ListIterator(this);
@@ -623,7 +623,7 @@
lazyInitClasses.RangeIterator = Kotlin.createClass(
function () {
return [Kotlin.modules['stdlib'].kotlin.Iterator];
return [Kotlin.modules['builtins'].kotlin.Iterator];
},
function (start, end, increment) {
this.start = start;
@@ -698,7 +698,7 @@
lazyInitClasses.LongRangeIterator = Kotlin.createClass(
function () {
return [Kotlin.modules['stdlib'].kotlin.Iterator];
return [Kotlin.modules['builtins'].kotlin.Iterator];
},
function (start, end, increment) {
this.start = start;
+6 -6
View File
@@ -417,7 +417,7 @@
lazyInitClasses.HashMap = Kotlin.createClass(
function () {
return [Kotlin.modules['stdlib'].kotlin.MutableMap];
return [Kotlin.modules['builtins'].kotlin.MutableMap];
},
function () {
Kotlin.HashTable.call(this);
@@ -437,7 +437,7 @@
*/
lazyInitClasses.PrimitiveHashMapValuesIterator = Kotlin.createClass(
function () {
return [Kotlin.modules['stdlib'].kotlin.Iterator];
return [Kotlin.modules['builtins'].kotlin.Iterator];
},
function (map, keys) {
this.map = map;
@@ -463,7 +463,7 @@
*/
lazyInitClasses.PrimitiveHashMapValues = Kotlin.createClass(
function () {
return [Kotlin.modules['stdlib'].kotlin.Collection];
return [Kotlin.modules['builtins'].kotlin.Collection];
},
function (map) {
this.map = map;
@@ -675,7 +675,7 @@
lazyInitClasses.LinkedHashSet = Kotlin.createClass(
function () {
return [Kotlin.modules['stdlib'].kotlin.MutableSet, Kotlin.HashSet];
return [Kotlin.modules['builtins'].kotlin.MutableSet, Kotlin.HashSet];
},
/** @constructs */
function () {
@@ -713,7 +713,7 @@
*/
lazyInitClasses.SetIterator = Kotlin.createClass(
function () {
return [Kotlin.modules['stdlib'].kotlin.MutableIterator];
return [Kotlin.modules['builtins'].kotlin.MutableIterator];
},
function (set) {
this.set = set;
@@ -971,7 +971,7 @@
lazyInitClasses.HashSet = Kotlin.createClass(
function () {
return [Kotlin.modules['stdlib'].kotlin.MutableSet, Kotlin.AbstractCollection];
return [Kotlin.modules['builtins'].kotlin.MutableSet, Kotlin.AbstractCollection];
},
function () {
HashSet.call(this);