Js frontend: prohibit default values for functions annotated as nativeIndexer.

This commit is contained in:
Zalim Bashorov
2014-12-01 17:17:38 +03:00
parent 4c3073d03e
commit 92984a37ea
29 changed files with 130 additions and 30 deletions
@@ -18,4 +18,7 @@ fun foo() {
<!NATIVE_INDEXER_WRONG_PARAMETER_COUNT!>[nativeGetter]
fun Int.get3(<!NATIVE_INDEXER_KEY_SHOULD_BE_STRING_OR_NUMBER!>a: Any<!>, b: Int, c: Any?): String?<!> = "OK"
[nativeGetter]
fun Any.foo(<!NATIVE_INDEXER_CAN_NOT_HAVE_DEFAULT_ARGUMENTS!>a: Int = 1<!>): Any? = "OK"
}
@@ -41,5 +41,8 @@ fun foo() {
nativeGetter
fun bar(a: String): <!NATIVE_GETTER_RETURN_TYPE_SHOULD_BE_NULLABLE!>Int<!> = 0
nativeGetter
fun baz(<!NATIVE_INDEXER_CAN_NOT_HAVE_DEFAULT_ARGUMENTS!>a: String = "foo"<!>): Int? = 0
}
}
@@ -38,5 +38,8 @@ fun foo() {
<!NATIVE_ANNOTATIONS_ALLOWED_ONLY_ON_MEMBER_OR_EXTENSION_FUN!>nativeGetter
fun bar(a: String): <!NATIVE_GETTER_RETURN_TYPE_SHOULD_BE_NULLABLE!>Int<!><!> = 0
<!NATIVE_ANNOTATIONS_ALLOWED_ONLY_ON_MEMBER_OR_EXTENSION_FUN!>nativeGetter
fun baz(<!NATIVE_INDEXER_CAN_NOT_HAVE_DEFAULT_ARGUMENTS!>a: Int = 0<!>): Int?<!> = 0
}
}
@@ -63,6 +63,9 @@ class C {
nativeGetter
fun bar(a: String): <!NATIVE_GETTER_RETURN_TYPE_SHOULD_BE_NULLABLE!>Int<!> = 0
nativeGetter
fun baz(<!NATIVE_INDEXER_CAN_NOT_HAVE_DEFAULT_ARGUMENTS!>a: String = "foo"<!>): Int? = 0
class object {
<!NATIVE_ANNOTATIONS_ALLOWED_ONLY_ON_MEMBER_OR_EXTENSION_FUN!>nativeGetter
fun Int.get(a: String): Int?<!> = 1
@@ -67,6 +67,7 @@ kotlin.js.native() internal final class B {
kotlin.js.native() internal final class C {
public constructor C()
kotlin.js.nativeGetter() internal final fun bar(/*0*/ a: kotlin.String): kotlin.Int
kotlin.js.nativeGetter() internal final fun baz(/*0*/ a: kotlin.String = ...): kotlin.Int?
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
kotlin.js.nativeGetter() internal final fun foo(/*0*/ a: kotlin.Int): kotlin.Unit
kotlin.js.nativeGetter() internal final fun get(): kotlin.Any?
@@ -62,6 +62,9 @@ class A {
nativeGetter
fun bar(a: String): <!NATIVE_GETTER_RETURN_TYPE_SHOULD_BE_NULLABLE!>Int<!> = 0
nativeGetter
fun baz(<!NATIVE_INDEXER_CAN_NOT_HAVE_DEFAULT_ARGUMENTS!>a: Number = 1.1<!>): Int? = 0
}
object obj {
@@ -85,6 +88,9 @@ class A {
nativeGetter
fun bar(a: String): <!NATIVE_GETTER_RETURN_TYPE_SHOULD_BE_NULLABLE!>Int<!> = 0
nativeGetter
fun baz(<!NATIVE_INDEXER_CAN_NOT_HAVE_DEFAULT_ARGUMENTS!>a: String = "foo"<!>): Int? = 0
}
val anonymous = object {
@@ -108,6 +114,9 @@ class A {
nativeGetter
fun bar(a: String): <!NATIVE_GETTER_RETURN_TYPE_SHOULD_BE_NULLABLE!>Int<!> = 0
nativeGetter
fun baz(<!NATIVE_INDEXER_CAN_NOT_HAVE_DEFAULT_ARGUMENTS!>a: String = "foo"<!>): Int? = 0
}
}
}
@@ -80,6 +80,7 @@ kotlin.js.native() internal final class A {
internal final class C {
public constructor C()
kotlin.js.nativeGetter() internal final fun bar(/*0*/ a: kotlin.String): kotlin.Int
kotlin.js.nativeGetter() internal final fun baz(/*0*/ a: kotlin.Number = ...): kotlin.Int?
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
kotlin.js.nativeGetter() internal final fun foo(/*0*/ a: kotlin.Int): kotlin.Unit
kotlin.js.nativeGetter() internal final fun get(): kotlin.Any?
@@ -94,6 +95,7 @@ kotlin.js.native() internal final class A {
internal object obj {
private constructor obj()
kotlin.js.nativeGetter() internal final fun bar(/*0*/ a: kotlin.String): kotlin.Int
kotlin.js.nativeGetter() internal final fun baz(/*0*/ a: kotlin.String = ...): kotlin.Int?
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
kotlin.js.nativeGetter() internal final fun foo(/*0*/ a: kotlin.Int): kotlin.Unit
kotlin.js.nativeGetter() internal final fun get(): kotlin.Any?
@@ -107,6 +109,7 @@ kotlin.js.native() internal final class A {
public class object <class-object-for-obj> : A.B.obj {
private constructor <class-object-for-obj>()
kotlin.js.nativeGetter() internal final override /*1*/ /*fake_override*/ fun bar(/*0*/ a: kotlin.String): kotlin.Int
kotlin.js.nativeGetter() internal final override /*1*/ /*fake_override*/ fun baz(/*0*/ a: kotlin.String = ...): kotlin.Int?
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
kotlin.js.nativeGetter() internal final override /*1*/ /*fake_override*/ fun foo(/*0*/ a: kotlin.Int): kotlin.Unit
kotlin.js.nativeGetter() internal final override /*1*/ /*fake_override*/ fun get(): kotlin.Any?
@@ -70,6 +70,9 @@ class A {
<!NATIVE_ANNOTATIONS_ALLOWED_ONLY_ON_MEMBER_OR_EXTENSION_FUN!>nativeGetter
fun bar(a: String): <!NATIVE_GETTER_RETURN_TYPE_SHOULD_BE_NULLABLE!>Int<!><!> = 0
<!NATIVE_ANNOTATIONS_ALLOWED_ONLY_ON_MEMBER_OR_EXTENSION_FUN!>nativeGetter
fun baz(<!NATIVE_INDEXER_CAN_NOT_HAVE_DEFAULT_ARGUMENTS!>a: String = "foo"<!>): Int?<!> = 0
}
object obj {
@@ -84,6 +87,9 @@ class A {
<!NATIVE_ANNOTATIONS_ALLOWED_ONLY_ON_MEMBER_OR_EXTENSION_FUN!>nativeGetter
fun bar(a: String): <!NATIVE_GETTER_RETURN_TYPE_SHOULD_BE_NULLABLE!>Int<!><!> = 0
<!NATIVE_ANNOTATIONS_ALLOWED_ONLY_ON_MEMBER_OR_EXTENSION_FUN!>nativeGetter
fun baz(<!NATIVE_INDEXER_CAN_NOT_HAVE_DEFAULT_ARGUMENTS!>a: Double = 0.0<!>): Int?<!> = 0
}
val anonymous = object {
@@ -98,6 +104,9 @@ class A {
<!NATIVE_ANNOTATIONS_ALLOWED_ONLY_ON_MEMBER_OR_EXTENSION_FUN!>nativeGetter
fun bar(a: String): <!NATIVE_GETTER_RETURN_TYPE_SHOULD_BE_NULLABLE!>Int<!><!> = 0
<!NATIVE_ANNOTATIONS_ALLOWED_ONLY_ON_MEMBER_OR_EXTENSION_FUN!>nativeGetter
fun baz(<!NATIVE_INDEXER_CAN_NOT_HAVE_DEFAULT_ARGUMENTS!>a: String = "foo"<!>): Int?<!> = 0
}
}
}
@@ -86,6 +86,7 @@ internal final class A {
internal final class C {
public constructor C()
kotlin.js.nativeGetter() internal final fun bar(/*0*/ a: kotlin.String): kotlin.Int
kotlin.js.nativeGetter() internal final fun baz(/*0*/ a: kotlin.String = ...): kotlin.Int?
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
kotlin.js.nativeGetter() internal final fun foo(/*0*/ a: kotlin.Int): kotlin.Unit
kotlin.js.nativeGetter() internal final fun get(): kotlin.Any?
@@ -97,6 +98,7 @@ internal final class A {
internal object obj {
private constructor obj()
kotlin.js.nativeGetter() internal final fun bar(/*0*/ a: kotlin.String): kotlin.Int
kotlin.js.nativeGetter() internal final fun baz(/*0*/ a: kotlin.Double = ...): kotlin.Int?
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
kotlin.js.nativeGetter() internal final fun foo(/*0*/ a: kotlin.Int): kotlin.Unit
kotlin.js.nativeGetter() internal final fun get(): kotlin.Any?
@@ -107,6 +109,7 @@ internal final class A {
public class object <class-object-for-obj> : A.B.obj {
private constructor <class-object-for-obj>()
kotlin.js.nativeGetter() internal final override /*1*/ /*fake_override*/ fun bar(/*0*/ a: kotlin.String): kotlin.Int
kotlin.js.nativeGetter() internal final override /*1*/ /*fake_override*/ fun baz(/*0*/ a: kotlin.Double = ...): kotlin.Int?
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
kotlin.js.nativeGetter() internal final override /*1*/ /*fake_override*/ fun foo(/*0*/ a: kotlin.Int): kotlin.Unit
kotlin.js.nativeGetter() internal final override /*1*/ /*fake_override*/ fun get(): kotlin.Any?
@@ -59,4 +59,7 @@ class C {
<!NATIVE_ANNOTATIONS_ALLOWED_ONLY_ON_MEMBER_OR_EXTENSION_FUN!>nativeGetter
fun bar(a: String): <!NATIVE_GETTER_RETURN_TYPE_SHOULD_BE_NULLABLE!>Int<!><!> = 0
<!NATIVE_ANNOTATIONS_ALLOWED_ONLY_ON_MEMBER_OR_EXTENSION_FUN!>nativeGetter
fun baz(<!NATIVE_INDEXER_CAN_NOT_HAVE_DEFAULT_ARGUMENTS!>a: String = "foo"<!>): Int?<!> = 0
}
@@ -67,6 +67,7 @@ internal final class B {
internal final class C {
public constructor C()
kotlin.js.nativeGetter() internal final fun bar(/*0*/ a: kotlin.String): kotlin.Int
kotlin.js.nativeGetter() internal final fun baz(/*0*/ a: kotlin.String = ...): kotlin.Int?
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
kotlin.js.nativeGetter() internal final fun foo(/*0*/ a: kotlin.Int): kotlin.Unit
kotlin.js.nativeGetter() internal final fun get(): kotlin.Any?
@@ -9,6 +9,9 @@ fun Int.get2(a: Number): String? = "OK"
nativeGetter
fun Int.get3(a: Int): String? = "OK"
nativeGetter
fun Int.baz(<!NATIVE_INDEXER_CAN_NOT_HAVE_DEFAULT_ARGUMENTS!>a: Int = 0<!>): String? = "OK"
nativeGetter
fun Int.get(<!NATIVE_INDEXER_KEY_SHOULD_BE_STRING_OR_NUMBER!>a: Any<!>): Int? = 1
@@ -1,5 +1,6 @@
package
kotlin.js.nativeGetter() internal fun kotlin.Int.baz(/*0*/ a: kotlin.Int = ...): kotlin.String?
kotlin.js.nativeGetter() internal fun kotlin.Int.get(/*0*/ a: kotlin.Any): kotlin.Int?
kotlin.js.nativeGetter() internal fun kotlin.Int.get(/*0*/ a: kotlin.String): kotlin.Int?
kotlin.js.nativeGetter() internal fun kotlin.Int.get2(): kotlin.String?