From 2cd88b8cbc8a7dd2b2e3b26ffee431d59b25250d Mon Sep 17 00:00:00 2001 From: Denis Zharkov Date: Thu, 28 Jan 2016 19:36:42 +0300 Subject: [PATCH] Make crossinline and noinline incompatible --- .../src/org/jetbrains/kotlin/resolve/ModifiersChecker.kt | 2 ++ .../testData/diagnostics/tests/modifiers/inlineParameters.kt | 1 + .../testData/diagnostics/tests/modifiers/inlineParameters.txt | 1 + 3 files changed, 4 insertions(+) diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/ModifiersChecker.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/ModifiersChecker.kt index 166dae0f149..4dbe30e1ee8 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/ModifiersChecker.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/ModifiersChecker.kt @@ -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 } diff --git a/compiler/testData/diagnostics/tests/modifiers/inlineParameters.kt b/compiler/testData/diagnostics/tests/modifiers/inlineParameters.kt index 7195b64ef53..2c167f2aeba 100644 --- a/compiler/testData/diagnostics/tests/modifiers/inlineParameters.kt +++ b/compiler/testData/diagnostics/tests/modifiers/inlineParameters.kt @@ -8,3 +8,4 @@ fun gav(noinline x: (Int) -> Unit, Unit, crossinline y: (String) -> Int) {} +inline fun incompatible(noinline crossinline x: () -> String) {} diff --git a/compiler/testData/diagnostics/tests/modifiers/inlineParameters.txt b/compiler/testData/diagnostics/tests/modifiers/inlineParameters.txt index ecb194d5805..60a9ce4ee33 100644 --- a/compiler/testData/diagnostics/tests/modifiers/inlineParameters.txt +++ b/compiler/testData/diagnostics/tests/modifiers/inlineParameters.txt @@ -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