From a0186224b206fdb3ca58c427577c498bae20a8d4 Mon Sep 17 00:00:00 2001 From: Ilmir Usmanov Date: Tue, 20 Feb 2018 16:13:21 +0300 Subject: [PATCH] Do not report NOTHING_TO_INLINE on suspend inline functions #KT-22260: Fixed --- .../kotlin/resolve/inline/InlineAnalyzerExtension.kt | 2 +- .../coroutines/suspendFunctionType/inline.kt | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/inline/InlineAnalyzerExtension.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/inline/InlineAnalyzerExtension.kt index 2165b3db7d2..f6f522735e5 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/inline/InlineAnalyzerExtension.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/inline/InlineAnalyzerExtension.kt @@ -169,7 +169,7 @@ class InlineAnalyzerExtension( } if (hasInlineArgs) return - if (functionDescriptor.isInlineOnlyOrReifiable() || functionDescriptor.isExpect) return + if (functionDescriptor.isInlineOnlyOrReifiable() || functionDescriptor.isExpect || functionDescriptor.isSuspend) return if (reasonableInlineRules.any { it.isInlineReasonable(functionDescriptor, function, trace.bindingContext) }) return diff --git a/compiler/testData/diagnostics/testsWithStdLib/coroutines/suspendFunctionType/inline.kt b/compiler/testData/diagnostics/testsWithStdLib/coroutines/suspendFunctionType/inline.kt index 4962f727b97..69d93b21c24 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/coroutines/suspendFunctionType/inline.kt +++ b/compiler/testData/diagnostics/testsWithStdLib/coroutines/suspendFunctionType/inline.kt @@ -5,10 +5,10 @@ inline fun foo3(noinline x: suspend () -> Unit) {} inline fun foo4(noinline crossinline x: suspend () -> Unit) {} -suspend inline fun bar1(x: suspend () -> Unit) {} -suspend inline fun bar2(crossinline x: suspend () -> Unit) {} -suspend inline fun bar3(noinline x: suspend () -> Unit) {} -suspend inline fun bar4(noinline crossinline x: suspend () -> Unit) {} +suspend inline fun bar1(x: suspend () -> Unit) {} +suspend inline fun bar2(crossinline x: suspend () -> Unit) {} +suspend inline fun bar3(noinline x: suspend () -> Unit) {} +suspend inline fun bar4(noinline crossinline x: suspend () -> Unit) {} suspend fun baz() { foo1 {