Prohibit annotations, modifiers and default values for parameters in function type

#KT-7619 fixed
This commit is contained in:
Alexey Tsvetkov
2015-10-08 18:06:51 +03:00
parent 27a1a17c09
commit 90849a67ae
9 changed files with 215 additions and 3 deletions
@@ -0,0 +1,20 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_VARIABLE
fun f(x: Int = 0) {}
val inVal: (x: Int = <!UNSUPPORTED!>0<!>)->Unit = {}
fun inParam(fn: (x: Int = <!UNSUPPORTED!>0<!>)->Unit) {}
fun inParamNested(fn1: (fn2: (n: Int = <!UNSUPPORTED!>0<!>)->Unit)->Unit) {}
fun inReturn(): (x: Int = <!UNSUPPORTED!>0<!>)->Unit = {}
class A : (x: Int = <!UNSUPPORTED!>0<!>)->Unit {
override fun invoke(p1: Int) {
var lambda: (x: Int = <!UNSUPPORTED!>0<!>)->Unit = {}
}
val prop: (x: Int = <!UNSUPPORTED!>0<!>)->Unit
get(): (x: Int = <!UNSUPPORTED!>0<!>)->Unit = {}
}
@@ -0,0 +1,16 @@
package
public val inVal: (kotlin.Int) -> kotlin.Unit
public fun f(/*0*/ x: kotlin.Int = ...): kotlin.Unit
public fun inParam(/*0*/ fn: (kotlin.Int) -> kotlin.Unit): kotlin.Unit
public fun inParamNested(/*0*/ fn1: ((kotlin.Int) -> kotlin.Unit) -> kotlin.Unit): kotlin.Unit
public fun inReturn(): (kotlin.Int) -> kotlin.Unit
public final class A : (kotlin.Int) -> kotlin.Unit {
public constructor A()
public final val prop: (kotlin.Int) -> kotlin.Unit
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
}
@@ -0,0 +1,29 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_VARIABLE
annotation class Ann
fun f(@Ann x: Int) {}
val inVal: (<!UNSUPPORTED!>@Ann<!> x: Int)->Unit = {}
fun inParam(fn: (<!UNSUPPORTED!>@Ann<!> x: Int)->Unit) {}
fun inParamNested(fn1: (fn2: (<!UNSUPPORTED!>@Ann<!> n: Int)->Unit)->Unit) {}
fun inReturn(): (<!UNSUPPORTED!>@Ann<!> x: Int)->Unit = {}
class A : (@<!DEBUG_INFO_MISSING_UNRESOLVED!>Ann<!> Int)->Unit {
override fun invoke(p1: Int) {
var lambda: (<!UNSUPPORTED!>@Ann<!> x: Int)->Unit = {}
}
val prop: (<!UNSUPPORTED!>@Ann<!> x: Int)->Unit
get(): (<!UNSUPPORTED!>@Ann<!> x: Int)->Unit = {}
}
@Target(AnnotationTarget.TYPE)
annotation class TypeAnn
val onType: (@TypeAnn A).(<!UNSUPPORTED!>@Ann<!> a: @TypeAnn A, @<!DEBUG_INFO_MISSING_UNRESOLVED!>TypeAnn<!> A)->@<!DEBUG_INFO_MISSING_UNRESOLVED!>TypeAnn<!> A? = <!EXPECTED_PARAMETERS_NUMBER_MISMATCH!>{<!> null }
fun (@TypeAnn A).extFun(@Ann a: @TypeAnn A): @<!DEBUG_INFO_MISSING_UNRESOLVED!>TypeAnn<!> A? = null
@@ -0,0 +1,32 @@
package
public val inVal: (kotlin.Int) -> kotlin.Unit
public val onType: @TypeAnn() A.(@TypeAnn() A, A) -> A?
public fun f(/*0*/ @Ann() x: kotlin.Int): kotlin.Unit
public fun inParam(/*0*/ fn: (kotlin.Int) -> kotlin.Unit): kotlin.Unit
public fun inParamNested(/*0*/ fn1: ((kotlin.Int) -> kotlin.Unit) -> kotlin.Unit): kotlin.Unit
public fun inReturn(): (kotlin.Int) -> kotlin.Unit
public fun @TypeAnn() A.extFun(/*0*/ @Ann() a: @TypeAnn() A): A?
public final class A : (kotlin.Int) -> kotlin.Unit {
public constructor A()
public final val prop: (kotlin.Int) -> kotlin.Unit
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
}
@kotlin.annotation.annotation() public final class Ann : kotlin.Annotation {
public constructor Ann()
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*/ /*fake_override*/ fun toString(): kotlin.String
}
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.TYPE}) @kotlin.annotation.annotation() public final class TypeAnn : kotlin.Annotation {
public constructor TypeAnn()
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*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -1,4 +1,3 @@
package typeReferenceError
<!ABSTRACT_MEMBER_NOT_IMPLEMENTED!>class Pair<!><<!SYNTAX!><!>:(val c: <!SYNTAX!><!SYNTAX!><!>fun<!><!SYNTAX!><!> <!UNRESOLVED_REFERENCE!>main<!>()
<!ABSTRACT_MEMBER_NOT_IMPLEMENTED!>class Pair<!><<!SYNTAX!><!>:(<!UNSUPPORTED!>val<!> c: <!SYNTAX!><!SYNTAX!><!>fun<!><!SYNTAX!><!> <!UNRESOLVED_REFERENCE!>main<!>()
@@ -0,0 +1,52 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_VARIABLE
fun f(vararg x: Int) {}
val inVal: (<!UNSUPPORTED!>vararg<!> x: Int)->Unit = {}
fun inParam(fn: (<!UNSUPPORTED!>vararg<!> x: Int)->Unit) {}
fun inParamNested(fn1: (fn2: (<!UNSUPPORTED!>vararg<!> n: Int)->Unit)->Unit) {}
fun inReturn(): (<!UNSUPPORTED!>vararg<!> x: Int)->Unit = {}
class A : (<!UNSUPPORTED!>vararg<!> x: Int)->Unit {
override fun invoke(p1: Int) {
var lambda: (<!UNSUPPORTED!>vararg<!> x: Int)->Unit = {}
}
val prop: (<!UNSUPPORTED!>vararg<!> x: Int)->Unit
get(): (<!UNSUPPORTED!>vararg<!> x: Int)->Unit = {}
}
val allProhibited: (<!UNSUPPORTED!>abstract<!>
<!UNSUPPORTED!>annotation<!>
<!UNSUPPORTED!>companion<!>
<!UNSUPPORTED!>const<!>
<!UNSUPPORTED!>crossinline<!>
<!UNSUPPORTED!>data<!>
<!UNSUPPORTED!>enum<!>
<!UNSUPPORTED!>external<!>
<!UNSUPPORTED!>final<!>
<!UNSUPPORTED!>in<!>
<!UNSUPPORTED!>inline<!>
<!UNSUPPORTED!>inner<!>
<!UNSUPPORTED!>internal<!>
<!UNSUPPORTED!>lateinit<!>
<!UNSUPPORTED!>noinline<!>
<!UNSUPPORTED!>open<!>
<!UNSUPPORTED!>operator<!>
<!UNSUPPORTED!>out<!>
<!UNSUPPORTED!>override<!>
<!UNSUPPORTED!>private<!>
<!UNSUPPORTED!>protected<!>
<!UNSUPPORTED!>public<!>
<!UNSUPPORTED!>reified<!>
<!UNSUPPORTED!>sealed<!>
<!UNSUPPORTED!>tailrec<!>
<!UNSUPPORTED!>vararg<!>
x: Int)->Unit = {}
val valProhibited: (<!UNSUPPORTED!>val<!> x: Int)->Unit = {}
val varProhibited: (<!UNSUPPORTED!>var<!> x: Int)->Unit = {}
@@ -0,0 +1,19 @@
package
public val allProhibited: (kotlin.Int) -> kotlin.Unit
public val inVal: (kotlin.Int) -> kotlin.Unit
public val valProhibited: (kotlin.Int) -> kotlin.Unit
public val varProhibited: (kotlin.Int) -> kotlin.Unit
public fun f(/*0*/ vararg x: kotlin.Int /*kotlin.IntArray*/): kotlin.Unit
public fun inParam(/*0*/ fn: (kotlin.Int) -> kotlin.Unit): kotlin.Unit
public fun inParamNested(/*0*/ fn1: ((kotlin.Int) -> kotlin.Unit) -> kotlin.Unit): kotlin.Unit
public fun inReturn(): (kotlin.Int) -> kotlin.Unit
public final class A : (kotlin.Int) -> kotlin.Unit {
public constructor A()
public final val prop: (kotlin.Int) -> kotlin.Unit
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
}