From d3a9d122e6ac16db4135f343965985526dd1cdde Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Thu, 10 Aug 2017 19:04:07 +0300 Subject: [PATCH] Add 'operator' Intention: Support header/impl functions #KT-18851 Fixed --- .../kotlin/idea/intentions/AddOperatorModifierIntention.kt | 3 ++- .../addOperatorByHeader/header/header.kt | 5 +++++ .../addOperatorByHeader/header/header.kt.after | 5 +++++ .../multiModuleQuickFix/addOperatorByHeader/js/js.kt | 5 +++++ .../multiModuleQuickFix/addOperatorByHeader/js/js.kt.after | 5 +++++ .../multiModuleQuickFix/addOperatorByHeader/jvm/jvm.kt | 5 +++++ .../addOperatorByHeader/jvm/jvm.kt.after | 5 +++++ .../multiModuleQuickFix/addOperatorByImpl/header/header.kt | 3 +++ .../addOperatorByImpl/header/header.kt.after | 3 +++ .../multiModuleQuickFix/addOperatorByImpl/js/js.kt | 7 +++++++ .../multiModuleQuickFix/addOperatorByImpl/js/js.kt.after | 7 +++++++ .../multiModuleQuickFix/addOperatorByImpl/jvm/jvm.kt | 5 +++++ .../multiModuleQuickFix/addOperatorByImpl/jvm/jvm.kt.after | 5 +++++ .../kotlin/idea/quickfix/QuickFixMultiModuleTest.kt | 6 ++++++ 14 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 idea/testData/multiModuleQuickFix/addOperatorByHeader/header/header.kt create mode 100644 idea/testData/multiModuleQuickFix/addOperatorByHeader/header/header.kt.after create mode 100644 idea/testData/multiModuleQuickFix/addOperatorByHeader/js/js.kt create mode 100644 idea/testData/multiModuleQuickFix/addOperatorByHeader/js/js.kt.after create mode 100644 idea/testData/multiModuleQuickFix/addOperatorByHeader/jvm/jvm.kt create mode 100644 idea/testData/multiModuleQuickFix/addOperatorByHeader/jvm/jvm.kt.after create mode 100644 idea/testData/multiModuleQuickFix/addOperatorByImpl/header/header.kt create mode 100644 idea/testData/multiModuleQuickFix/addOperatorByImpl/header/header.kt.after create mode 100644 idea/testData/multiModuleQuickFix/addOperatorByImpl/js/js.kt create mode 100644 idea/testData/multiModuleQuickFix/addOperatorByImpl/js/js.kt.after create mode 100644 idea/testData/multiModuleQuickFix/addOperatorByImpl/jvm/jvm.kt create mode 100644 idea/testData/multiModuleQuickFix/addOperatorByImpl/jvm/jvm.kt.after diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/AddOperatorModifierIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/AddOperatorModifierIntention.kt index b75ee13e921..961c3fa5dc4 100644 --- a/idea/src/org/jetbrains/kotlin/idea/intentions/AddOperatorModifierIntention.kt +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/AddOperatorModifierIntention.kt @@ -20,6 +20,7 @@ import com.intellij.openapi.editor.Editor import com.intellij.openapi.util.TextRange import org.jetbrains.kotlin.descriptors.FunctionDescriptor import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny +import org.jetbrains.kotlin.idea.refactoring.withHeaderImplementations import org.jetbrains.kotlin.lexer.KtTokens import org.jetbrains.kotlin.psi.KtNamedFunction import org.jetbrains.kotlin.util.OperatorChecks @@ -33,7 +34,7 @@ class AddOperatorModifierIntention : SelfTargetingRangeIntentionunaryMinus() +} \ No newline at end of file diff --git a/idea/testData/multiModuleQuickFix/addOperatorByHeader/header/header.kt.after b/idea/testData/multiModuleQuickFix/addOperatorByHeader/header/header.kt.after new file mode 100644 index 00000000000..cf999fa9da8 --- /dev/null +++ b/idea/testData/multiModuleQuickFix/addOperatorByHeader/header/header.kt.after @@ -0,0 +1,5 @@ +// "Add 'operator' modifier" "true" + +header class Foo { + operator fun unaryMinus() +} \ No newline at end of file diff --git a/idea/testData/multiModuleQuickFix/addOperatorByHeader/js/js.kt b/idea/testData/multiModuleQuickFix/addOperatorByHeader/js/js.kt new file mode 100644 index 00000000000..e9b044720e5 --- /dev/null +++ b/idea/testData/multiModuleQuickFix/addOperatorByHeader/js/js.kt @@ -0,0 +1,5 @@ +impl class Foo { + impl fun unaryMinus() { + + } +} \ No newline at end of file diff --git a/idea/testData/multiModuleQuickFix/addOperatorByHeader/js/js.kt.after b/idea/testData/multiModuleQuickFix/addOperatorByHeader/js/js.kt.after new file mode 100644 index 00000000000..529ed256314 --- /dev/null +++ b/idea/testData/multiModuleQuickFix/addOperatorByHeader/js/js.kt.after @@ -0,0 +1,5 @@ +impl class Foo { + impl operator fun unaryMinus() { + + } +} \ No newline at end of file diff --git a/idea/testData/multiModuleQuickFix/addOperatorByHeader/jvm/jvm.kt b/idea/testData/multiModuleQuickFix/addOperatorByHeader/jvm/jvm.kt new file mode 100644 index 00000000000..e9b044720e5 --- /dev/null +++ b/idea/testData/multiModuleQuickFix/addOperatorByHeader/jvm/jvm.kt @@ -0,0 +1,5 @@ +impl class Foo { + impl fun unaryMinus() { + + } +} \ No newline at end of file diff --git a/idea/testData/multiModuleQuickFix/addOperatorByHeader/jvm/jvm.kt.after b/idea/testData/multiModuleQuickFix/addOperatorByHeader/jvm/jvm.kt.after new file mode 100644 index 00000000000..529ed256314 --- /dev/null +++ b/idea/testData/multiModuleQuickFix/addOperatorByHeader/jvm/jvm.kt.after @@ -0,0 +1,5 @@ +impl class Foo { + impl operator fun unaryMinus() { + + } +} \ No newline at end of file diff --git a/idea/testData/multiModuleQuickFix/addOperatorByImpl/header/header.kt b/idea/testData/multiModuleQuickFix/addOperatorByImpl/header/header.kt new file mode 100644 index 00000000000..83618c2c9ae --- /dev/null +++ b/idea/testData/multiModuleQuickFix/addOperatorByImpl/header/header.kt @@ -0,0 +1,3 @@ +header class Foo { + fun unaryMinus() +} \ No newline at end of file diff --git a/idea/testData/multiModuleQuickFix/addOperatorByImpl/header/header.kt.after b/idea/testData/multiModuleQuickFix/addOperatorByImpl/header/header.kt.after new file mode 100644 index 00000000000..b4fdc1c8878 --- /dev/null +++ b/idea/testData/multiModuleQuickFix/addOperatorByImpl/header/header.kt.after @@ -0,0 +1,3 @@ +header class Foo { + operator fun unaryMinus() +} \ No newline at end of file diff --git a/idea/testData/multiModuleQuickFix/addOperatorByImpl/js/js.kt b/idea/testData/multiModuleQuickFix/addOperatorByImpl/js/js.kt new file mode 100644 index 00000000000..39b6d3c91da --- /dev/null +++ b/idea/testData/multiModuleQuickFix/addOperatorByImpl/js/js.kt @@ -0,0 +1,7 @@ +// "Add 'operator' modifier" "true" + +impl class Foo { + impl fun unaryMinus() { + + } +} \ No newline at end of file diff --git a/idea/testData/multiModuleQuickFix/addOperatorByImpl/js/js.kt.after b/idea/testData/multiModuleQuickFix/addOperatorByImpl/js/js.kt.after new file mode 100644 index 00000000000..19cd4b14957 --- /dev/null +++ b/idea/testData/multiModuleQuickFix/addOperatorByImpl/js/js.kt.after @@ -0,0 +1,7 @@ +// "Add 'operator' modifier" "true" + +impl class Foo { + impl operator fun unaryMinus() { + + } +} \ No newline at end of file diff --git a/idea/testData/multiModuleQuickFix/addOperatorByImpl/jvm/jvm.kt b/idea/testData/multiModuleQuickFix/addOperatorByImpl/jvm/jvm.kt new file mode 100644 index 00000000000..e9b044720e5 --- /dev/null +++ b/idea/testData/multiModuleQuickFix/addOperatorByImpl/jvm/jvm.kt @@ -0,0 +1,5 @@ +impl class Foo { + impl fun unaryMinus() { + + } +} \ No newline at end of file diff --git a/idea/testData/multiModuleQuickFix/addOperatorByImpl/jvm/jvm.kt.after b/idea/testData/multiModuleQuickFix/addOperatorByImpl/jvm/jvm.kt.after new file mode 100644 index 00000000000..529ed256314 --- /dev/null +++ b/idea/testData/multiModuleQuickFix/addOperatorByImpl/jvm/jvm.kt.after @@ -0,0 +1,5 @@ +impl class Foo { + impl operator fun unaryMinus() { + + } +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixMultiModuleTest.kt b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixMultiModuleTest.kt index c767fb1bea5..11977aa94f9 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixMultiModuleTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixMultiModuleTest.kt @@ -123,4 +123,10 @@ class QuickFixMultiModuleTest : AbstractQuickFixMultiModuleTest() { @Test fun testMemberValToExtensionByImpl() = doTestHeaderWithJvmAndJs() + + @Test + fun testAddOperatorByHeader() = doTestHeaderWithJvmAndJs() + + @Test + fun testAddOperatorByImpl() = doTestHeaderWithJvmAndJs() } \ No newline at end of file