From 33914a3a946d5b7b75eae23e04e9b494a24527a2 Mon Sep 17 00:00:00 2001 From: Dmitry Gridin Date: Sun, 30 Jun 2019 17:08:59 +0700 Subject: [PATCH] ImportMemberIntention: make more flexible based on caret position #KT-31924 Fixed --- .../idea/intentions/ImportMemberIntention.kt | 7 ++----- .../intentions/importMember/ClassCallChain.kt | 18 +++++++++++++++++ .../importMember/ClassCallChain.kt.after | 18 +++++++++++++++++ .../importMember/ClassCallChain2.kt | 18 +++++++++++++++++ .../importMember/ClassCallChain2.kt.after | 20 +++++++++++++++++++ .../importMember/ClassCallChain3.kt | 18 +++++++++++++++++ .../importMember/ClassCallChain3.kt.after | 20 +++++++++++++++++++ .../intentions/importMember/FqReference.kt | 2 +- .../importMember/FqReference.kt.after | 9 --------- .../FqReferenceForNestedMember2.kt | 2 +- .../FqReferenceForNestedMember2.kt.after | 6 +++--- .../intentions/IntentionTestGenerated.java | 15 ++++++++++++++ 12 files changed, 134 insertions(+), 19 deletions(-) create mode 100644 idea/testData/intentions/importMember/ClassCallChain.kt create mode 100644 idea/testData/intentions/importMember/ClassCallChain.kt.after create mode 100644 idea/testData/intentions/importMember/ClassCallChain2.kt create mode 100644 idea/testData/intentions/importMember/ClassCallChain2.kt.after create mode 100644 idea/testData/intentions/importMember/ClassCallChain3.kt create mode 100644 idea/testData/intentions/importMember/ClassCallChain3.kt.after delete mode 100644 idea/testData/intentions/importMember/FqReference.kt.after diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/ImportMemberIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/ImportMemberIntention.kt index cd9d3852bb3..5267303f55c 100644 --- a/idea/src/org/jetbrains/kotlin/idea/intentions/ImportMemberIntention.kt +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/ImportMemberIntention.kt @@ -36,13 +36,10 @@ class ImportMemberIntention : SelfTargetingOffsetIndependentIntentionFixtures.Register.Domain.UserRepository.authSuccess +} \ No newline at end of file diff --git a/idea/testData/intentions/importMember/ClassCallChain.kt.after b/idea/testData/intentions/importMember/ClassCallChain.kt.after new file mode 100644 index 00000000000..ae43d8f2654 --- /dev/null +++ b/idea/testData/intentions/importMember/ClassCallChain.kt.after @@ -0,0 +1,18 @@ +// INTENTION_TEXT: "Add import for 'pack.name.Fixtures'" + +package pack.name + +class Fixtures { + class Register { + class Domain { + object UserRepository { + val authSuccess = true + val authError = false + } + } + } +} + +fun test() { + Fixtures.Register.Domain.UserRepository.authSuccess +} \ No newline at end of file diff --git a/idea/testData/intentions/importMember/ClassCallChain2.kt b/idea/testData/intentions/importMember/ClassCallChain2.kt new file mode 100644 index 00000000000..959289241f4 --- /dev/null +++ b/idea/testData/intentions/importMember/ClassCallChain2.kt @@ -0,0 +1,18 @@ +// INTENTION_TEXT: "Add import for 'pack.name.Fixtures.Register'" + +package pack.name + +class Fixtures { + class Register { + class Domain { + object UserRepository { + val authSuccess = true + val authError = false + } + } + } +} + +fun test() { + pack.name.Fixtures.Register.Domain.UserRepository.authSuccess +} \ No newline at end of file diff --git a/idea/testData/intentions/importMember/ClassCallChain2.kt.after b/idea/testData/intentions/importMember/ClassCallChain2.kt.after new file mode 100644 index 00000000000..de26035129d --- /dev/null +++ b/idea/testData/intentions/importMember/ClassCallChain2.kt.after @@ -0,0 +1,20 @@ +// INTENTION_TEXT: "Add import for 'pack.name.Fixtures.Register'" + +package pack.name + +import pack.name.Fixtures.Register + +class Fixtures { + class Register { + class Domain { + object UserRepository { + val authSuccess = true + val authError = false + } + } + } +} + +fun test() { + Register.Domain.UserRepository.authSuccess +} \ No newline at end of file diff --git a/idea/testData/intentions/importMember/ClassCallChain3.kt b/idea/testData/intentions/importMember/ClassCallChain3.kt new file mode 100644 index 00000000000..2b4e3f4225b --- /dev/null +++ b/idea/testData/intentions/importMember/ClassCallChain3.kt @@ -0,0 +1,18 @@ +// INTENTION_TEXT: "Add import for 'pack.name.Fixtures.Register.Domain.UserRepository.authSuccess'" + +package pack.name + +class Fixtures { + class Register { + class Domain { + object UserRepository { + val authSuccess = true + val authError = false + } + } + } +} + +fun test() { + pack.name.Fixtures.Register.Domain.UserRepository.authSuccess +} \ No newline at end of file diff --git a/idea/testData/intentions/importMember/ClassCallChain3.kt.after b/idea/testData/intentions/importMember/ClassCallChain3.kt.after new file mode 100644 index 00000000000..74191cf063b --- /dev/null +++ b/idea/testData/intentions/importMember/ClassCallChain3.kt.after @@ -0,0 +1,20 @@ +// INTENTION_TEXT: "Add import for 'pack.name.Fixtures.Register.Domain.UserRepository.authSuccess'" + +package pack.name + +import pack.name.Fixtures.Register.Domain.UserRepository.authSuccess + +class Fixtures { + class Register { + class Domain { + object UserRepository { + val authSuccess = true + val authError = false + } + } + } +} + +fun test() { + authSuccess +} \ No newline at end of file diff --git a/idea/testData/intentions/importMember/FqReference.kt b/idea/testData/intentions/importMember/FqReference.kt index 214024f1e19..61092e86291 100644 --- a/idea/testData/intentions/importMember/FqReference.kt +++ b/idea/testData/intentions/importMember/FqReference.kt @@ -1,5 +1,5 @@ -// INTENTION_TEXT: "Add import for 'java.util.ArrayList'" // WITH_RUNTIME +// IS_APPLICABLE: false fun test() { val myList = java.util.ArrayList() diff --git a/idea/testData/intentions/importMember/FqReference.kt.after b/idea/testData/intentions/importMember/FqReference.kt.after deleted file mode 100644 index 2a19187584a..00000000000 --- a/idea/testData/intentions/importMember/FqReference.kt.after +++ /dev/null @@ -1,9 +0,0 @@ -import java.util.ArrayList - -// INTENTION_TEXT: "Add import for 'java.util.ArrayList'" -// WITH_RUNTIME - -fun test() { - val myList = ArrayList() - val otherList = ArrayList() -} diff --git a/idea/testData/intentions/importMember/FqReferenceForNestedMember2.kt b/idea/testData/intentions/importMember/FqReferenceForNestedMember2.kt index a6243ab30c7..1220872fd93 100644 --- a/idea/testData/intentions/importMember/FqReferenceForNestedMember2.kt +++ b/idea/testData/intentions/importMember/FqReferenceForNestedMember2.kt @@ -1,4 +1,4 @@ -// INTENTION_TEXT: "Add import for 'p.Container.Nested'" +// INTENTION_TEXT: "Add import for 'p.Container'" fun test() { p.Container.Nested() } diff --git a/idea/testData/intentions/importMember/FqReferenceForNestedMember2.kt.after b/idea/testData/intentions/importMember/FqReferenceForNestedMember2.kt.after index d7a2ba0e8b1..0c2f6205436 100644 --- a/idea/testData/intentions/importMember/FqReferenceForNestedMember2.kt.after +++ b/idea/testData/intentions/importMember/FqReferenceForNestedMember2.kt.after @@ -1,6 +1,6 @@ -import p.Container.Nested +import p.Container -// INTENTION_TEXT: "Add import for 'p.Container.Nested'" +// INTENTION_TEXT: "Add import for 'p.Container'" fun test() { - Nested() + Container.Nested() } diff --git a/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java index 2605ceea28f..e29810026aa 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java @@ -8663,6 +8663,21 @@ public class IntentionTestGenerated extends AbstractIntentionTest { KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/intentions/importMember"), Pattern.compile("^([\\w\\-_]+)\\.(kt|kts)$"), TargetBackend.ANY, true); } + @TestMetadata("ClassCallChain.kt") + public void testClassCallChain() throws Exception { + runTest("idea/testData/intentions/importMember/ClassCallChain.kt"); + } + + @TestMetadata("ClassCallChain2.kt") + public void testClassCallChain2() throws Exception { + runTest("idea/testData/intentions/importMember/ClassCallChain2.kt"); + } + + @TestMetadata("ClassCallChain3.kt") + public void testClassCallChain3() throws Exception { + runTest("idea/testData/intentions/importMember/ClassCallChain3.kt"); + } + @TestMetadata("EnumMember.kt") public void testEnumMember() throws Exception { runTest("idea/testData/intentions/importMember/EnumMember.kt");