JS backend: compile some builtins to builtins.js instead of stdlib
This commit is contained in:
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user