Prohibit named parameters in function types in supertype position

This commit is contained in:
Alexey Tsvetkov
2015-10-07 15:39:47 +03:00
parent 90849a67ae
commit 0e606a3210
9 changed files with 57 additions and 8 deletions
@@ -10,7 +10,7 @@ fun inParamNested(fn1: (fn2: (n: Int = <!UNSUPPORTED!>0<!>)->Unit)->Unit) {}
fun inReturn(): (x: Int = <!UNSUPPORTED!>0<!>)->Unit = {}
class A : (x: Int = <!UNSUPPORTED!>0<!>)->Unit {
class A : (Int)->Unit {
override fun invoke(p1: Int) {
var lambda: (x: Int = <!UNSUPPORTED!>0<!>)->Unit = {}
}
@@ -0,0 +1,9 @@
abstract class A : Function1<Any, Unit>
abstract class B : (Int)->Unit
// Named parameter is prohibited because of possible inconsistency between
// type declaration and actual override
class C : (<!UNSUPPORTED!>x<!>: Int)->Unit {
override fun invoke(p1: Int): Unit {}
}
@@ -0,0 +1,25 @@
package
public abstract class A : (kotlin.Any) -> kotlin.Unit {
public constructor A()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public abstract override /*1*/ /*fake_override*/ fun invoke(/*0*/ p1: kotlin.Any): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public abstract class B : (kotlin.Int) -> kotlin.Unit {
public constructor B()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public abstract override /*1*/ /*fake_override*/ fun invoke(/*0*/ p1: kotlin.Int): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public final class C : (kotlin.Int) -> kotlin.Unit {
public constructor C()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ fun invoke(/*0*/ p1: kotlin.Int): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -1 +1 @@
class A : (categoryName: <!SYNTAX!><!>)<!SYNTAX!><!> <!SYNTAX!><!>{<!SYNTAX!><!>
class A : (<!UNSUPPORTED!>categoryName<!>: <!SYNTAX!><!>)<!SYNTAX!><!> <!SYNTAX!><!>{<!SYNTAX!><!>
@@ -1,3 +1,3 @@
package typeReferenceError
<!ABSTRACT_MEMBER_NOT_IMPLEMENTED!>class Pair<!><<!SYNTAX!><!>:(<!UNSUPPORTED!>val<!> c: <!SYNTAX!><!SYNTAX!><!>fun<!><!SYNTAX!><!> <!UNRESOLVED_REFERENCE!>main<!>()
<!ABSTRACT_MEMBER_NOT_IMPLEMENTED!>class Pair<!><<!SYNTAX!><!>:(<!UNSUPPORTED!>val<!> <!UNSUPPORTED!>c<!>: <!SYNTAX!><!SYNTAX!><!>fun<!><!SYNTAX!><!> <!UNRESOLVED_REFERENCE!>main<!>()
@@ -10,7 +10,7 @@ fun inParamNested(fn1: (fn2: (<!UNSUPPORTED!>vararg<!> n: Int)->Unit)->Unit) {}
fun inReturn(): (<!UNSUPPORTED!>vararg<!> x: Int)->Unit = {}
class A : (<!UNSUPPORTED!>vararg<!> x: Int)->Unit {
class A : (<!UNSUPPORTED!>vararg<!> Int)->Unit {
override fun invoke(p1: Int) {
var lambda: (<!UNSUPPORTED!>vararg<!> x: Int)->Unit = {}
}