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