Add 'operator' Intention: Support header/impl functions

#KT-18851 Fixed
This commit is contained in:
Alexey Sedunov
2017-08-10 19:04:07 +03:00
parent cd5c382179
commit d3a9d122e6
14 changed files with 68 additions and 1 deletions
@@ -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 : SelfTargetingRangeIntention<KtNamedFunction
}
override fun applyTo(element: KtNamedFunction, editor: Editor?) {
element.addModifier(KtTokens.OPERATOR_KEYWORD)
element.withHeaderImplementations().forEach { it.addModifier(KtTokens.OPERATOR_KEYWORD) }
}
}
@@ -0,0 +1,5 @@
// "Add 'operator' modifier" "true"
header class Foo {
fun <caret>unaryMinus()
}
@@ -0,0 +1,5 @@
// "Add 'operator' modifier" "true"
header class Foo {
operator fun unaryMinus()
}
@@ -0,0 +1,5 @@
impl class Foo {
impl fun unaryMinus() {
}
}
@@ -0,0 +1,5 @@
impl class Foo {
impl operator fun unaryMinus() {
}
}
@@ -0,0 +1,5 @@
impl class Foo {
impl fun unaryMinus() {
}
}
@@ -0,0 +1,5 @@
impl class Foo {
impl operator fun unaryMinus() {
}
}
@@ -0,0 +1,3 @@
header class Foo {
fun unaryMinus()
}
@@ -0,0 +1,3 @@
header class Foo {
operator fun unaryMinus()
}
@@ -0,0 +1,7 @@
// "Add 'operator' modifier" "true"
impl class Foo {
impl fun <caret>unaryMinus() {
}
}
@@ -0,0 +1,7 @@
// "Add 'operator' modifier" "true"
impl class Foo {
impl operator fun unaryMinus() {
}
}
@@ -0,0 +1,5 @@
impl class Foo {
impl fun unaryMinus() {
}
}
@@ -0,0 +1,5 @@
impl class Foo {
impl operator fun unaryMinus() {
}
}
@@ -123,4 +123,10 @@ class QuickFixMultiModuleTest : AbstractQuickFixMultiModuleTest() {
@Test
fun testMemberValToExtensionByImpl() = doTestHeaderWithJvmAndJs()
@Test
fun testAddOperatorByHeader() = doTestHeaderWithJvmAndJs()
@Test
fun testAddOperatorByImpl() = doTestHeaderWithJvmAndJs()
}