From 0392fe75fc9acbe73084c5d612595f9b74c257f5 Mon Sep 17 00:00:00 2001 From: Toshiaki Kameyama Date: Thu, 18 Jun 2020 09:52:57 +0900 Subject: [PATCH] Convert to block body: specify non-nullable type when body expression is platform type and overriden method is non-nullable type #KT-12222 Fixed --- .../idea/intentions/ConvertToBlockBodyIntention.kt | 11 ++++++++++- .../convertToBlockBody/overrideWithPlatformType.kt | 8 ++++++++ .../overrideWithPlatformType.kt.after | 10 ++++++++++ .../idea/intentions/IntentionTestGenerated.java | 5 +++++ 4 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 idea/testData/intentions/convertToBlockBody/overrideWithPlatformType.kt create mode 100644 idea/testData/intentions/convertToBlockBody/overrideWithPlatformType.kt.after diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertToBlockBodyIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertToBlockBodyIntention.kt index 466970db89e..f7471303643 100644 --- a/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertToBlockBodyIntention.kt +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertToBlockBodyIntention.kt @@ -18,8 +18,10 @@ import org.jetbrains.kotlin.psi.psiUtil.endOffset import org.jetbrains.kotlin.psi.psiUtil.startOffset import org.jetbrains.kotlin.types.KotlinType import org.jetbrains.kotlin.types.isError +import org.jetbrains.kotlin.types.isNullabilityFlexible import org.jetbrains.kotlin.types.typeUtil.isNothing import org.jetbrains.kotlin.types.typeUtil.isUnit +import org.jetbrains.kotlin.types.typeUtil.makeNotNullable class ConvertToBlockBodyIntention : SelfTargetingIntention( KtDeclarationWithBody::class.java, @@ -90,6 +92,13 @@ class ConvertToBlockBodyIntention : SelfTargetingIntentionfoo() = java.lang.String.valueOf(42) +} \ No newline at end of file diff --git a/idea/testData/intentions/convertToBlockBody/overrideWithPlatformType.kt.after b/idea/testData/intentions/convertToBlockBody/overrideWithPlatformType.kt.after new file mode 100644 index 00000000000..f96dfd8531d --- /dev/null +++ b/idea/testData/intentions/convertToBlockBody/overrideWithPlatformType.kt.after @@ -0,0 +1,10 @@ +// WITH_RUNTIME +interface Foo { + fun foo(): String +} + +class Bar : Foo { + override fun foo(): String { + return java.lang.String.valueOf(42) + } +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java index f3ac1f62444..a9308ab44b8 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java @@ -6947,6 +6947,11 @@ public class IntentionTestGenerated extends AbstractIntentionTest { runTest("idea/testData/intentions/convertToBlockBody/nothingFun.kt"); } + @TestMetadata("overrideWithPlatformType.kt") + public void testOverrideWithPlatformType() throws Exception { + runTest("idea/testData/intentions/convertToBlockBody/overrideWithPlatformType.kt"); + } + @TestMetadata("setter.kt") public void testSetter() throws Exception { runTest("idea/testData/intentions/convertToBlockBody/setter.kt");