Make crossinline and noinline incompatible

This commit is contained in:
Denis Zharkov
2016-01-28 19:36:42 +03:00
parent 87741e9b9f
commit 2cd88b8cbc
3 changed files with 4 additions and 0 deletions
@@ -146,6 +146,8 @@ object ModifierCheckerCore {
// private is compatible with open / abstract only for classes
result += compatibilityForClassesRegister(PRIVATE_KEYWORD, OPEN_KEYWORD)
result += compatibilityForClassesRegister(PRIVATE_KEYWORD, ABSTRACT_KEYWORD)
result += incompatibilityRegister(CROSSINLINE_KEYWORD, NOINLINE_KEYWORD)
return result
}
@@ -8,3 +8,4 @@ fun gav(<!ILLEGAL_INLINE_PARAMETER_MODIFIER!>noinline<!> x: (Int) -> Unit, <!ILL
inline fun correct(noinline x: (Int) -> Unit, crossinline y: (String) -> Int) {}
<!NOTHING_TO_INLINE!>inline<!> fun incompatible(<!INCOMPATIBLE_MODIFIERS!>noinline<!> <!INCOMPATIBLE_MODIFIERS!>crossinline<!> x: () -> String) {}
@@ -4,3 +4,4 @@ public inline fun bar(/*0*/ y: kotlin.Int, /*1*/ crossinline x: kotlin.String):
public inline fun correct(/*0*/ noinline x: (kotlin.Int) -> kotlin.Unit, /*1*/ crossinline y: (kotlin.String) -> kotlin.Int): kotlin.Unit
public inline fun foo(/*0*/ noinline x: kotlin.Int): kotlin.Unit
public fun gav(/*0*/ noinline x: (kotlin.Int) -> kotlin.Unit, /*1*/ crossinline y: (kotlin.String) -> kotlin.Int): kotlin.Unit
public inline fun incompatible(/*0*/ crossinline noinline x: () -> kotlin.String): kotlin.Unit