diff --git a/js/js.libraries/src/core/javalang.kt b/js/js.libraries/src/core/javalang.kt index 4f35357e6f4..c27193b5412 100644 --- a/js/js.libraries/src/core/javalang.kt +++ b/js/js.libraries/src/core/javalang.kt @@ -35,10 +35,12 @@ public trait Runnable { public open fun run() : Unit; } +library public trait Comparable { public fun compareTo(that: T): Int } +library public trait Appendable { public open fun append(csq: CharSequence?): Appendable? public open fun append(csq: CharSequence?, start: Int, end: Int): Appendable? diff --git a/js/js.libraries/src/core/javautil.kt b/js/js.libraries/src/core/javautil.kt index 3323285902d..00210dd79ab 100644 --- a/js/js.libraries/src/core/javautil.kt +++ b/js/js.libraries/src/core/javautil.kt @@ -17,48 +17,12 @@ public trait Iterator { open public fun remove() : Unit = js.noImpl } -public object Collections { - library("collectionsMax") - public fun max(col : Collection, comp : Comparator) : T = js.noImpl - - // TODO should be immutable! - public val emptyList: List = ArrayList() - public val emptyMap: Map = HashMap() - - public val EMPTY_LIST: List - get() = emptyList() - - public val EMPTY_MAP: Map - get() = emptyMap() - - public fun emptyList(): List = emptyList as List - public fun emptyMap(): Map = emptyMap as Map - - public fun sort(list: List): Unit { - throw UnsupportedOperationException() - } - - public fun sort(list: List, comparator: java.util.Comparator): Unit { - throw UnsupportedOperationException() - } - - public fun reverse(list: List): Unit { - val size = list.size() - for (i in 0.upto(size / 2)) { - val i2 = size - i - val tmp = list[i] - list[i] = list[i2] - list[i2] = tmp - } - } -} - library public trait Collection: Iterable { open public fun size(): Int open public fun isEmpty(): Boolean open public fun contains(o: Any?): Boolean - override public fun iterator(): Iterator + override public fun iterator(): java.util.Iterator public fun toArray(): Array // open public fun toArray(a : Array) : Array open public fun add(e: E): Boolean @@ -76,7 +40,7 @@ public abstract class AbstractCollection() : Collection { override public fun isEmpty(): Boolean = js.noImpl override public fun contains(o: Any?): Boolean = js.noImpl - override public fun iterator(): Iterator = js.noImpl + override public fun iterator(): java.util.Iterator = js.noImpl override public fun add(e: E): Boolean = js.noImpl override public fun remove(o: Any?): Boolean = js.noImpl diff --git a/js/js.libraries/src/core/javautilCode.kt b/js/js.libraries/src/core/javautilCode.kt new file mode 100644 index 00000000000..e8ae545c521 --- /dev/null +++ b/js/js.libraries/src/core/javautilCode.kt @@ -0,0 +1,39 @@ +package java.util + +import java.lang.* + +public object Collections { + library("collectionsMax") + public fun max(col : Collection, comp : Comparator) : T = js.noImpl + + // TODO should be immutable! + public val emptyList: List = ArrayList() + public val emptyMap: Map = HashMap() + + public val EMPTY_LIST: List + get() = emptyList() + + public val EMPTY_MAP: Map + get() = emptyMap() + + public fun emptyList(): List = emptyList as List + public fun emptyMap(): Map = emptyMap as Map + + public fun sort(list: List): Unit { + throw UnsupportedOperationException() + } + + public fun sort(list: List, comparator: java.util.Comparator): Unit { + throw UnsupportedOperationException() + } + + public fun reverse(list: List): Unit { + val size = list.size() + for (i in 0.upto(size / 2)) { + val i2 = size - i + val tmp = list[i] + list[i] = list[i2] + list[i2] = tmp + } + } +} diff --git a/js/js.libraries/src/core/stringDefs.kt b/js/js.libraries/src/core/string.kt similarity index 98% rename from js/js.libraries/src/core/stringDefs.kt rename to js/js.libraries/src/core/string.kt index 0cd5c9a2751..e96ed924991 100644 --- a/js/js.libraries/src/core/stringDefs.kt +++ b/js/js.libraries/src/core/string.kt @@ -12,7 +12,8 @@ native public fun String.indexOf(str : String, fromIndex : Int) : Int = js.noImp native public fun String.lastIndexOf(str: String) : Int = js.noImpl native public fun String.lastIndexOf(str : String, fromIndex : Int) : Int = js.noImpl -native public fun String.split(regex : String) : Array = js.noImpl +// Defined in javalang.kt +//native public fun String.split(regex : String) : Array = js.noImpl native public fun String.substring(beginIndex : Int) : String = js.noImpl native public fun String.substring(beginIndex : Int, endIndex : Int) : String = js.noImpl diff --git a/js/js.libraries/src/core/strings.kt b/js/js.libraries/src/core/stringsCode.kt similarity index 100% rename from js/js.libraries/src/core/strings.kt rename to js/js.libraries/src/core/stringsCode.kt diff --git a/js/js.libraries/src/stdlib/JUMaps.kt b/js/js.libraries/src/stdlib/JUMapsCode.kt similarity index 100% rename from js/js.libraries/src/stdlib/JUMaps.kt rename to js/js.libraries/src/stdlib/JUMapsCode.kt diff --git a/js/js.libraries/src/stdlib/dom.kt b/js/js.libraries/src/stdlib/domCode.kt similarity index 100% rename from js/js.libraries/src/stdlib/dom.kt rename to js/js.libraries/src/stdlib/domCode.kt diff --git a/js/js.libraries/src/stdlib/jutil.kt b/js/js.libraries/src/stdlib/jutilCode.kt similarity index 100% rename from js/js.libraries/src/stdlib/jutil.kt rename to js/js.libraries/src/stdlib/jutilCode.kt diff --git a/js/js.libraries/src/stdlib/test.kt b/js/js.libraries/src/stdlib/testCode.kt similarity index 100% rename from js/js.libraries/src/stdlib/test.kt rename to js/js.libraries/src/stdlib/testCode.kt diff --git a/js/js.translator/src/org/jetbrains/k2js/config/Config.java b/js/js.translator/src/org/jetbrains/k2js/config/Config.java index c79538bbdad..966c9551de0 100644 --- a/js/js.translator/src/org/jetbrains/k2js/config/Config.java +++ b/js/js.translator/src/org/jetbrains/k2js/config/Config.java @@ -56,28 +56,31 @@ public abstract class Config { @NotNull public static final List LIB_FILES_WITH_DECLARATIONS = Arrays.asList( "/core/annotations.kt", - "/jquery/common.kt", - "/jquery/ui.kt", - "/core/javautil.kt", - "/core/javalang.kt", - "/core/javaio.kt", - "/core/kotlin.kt", - "/core/date.kt", "/core/core.kt", - "/core/math.kt", - "/core/json.kt", - "/stdlib/browser.kt", + "/core/date.kt", "/core/dom.kt", + "/core/javaio.kt", + "/core/javalang.kt", + "/core/javautil.kt", + "/core/json.kt", + "/core/kotlin.kt", + "/core/math.kt", + "/core/string.kt", "/dom/domcore.kt", "/dom/html/htmlcore.kt", "/dom/html5/canvas.kt", "/dom/html/window.kt", + "/jquery/common.kt", + "/jquery/ui.kt", "/junit/core.kt", - "/qunit/core.kt" + "/qunit/core.kt", + "/stdlib/browser.kt" ); @NotNull - public static final List LIB_FILES_WITH_CODE = Lists.newArrayList(); + public static final List LIB_FILES_WITH_CODE = Arrays.asList( + "/core/javautilCode.kt" + ); @NotNull public static final List LIB_FILE_NAMES = Lists.newArrayList(); @@ -91,12 +94,11 @@ public abstract class Config { */ @NotNull public static final List LIB_FILE_NAMES_DEPENDENT_ON_STDLIB = Arrays.asList( - "/stdlib/dom.kt", - "/stdlib/jutil.kt", - //"/stdlib/JUMaps.kt", - "/stdlib/test.kt", - "/core/stringDefs.kt", - "/core/strings.kt" + "/core/stringsCode.kt", + "/stdlib/domCode.kt", + "/stdlib/jutilCode.kt", + //"/stdlib/JUMapsCode.kt", + "/stdlib/testCode.kt" ); public static final String LIBRARIES_LOCATION = "js/js.libraries/src"; diff --git a/js/js.translator/testFiles/kotlin_lib.js b/js/js.translator/testFiles/kotlin_lib.js index 2722a7e4201..eb4954fa902 100644 --- a/js/js.translator/testFiles/kotlin_lib.js +++ b/js/js.translator/testFiles/kotlin_lib.js @@ -161,6 +161,24 @@ var kotlin = {set:function (receiver, key, value) { } }); + Kotlin.Runnable = Kotlin.$createClass({ + initialize: function () { + }, + run: throwAbstractFunctionInvocationError + }); + + Kotlin.Comparable = Kotlin.$createClass({ + initialize: function () { + }, + compareTo: throwAbstractFunctionInvocationError + }); + + Kotlin.Appendable = Kotlin.$createClass({ + initialize: function () { + }, + append: throwAbstractFunctionInvocationError + }); + Kotlin.parseInt = function (str) { return parseInt(str, 10); }; diff --git a/libraries/tools/kotlin-js-library/pom.xml b/libraries/tools/kotlin-js-library/pom.xml index d4bf68bd910..f95559a88ea 100644 --- a/libraries/tools/kotlin-js-library/pom.xml +++ b/libraries/tools/kotlin-js-library/pom.xml @@ -31,25 +31,20 @@ + - - - - - - - - + + @@ -70,16 +65,22 @@ + - + + + + +