From 792d9c1ae279cf2ef13ffa8c9434dbb0587e707c Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Thu, 4 Feb 2016 15:36:45 +0300 Subject: [PATCH] Introduce Variable: Skip type in template if no resolvable/non-error types are available in the current context #KT-10808 Fixed --- .../idea/intentions/SpecifyTypeExplicitlyIntention.kt | 6 ++++-- .../KotlinInplaceVariableIntroducer.java | 9 ++++----- .../introduceVariable/KotlinVariableInplaceIntroducer.kt | 6 ++---- idea/testData/refactoring/introduceVariable/kt10808.kt | 5 +++++ .../refactoring/introduceVariable/kt10808.kt.after | 6 ++++++ .../refactoring/introduce/ExtractionTestGenerated.java | 6 ++++++ 6 files changed, 27 insertions(+), 11 deletions(-) create mode 100644 idea/testData/refactoring/introduceVariable/kt10808.kt create mode 100644 idea/testData/refactoring/introduceVariable/kt10808.kt.after diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/SpecifyTypeExplicitlyIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/SpecifyTypeExplicitlyIntention.kt index d84bcddce46..be2d1eaf53a 100644 --- a/idea/src/org/jetbrains/kotlin/idea/intentions/SpecifyTypeExplicitlyIntention.kt +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/SpecifyTypeExplicitlyIntention.kt @@ -32,6 +32,7 @@ import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode import org.jetbrains.kotlin.types.* import org.jetbrains.kotlin.utils.SmartSet import org.jetbrains.kotlin.utils.addToStdlib.singletonList +import org.jetbrains.kotlin.utils.ifEmpty class SpecifyTypeExplicitlyIntention : SelfTargetingIntention(KtCallableDeclaration::class.java, "Specify type explicitly"), LowPriorityAction { override fun isApplicableTo(element: KtCallableDeclaration, caretOffset: Int): Boolean { @@ -64,7 +65,7 @@ class SpecifyTypeExplicitlyIntention : SelfTargetingIntention(types, types.first()) { override fun getLookupString(element: KotlinType) = IdeDescriptorRenderers.SOURCE_CODE_SHORT_NAMES_IN_TYPES.renderType(element) override fun getResult(element: KotlinType) = IdeDescriptorRenderers.SOURCE_CODE.renderType(element) @@ -122,7 +124,7 @@ class SpecifyTypeExplicitlyIntention : SelfTargetingIntention) { + val old = pref.getString("", "") + pref.edit().putString("", "").apply() + LocalBroadcastManager.getInstance(this).sendBroadcast(Intent("")) +} \ No newline at end of file diff --git a/idea/testData/refactoring/introduceVariable/kt10808.kt.after b/idea/testData/refactoring/introduceVariable/kt10808.kt.after new file mode 100644 index 00000000000..a961a39c8a6 --- /dev/null +++ b/idea/testData/refactoring/introduceVariable/kt10808.kt.after @@ -0,0 +1,6 @@ +fun main(args:Array) { + val old = pref.getString("", "") + pref.edit().putString("", "").apply() + val instance: Any = LocalBroadcastManager.getInstance(this) + instance.sendBroadcast(Intent("")) +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/refactoring/introduce/ExtractionTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/refactoring/introduce/ExtractionTestGenerated.java index 5b3b1270732..3141683943b 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/refactoring/introduce/ExtractionTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/refactoring/introduce/ExtractionTestGenerated.java @@ -217,6 +217,12 @@ public class ExtractionTestGenerated extends AbstractExtractionTest { doIntroduceVariableTest(fileName); } + @TestMetadata("kt10808.kt") + public void testKt10808() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/refactoring/introduceVariable/kt10808.kt"); + doIntroduceVariableTest(fileName); + } + @TestMetadata("LoopRange.kt") public void testLoopRange() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/refactoring/introduceVariable/LoopRange.kt");