From 7040639c383f32f48aedc2b0c19c3f7764ea984a Mon Sep 17 00:00:00 2001 From: Dmitry Gridin Date: Tue, 18 Jun 2019 11:35:40 +0700 Subject: [PATCH] Fix false positive "Not-null extension receiver of inline function can be made nullable" with `operator fun invoke` #KT-25786 Fixed --- ...RedundantNotNullExtensionReceiverOfInlineInspection.kt | 2 +- .../redundantNotNullExtensionReceiverOfInline/test.kt | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/idea/src/org/jetbrains/kotlin/idea/inspections/RedundantNotNullExtensionReceiverOfInlineInspection.kt b/idea/src/org/jetbrains/kotlin/idea/inspections/RedundantNotNullExtensionReceiverOfInlineInspection.kt index cfac908a252..c2b4b47a0bb 100644 --- a/idea/src/org/jetbrains/kotlin/idea/inspections/RedundantNotNullExtensionReceiverOfInlineInspection.kt +++ b/idea/src/org/jetbrains/kotlin/idea/inspections/RedundantNotNullExtensionReceiverOfInlineInspection.kt @@ -66,7 +66,7 @@ class RedundantNotNullExtensionReceiverOfInlineInspection : AbstractKotlinInspec } is KtThisExpression -> { val expectedType = context[BindingContext.EXPECTED_EXPRESSION_TYPE, it] - expectedType != null && !expectedType.isNullable() + it.parent is KtCallExpression || expectedType != null && !expectedType.isNullable() } is KtBinaryExpressionWithTypeRHS -> { val type = context[BindingContext.TYPE, it.right] diff --git a/idea/testData/inspections/redundantNotNullExtensionReceiverOfInline/test.kt b/idea/testData/inspections/redundantNotNullExtensionReceiverOfInline/test.kt index 77792c30bdd..be6b64fc2f7 100644 --- a/idea/testData/inspections/redundantNotNullExtensionReceiverOfInline/test.kt +++ b/idea/testData/inspections/redundantNotNullExtensionReceiverOfInline/test.kt @@ -48,4 +48,12 @@ inline fun Int.bar(x: Int) = x - this // No problem inline fun Int.unary() = -this // No problem inline fun String.indexed(arg: Int) = this[arg] // No problem +class Foo { + operator fun invoke() = Unit +} +inline fun Foo.bar() = this() + +inline fun Foo.bazz() = this.invoke() + +inline fun Foo.bazzz() = invoke()