From 5243b451f77a87e4c700569c4df06c11bad44c45 Mon Sep 17 00:00:00 2001 From: Alexey Andreev Date: Mon, 23 Jan 2017 16:39:31 +0300 Subject: [PATCH] JS: replace `noImpl` with `definedExternally` in hand-written stdlib --- js/js.libraries/src/browser/declarations.kt | 8 ++-- js/js.libraries/src/core/collections.kt | 2 +- js/js.libraries/src/core/core.kt | 12 ++--- js/js.libraries/src/core/date.kt | 2 +- js/js.libraries/src/core/debug.kt | 2 +- js/js.libraries/src/core/javautil.kt | 2 +- js/js.libraries/src/core/json.kt | 4 +- js/js.libraries/src/core/kotlin.kt | 18 ++++---- js/js.libraries/src/core/math.kt | 46 +++++++++---------- js/js.libraries/src/core/regexp.kt | 14 +++--- js/js.libraries/src/core/string.kt | 2 +- .../src/deprecated/jquery/common.kt | 10 ++-- js/js.libraries/src/deprecated/qunit/core.kt | 2 +- js/js.libraries/src/reflect/JsClass.kt | 2 +- .../kotlin.test/js/src/main/kotlin/QUnit.kt | 2 +- 15 files changed, 63 insertions(+), 65 deletions(-) diff --git a/js/js.libraries/src/browser/declarations.kt b/js/js.libraries/src/browser/declarations.kt index 35873770e22..83ddfe63df8 100644 --- a/js/js.libraries/src/browser/declarations.kt +++ b/js/js.libraries/src/browser/declarations.kt @@ -2,11 +2,11 @@ package kotlin.browser import org.w3c.dom.* -public external val window: Window = noImpl +public external val window: Window -public external val document: Document = noImpl +public external val document: Document -public external val localStorage: Storage = noImpl +public external val localStorage: Storage -public external val sessionStorage: Storage = noImpl +public external val sessionStorage: Storage diff --git a/js/js.libraries/src/core/collections.kt b/js/js.libraries/src/core/collections.kt index 554a71aebbf..ecb4bae9fb5 100644 --- a/js/js.libraries/src/core/collections.kt +++ b/js/js.libraries/src/core/collections.kt @@ -58,7 +58,7 @@ internal fun copyToArrayImpl(collection: Collection<*>, array: Array): Ar } @library("arrayToString") -internal fun arrayToString(array: Array<*>): String = noImpl +internal fun arrayToString(array: Array<*>): String = definedExternally /** * Returns an immutable list containing only the specified object [element]. diff --git a/js/js.libraries/src/core/core.kt b/js/js.libraries/src/core/core.kt index 7bdb23a2855..f093639a347 100644 --- a/js/js.libraries/src/core/core.kt +++ b/js/js.libraries/src/core/core.kt @@ -1,22 +1,20 @@ package kotlin.js public external val noImpl: Nothing - get() = definedExternally public external val definedExternally: Nothing - get() = definedExternally -public external fun eval(expr: String): dynamic = noImpl +public external fun eval(expr: String): dynamic -public external val undefined: Nothing? = noImpl +public external val undefined: Nothing? @Deprecated("Use toInt(radix) instead.", ReplaceWith("s.toInt(radix)"), level = DeprecationLevel.ERROR) -public external fun parseInt(s: String, radix: Int = noImpl): Int +public external fun parseInt(s: String, radix: Int = definedExternally): Int @Deprecated("Use toDouble() instead.", ReplaceWith("s.toDouble()"), level = DeprecationLevel.ERROR) -public external fun parseFloat(s: String, radix: Int = noImpl): Double +public external fun parseFloat(s: String, radix: Int = definedExternally): Double -public external fun js(code: String): dynamic = noImpl +public external fun js(code: String): dynamic /** * Function corresponding to JavaScript's `typeof` operator diff --git a/js/js.libraries/src/core/date.kt b/js/js.libraries/src/core/date.kt index 7ec07354ca1..409ca5c0b13 100644 --- a/js/js.libraries/src/core/date.kt +++ b/js/js.libraries/src/core/date.kt @@ -1,5 +1,5 @@ package kotlin.js public external class Date() { - public fun getTime(): Int = noImpl + public fun getTime(): Int } diff --git a/js/js.libraries/src/core/debug.kt b/js/js.libraries/src/core/debug.kt index 5d2806ec52f..dc48d442c08 100644 --- a/js/js.libraries/src/core/debug.kt +++ b/js/js.libraries/src/core/debug.kt @@ -9,4 +9,4 @@ external public interface Console { public fun warn(vararg o: Any?): Unit } -public external val console: Console = noImpl +public external val console: Console diff --git a/js/js.libraries/src/core/javautil.kt b/js/js.libraries/src/core/javautil.kt index ee447842f72..e413ea80344 100644 --- a/js/js.libraries/src/core/javautil.kt +++ b/js/js.libraries/src/core/javautil.kt @@ -22,7 +22,7 @@ package java.util @Deprecated("Use kotlin.js.Date instead", ReplaceWith("kotlin.js.Date")) public external class Date() { - public fun getTime(): Int = noImpl + public fun getTime(): Int } @Deprecated("Use kotlin.collections.RandomAccess instead", ReplaceWith("kotlin.collections.RandomAccess")) diff --git a/js/js.libraries/src/core/json.kt b/js/js.libraries/src/core/json.kt index 39c436ddd2d..8cbec420daf 100644 --- a/js/js.libraries/src/core/json.kt +++ b/js/js.libraries/src/core/json.kt @@ -1,8 +1,8 @@ package kotlin.js public external class Json() { - operator fun get(propertyName: String): Any? = noImpl - operator fun set(propertyName: String, value: Any?): Unit = noImpl + operator fun get(propertyName: String): Any? + operator fun set(propertyName: String, value: Any?): Unit } public fun json(vararg pairs: Pair): Json { diff --git a/js/js.libraries/src/core/kotlin.kt b/js/js.libraries/src/core/kotlin.kt index 4c01a504fcb..2055ee4393b 100644 --- a/js/js.libraries/src/core/kotlin.kt +++ b/js/js.libraries/src/core/kotlin.kt @@ -22,31 +22,31 @@ package kotlin public inline fun emptyArray(): Array = js("[]") @library -public fun arrayOf(vararg elements: T): Array = noImpl +public fun arrayOf(vararg elements: T): Array = definedExternally @library -public fun doubleArrayOf(vararg elements: Double): DoubleArray = noImpl +public fun doubleArrayOf(vararg elements: Double): DoubleArray = definedExternally @library -public fun floatArrayOf(vararg elements: Float): FloatArray = noImpl +public fun floatArrayOf(vararg elements: Float): FloatArray = definedExternally @library -public fun longArrayOf(vararg elements: Long): LongArray = noImpl +public fun longArrayOf(vararg elements: Long): LongArray = definedExternally @library -public fun intArrayOf(vararg elements: Int): IntArray = noImpl +public fun intArrayOf(vararg elements: Int): IntArray = definedExternally @library -public fun charArrayOf(vararg elements: Char): CharArray = noImpl +public fun charArrayOf(vararg elements: Char): CharArray = definedExternally @library -public fun shortArrayOf(vararg elements: Short): ShortArray = noImpl +public fun shortArrayOf(vararg elements: Short): ShortArray = definedExternally @library -public fun byteArrayOf(vararg elements: Byte): ByteArray = noImpl +public fun byteArrayOf(vararg elements: Byte): ByteArray = definedExternally @library -public fun booleanArrayOf(vararg elements: Boolean): BooleanArray = noImpl +public fun booleanArrayOf(vararg elements: Boolean): BooleanArray = definedExternally /** * Creates a new instance of the [Lazy] that uses the specified initialization function [initializer]. diff --git a/js/js.libraries/src/core/math.kt b/js/js.libraries/src/core/math.kt index 683548979ca..b57ef960c00 100644 --- a/js/js.libraries/src/core/math.kt +++ b/js/js.libraries/src/core/math.kt @@ -2,29 +2,29 @@ package kotlin.js //TODO: declare using number public external object Math { - public val PI: Double = noImpl - public fun random(): Double = noImpl - public fun abs(value: Double): Double = noImpl - public fun acos(value: Double): Double = noImpl - public fun asin(value: Double): Double = noImpl - public fun atan(value: Double): Double = noImpl - public fun atan2(x: Double, y: Double): Double = noImpl - public fun cos(value: Double): Double = noImpl - public fun sin(value: Double): Double = noImpl - public fun exp(value: Double): Double = noImpl - public fun max(vararg values: Int): Int = noImpl - public fun max(vararg values: Float): Float = noImpl - public fun max(vararg values: Double): Double = noImpl - public fun min(vararg values: Int): Int = noImpl - public fun min(vararg values: Float): Float = noImpl - public fun min(vararg values: Double): Double = noImpl - public fun sqrt(value: Double): Double = noImpl - public fun tan(value: Double): Double = noImpl - public fun log(value: Double): Double = noImpl - public fun pow(base: Double, exp: Double): Double = noImpl - public fun round(value: Number): Int = noImpl - public fun floor(value: Number): Int = noImpl - public fun ceil(value: Number): Int = noImpl + public val PI: Double + public fun random(): Double + public fun abs(value: Double): Double + public fun acos(value: Double): Double + public fun asin(value: Double): Double + public fun atan(value: Double): Double + public fun atan2(x: Double, y: Double): Double + public fun cos(value: Double): Double + public fun sin(value: Double): Double + public fun exp(value: Double): Double + public fun max(vararg values: Int): Int + public fun max(vararg values: Float): Float + public fun max(vararg values: Double): Double + public fun min(vararg values: Int): Int + public fun min(vararg values: Float): Float + public fun min(vararg values: Double): Double + public fun sqrt(value: Double): Double + public fun tan(value: Double): Double + public fun log(value: Double): Double + public fun pow(base: Double, exp: Double): Double + public fun round(value: Number): Int + public fun floor(value: Number): Int + public fun ceil(value: Number): Int } public fun Math.min(a: Long, b: Long): Long = if (a <= b) a else b diff --git a/js/js.libraries/src/core/regexp.kt b/js/js.libraries/src/core/regexp.kt index 63fa88f1b57..8b6e8145842 100644 --- a/js/js.libraries/src/core/regexp.kt +++ b/js/js.libraries/src/core/regexp.kt @@ -17,22 +17,22 @@ package kotlin.text.js -public external class RegExp(pattern: String, flags: String? = noImpl) { +public external class RegExp(pattern: String, flags: String? = definedExternally) { - public fun test(str: String): Boolean = noImpl + public fun test(str: String): Boolean - public fun exec(str: String): RegExpMatch? = noImpl + public fun exec(str: String): RegExpMatch? - public override fun toString(): String = noImpl + public override fun toString(): String /** * The lastIndex is a read/write integer property of regular expressions that specifies the index at which to start the next match. */ public var lastIndex: Int - public val global: Boolean get() = noImpl - public val ignoreCase: Boolean get() = noImpl - public val multiline: Boolean get() = noImpl + public val global: Boolean + public val ignoreCase: Boolean + public val multiline: Boolean } public fun RegExp.reset() { diff --git a/js/js.libraries/src/core/string.kt b/js/js.libraries/src/core/string.kt index f88a9101c52..03279036331 100644 --- a/js/js.libraries/src/core/string.kt +++ b/js/js.libraries/src/core/string.kt @@ -22,7 +22,7 @@ public inline fun String.concat(str: String): String = asDynamic().concat(str) public inline fun String.match(regex: String): Array = asDynamic().match(regex) -//native public fun String.trim() : String = noImpl +//native public fun String.trim(): String //TODO: String.replace to implement effective trimLeading and trimTrailing public inline val CharSequence.size: Int get() = asDynamic().length diff --git a/js/js.libraries/src/deprecated/jquery/common.kt b/js/js.libraries/src/deprecated/jquery/common.kt index 0942f12a9ec..146a085cdf2 100644 --- a/js/js.libraries/src/deprecated/jquery/common.kt +++ b/js/js.libraries/src/deprecated/jquery/common.kt @@ -3,8 +3,8 @@ package jquery import org.w3c.dom.Element public external class JQuery() { - public fun addClass(className: String): JQuery = noImpl; - public fun addClass(f: Element.(Int, String) -> String): JQuery = noImpl; + public fun addClass(className: String): JQuery + public fun addClass(f: Element.(Int, String) -> String): JQuery public fun attr(attrName: String): String public fun attr(attrName: String, value: String): JQuery @@ -37,9 +37,9 @@ public external class JQuery() { public fun slideUp(): JQuery public fun hover(handlerInOut: Element.() -> Unit): JQuery public fun hover(handlerIn: Element.() -> Unit, handlerOut: Element.() -> Unit): JQuery - public fun next(): JQuery = noImpl - public fun parent(): JQuery = noImpl - public fun `val`(): String? = noImpl + public fun next(): JQuery + public fun parent(): JQuery + public fun `val`(): String? } open public external class MouseEvent() { diff --git a/js/js.libraries/src/deprecated/qunit/core.kt b/js/js.libraries/src/deprecated/qunit/core.kt index 498a4ce1c84..2752e87c31b 100644 --- a/js/js.libraries/src/deprecated/qunit/core.kt +++ b/js/js.libraries/src/deprecated/qunit/core.kt @@ -4,5 +4,5 @@ package QUnit * The [QUnit](http://qunitjs.com/) API */ -public external fun ok(actual: Boolean, message: String?): Unit = noImpl +public external fun ok(actual: Boolean, message: String?): Unit diff --git a/js/js.libraries/src/reflect/JsClass.kt b/js/js.libraries/src/reflect/JsClass.kt index f741986472e..1ac26afbe12 100644 --- a/js/js.libraries/src/reflect/JsClass.kt +++ b/js/js.libraries/src/reflect/JsClass.kt @@ -25,7 +25,7 @@ external interface JsClass { } @Deprecated("Use class literal and extension property `js` instead.", replaceWith = ReplaceWith("T::class.js")) -external fun jsClass(): JsClass = noImpl +external fun jsClass(): JsClass @Deprecated("Use class literal and extension property `js` instead.", replaceWith = ReplaceWith("this::class.js")) val T.jsClass: JsClass diff --git a/libraries/kotlin.test/js/src/main/kotlin/QUnit.kt b/libraries/kotlin.test/js/src/main/kotlin/QUnit.kt index 56b5978e806..d6a1637d876 100644 --- a/libraries/kotlin.test/js/src/main/kotlin/QUnit.kt +++ b/libraries/kotlin.test/js/src/main/kotlin/QUnit.kt @@ -4,5 +4,5 @@ package QUnit * The [QUnit](http://qunitjs.com/) API */ -external fun ok(actual: Boolean, message: String?): Unit = noImpl +external fun ok(actual: Boolean, message: String?): Unit