JS: prohibit non-abstract members of external interfaces, except for nullable properties. See KT-15308

This commit is contained in:
Alexey Andreev
2016-12-19 14:39:26 +03:00
parent 403753f5b5
commit 55d4c0e439
10 changed files with 81 additions and 5 deletions
@@ -0,0 +1,21 @@
external interface I {
<!NON_ABSTRACT_MEMBER_OF_EXTERNAL_INTERFACE!>fun foo(): Unit<!> = noImpl
val a: Int?
get() = noImpl
var b: String?
get() = noImpl
set(value) = noImpl
<!NON_ABSTRACT_MEMBER_OF_EXTERNAL_INTERFACE!>val c: Int<!>
get() = noImpl
<!NON_ABSTRACT_MEMBER_OF_EXTERNAL_INTERFACE!>var d: String<!>
get() = noImpl
set(value) = noImpl
var e: dynamic
get() = noImpl
set(value) = noImpl
}
@@ -0,0 +1,13 @@
package
public external interface I {
public open val a: kotlin.Int?
public open var b: kotlin.String?
public open val c: kotlin.Int
public open var d: kotlin.String
public open var e: dynamic
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open fun foo(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -11,7 +11,7 @@ external interface T {
val baz: Int
fun foo()
fun bar() {}
fun bar()
companion object {
val baz: Int
@@ -40,7 +40,7 @@ public external object O {
public external interface T {
public abstract val baz: kotlin.Int
public open fun bar(): kotlin.Unit
public abstract fun bar(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public abstract fun foo(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
@@ -9,5 +9,5 @@ external interface T {
@nativeGetter
fun foo(d: Double): String?
@nativeGetter
fun bar(d: Double): String? = noImpl
fun bar(d: Double): String?
}
@@ -4,7 +4,7 @@ package
@kotlin.js.nativeGetter public fun kotlin.String.foo(/*0*/ n: kotlin.Int): kotlin.Int?
public external interface T {
@kotlin.js.nativeGetter public open fun bar(/*0*/ d: kotlin.Double): kotlin.String?
@kotlin.js.nativeGetter public abstract fun bar(/*0*/ d: kotlin.Double): kotlin.String?
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
@kotlin.js.nativeGetter public abstract fun foo(/*0*/ d: kotlin.Double): kotlin.String?
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int