From f455f06a9ed5e06e791c390328115ff0eaf21e9d Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Thu, 10 Aug 2017 15:17:12 +0300 Subject: [PATCH] Change Signature: Fix replacement of implicit Unit return type --- .../usages/KotlinCallableDefinitionUsage.kt | 7 +------ .../changeSignature/ChangeReturnTypeToNonUnitAfter.kt | 11 +++++++++++ .../ChangeReturnTypeToNonUnitBefore.kt | 11 +++++++++++ .../changeSignature/KotlinChangeSignatureTest.kt | 4 ++++ 4 files changed, 27 insertions(+), 6 deletions(-) create mode 100644 idea/testData/refactoring/changeSignature/ChangeReturnTypeToNonUnitAfter.kt create mode 100644 idea/testData/refactoring/changeSignature/ChangeReturnTypeToNonUnitBefore.kt diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/usages/KotlinCallableDefinitionUsage.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/usages/KotlinCallableDefinitionUsage.kt index 948b74bf5a0..21877fc1a30 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/usages/KotlinCallableDefinitionUsage.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/usages/KotlinCallableDefinitionUsage.kt @@ -148,12 +148,7 @@ class KotlinCallableDefinitionUsage( if (element !is KtCallableDeclaration) return if (element is KtConstructor<*>) return - val returnTypeIsNeeded = if (element is KtFunction) { - element !is KtFunctionLiteral && (changeInfo.isRefactoringTarget(originalCallableDescriptor) || element.typeReference != null) - } - else { - element is KtProperty || element is KtParameter - } + val returnTypeIsNeeded = (element is KtFunction && element !is KtFunctionLiteral) || element is KtProperty || element is KtParameter if (changeInfo.isReturnTypeChanged && returnTypeIsNeeded) { element.typeReference = null diff --git a/idea/testData/refactoring/changeSignature/ChangeReturnTypeToNonUnitAfter.kt b/idea/testData/refactoring/changeSignature/ChangeReturnTypeToNonUnitAfter.kt new file mode 100644 index 00000000000..e30817736ab --- /dev/null +++ b/idea/testData/refactoring/changeSignature/ChangeReturnTypeToNonUnitAfter.kt @@ -0,0 +1,11 @@ +open class A { + open fun foo(): Int { + + } +} + +class B : A() { + override fun foo(): Int { + + } +} \ No newline at end of file diff --git a/idea/testData/refactoring/changeSignature/ChangeReturnTypeToNonUnitBefore.kt b/idea/testData/refactoring/changeSignature/ChangeReturnTypeToNonUnitBefore.kt new file mode 100644 index 00000000000..07c755b908b --- /dev/null +++ b/idea/testData/refactoring/changeSignature/ChangeReturnTypeToNonUnitBefore.kt @@ -0,0 +1,11 @@ +open class A { + open fun foo() { + + } +} + +class B : A() { + override fun foo() { + + } +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/refactoring/changeSignature/KotlinChangeSignatureTest.kt b/idea/tests/org/jetbrains/kotlin/idea/refactoring/changeSignature/KotlinChangeSignatureTest.kt index 97f6cf0d57e..d67603fb76e 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/refactoring/changeSignature/KotlinChangeSignatureTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/refactoring/changeSignature/KotlinChangeSignatureTest.kt @@ -956,4 +956,8 @@ class KotlinChangeSignatureTest : KotlinLightCodeInsightFixtureTestCase() { newName = "bar" newReturnTypeInfo = resolveType("A", true, true) } + + fun testChangeReturnTypeToNonUnit() = doTest { + newReturnTypeInfo = KotlinTypeInfo(true, BUILT_INS.intType) + } } \ No newline at end of file