Safe delete: when invoking on actual, delete expect & actual neighbors
So #KT-15666 Fixed
This commit is contained in:
+25
-11
@@ -382,21 +382,35 @@ class KotlinSafeDeleteProcessor : JavaSafeDeleteProcessor() {
|
|||||||
return result.toTypedArray()
|
return result.toTypedArray()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun KtDeclaration.removeOrClean() {
|
||||||
|
when (this) {
|
||||||
|
is KtParameter -> {
|
||||||
|
(parent as? KtParameterList)?.removeParameter(this)
|
||||||
|
}
|
||||||
|
is KtCallableDeclaration, is KtClassOrObject, is KtTypeAlias -> {
|
||||||
|
delete()
|
||||||
|
}
|
||||||
|
else -> {
|
||||||
|
removeModifier(KtTokens.IMPL_KEYWORD)
|
||||||
|
removeModifier(KtTokens.ACTUAL_KEYWORD)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
override fun prepareForDeletion(element: PsiElement) {
|
override fun prepareForDeletion(element: PsiElement) {
|
||||||
if (element is KtDeclaration) {
|
if (element is KtDeclaration) {
|
||||||
element.actualsForExpected().forEach {
|
if (element.hasActualModifier()) {
|
||||||
when (it) {
|
val expectElement = element.liftToExpected()
|
||||||
is KtParameter -> {
|
expectElement?.actualsForExpected()?.forEach {
|
||||||
(it.parent as? KtParameterList)?.removeParameter(it)
|
if (it !== element) {
|
||||||
}
|
it.removeOrClean()
|
||||||
is KtCallableDeclaration, is KtClassOrObject, is KtTypeAlias -> {
|
|
||||||
it.delete()
|
|
||||||
}
|
|
||||||
else -> {
|
|
||||||
it.removeModifier(KtTokens.IMPL_KEYWORD)
|
|
||||||
it.removeModifier(KtTokens.ACTUAL_KEYWORD)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
expectElement?.removeOrClean()
|
||||||
|
} else {
|
||||||
|
element.actualsForExpected().forEach {
|
||||||
|
it.removeOrClean()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+25
-11
@@ -374,21 +374,35 @@ class KotlinSafeDeleteProcessor : JavaSafeDeleteProcessor() {
|
|||||||
return result.toTypedArray()
|
return result.toTypedArray()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun KtDeclaration.removeOrClean() {
|
||||||
|
when (this) {
|
||||||
|
is KtParameter -> {
|
||||||
|
(parent as? KtParameterList)?.removeParameter(this)
|
||||||
|
}
|
||||||
|
is KtCallableDeclaration, is KtClassOrObject, is KtTypeAlias -> {
|
||||||
|
delete()
|
||||||
|
}
|
||||||
|
else -> {
|
||||||
|
removeModifier(KtTokens.IMPL_KEYWORD)
|
||||||
|
removeModifier(KtTokens.ACTUAL_KEYWORD)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
override fun prepareForDeletion(element: PsiElement) {
|
override fun prepareForDeletion(element: PsiElement) {
|
||||||
if (element is KtDeclaration) {
|
if (element is KtDeclaration) {
|
||||||
element.actualsForExpected().forEach {
|
if (element.hasActualModifier()) {
|
||||||
when (it) {
|
val expectElement = element.liftToExpected()
|
||||||
is KtParameter -> {
|
expectElement?.actualsForExpected()?.forEach {
|
||||||
(it.parent as? KtParameterList)?.removeParameter(it)
|
if (it !== element) {
|
||||||
}
|
it.removeOrClean()
|
||||||
is KtCallableDeclaration, is KtClassOrObject, is KtTypeAlias -> {
|
|
||||||
it.delete()
|
|
||||||
}
|
|
||||||
else -> {
|
|
||||||
it.removeModifier(KtTokens.IMPL_KEYWORD)
|
|
||||||
it.removeModifier(KtTokens.ACTUAL_KEYWORD)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
expectElement?.removeOrClean()
|
||||||
|
} else {
|
||||||
|
element.actualsForExpected().forEach {
|
||||||
|
it.removeOrClean()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+25
-11
@@ -384,21 +384,35 @@ class KotlinSafeDeleteProcessor : JavaSafeDeleteProcessor() {
|
|||||||
return result.toTypedArray()
|
return result.toTypedArray()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun KtDeclaration.removeOrClean() {
|
||||||
|
when (this) {
|
||||||
|
is KtParameter -> {
|
||||||
|
(parent as? KtParameterList)?.removeParameter(this)
|
||||||
|
}
|
||||||
|
is KtCallableDeclaration, is KtClassOrObject, is KtTypeAlias -> {
|
||||||
|
delete()
|
||||||
|
}
|
||||||
|
else -> {
|
||||||
|
removeModifier(KtTokens.IMPL_KEYWORD)
|
||||||
|
removeModifier(KtTokens.ACTUAL_KEYWORD)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
override fun prepareForDeletion(element: PsiElement) {
|
override fun prepareForDeletion(element: PsiElement) {
|
||||||
if (element is KtDeclaration) {
|
if (element is KtDeclaration) {
|
||||||
element.actualsForExpected().forEach {
|
if (element.hasActualModifier()) {
|
||||||
when (it) {
|
val expectElement = element.liftToExpected()
|
||||||
is KtParameter -> {
|
expectElement?.actualsForExpected()?.forEach {
|
||||||
(it.parent as? KtParameterList)?.removeParameter(it)
|
if (it !== element) {
|
||||||
}
|
it.removeOrClean()
|
||||||
is KtCallableDeclaration, is KtClassOrObject, is KtTypeAlias -> {
|
|
||||||
it.delete()
|
|
||||||
}
|
|
||||||
else -> {
|
|
||||||
it.removeModifier(KtTokens.IMPL_KEYWORD)
|
|
||||||
it.removeModifier(KtTokens.ACTUAL_KEYWORD)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
expectElement?.removeOrClean()
|
||||||
|
} else {
|
||||||
|
element.actualsForExpected().forEach {
|
||||||
|
it.removeOrClean()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
expect class My constructor() {
|
expect class My constructor() {
|
||||||
// TODO: also should be deleted (KT-15666)
|
|
||||||
fun foo()
|
fun foo()
|
||||||
}
|
}
|
||||||
@@ -1,4 +1,2 @@
|
|||||||
expect class My constructor() {
|
expect class My constructor() {
|
||||||
// TODO: also should be deleted (KT-15666)
|
|
||||||
fun foo()
|
|
||||||
}
|
}
|
||||||
-1
@@ -1,4 +1,3 @@
|
|||||||
package test
|
package test
|
||||||
|
|
||||||
expect open class Foo
|
|
||||||
expect class ChildOfFoo : Foo()
|
expect class ChildOfFoo : Foo()
|
||||||
-1
@@ -1,4 +1,3 @@
|
|||||||
package test
|
package test
|
||||||
|
|
||||||
actual open class Foo
|
|
||||||
actual class ChildOfFoo : Foo()
|
actual class ChildOfFoo : Foo()
|
||||||
Vendored
-1
@@ -1,7 +1,6 @@
|
|||||||
package test
|
package test
|
||||||
|
|
||||||
expect class Foo {
|
expect class Foo {
|
||||||
fun foo(n: Int)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun test(f: Foo) {
|
fun test(f: Foo) {
|
||||||
|
|||||||
Vendored
-3
@@ -1,9 +1,6 @@
|
|||||||
package test
|
package test
|
||||||
|
|
||||||
actual class Foo {
|
actual class Foo {
|
||||||
actual fun foo(n: Int) {
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun test(f: Foo) {
|
fun test(f: Foo) {
|
||||||
|
|||||||
Vendored
-1
@@ -1,7 +1,6 @@
|
|||||||
package test
|
package test
|
||||||
|
|
||||||
expect class Foo {
|
expect class Foo {
|
||||||
val foo: Int
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun test(f: Foo) = f.foo
|
fun test(f: Foo) = f.foo
|
||||||
Vendored
-1
@@ -1,7 +1,6 @@
|
|||||||
package test
|
package test
|
||||||
|
|
||||||
actual class Foo {
|
actual class Foo {
|
||||||
actual val foo get() = 2
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun test(f: Foo) = f.foo
|
fun test(f: Foo) = f.foo
|
||||||
-1
@@ -1,7 +1,6 @@
|
|||||||
package test
|
package test
|
||||||
|
|
||||||
expect open class Foo {
|
expect open class Foo {
|
||||||
constructor(n: Int)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun test() = Foo(1)
|
fun test() = Foo(1)
|
||||||
-1
@@ -1,7 +1,6 @@
|
|||||||
package test
|
package test
|
||||||
|
|
||||||
actual open class Foo {
|
actual open class Foo {
|
||||||
actual constructor(n: Int)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun test() = Foo(2)
|
fun test() = Foo(2)
|
||||||
-2
@@ -1,7 +1,5 @@
|
|||||||
package test
|
package test
|
||||||
|
|
||||||
expect fun foo(n: Int)
|
|
||||||
|
|
||||||
fun test() {
|
fun test() {
|
||||||
foo(1)
|
foo(1)
|
||||||
}
|
}
|
||||||
-4
@@ -1,9 +1,5 @@
|
|||||||
package test
|
package test
|
||||||
|
|
||||||
actual fun foo(n: Int) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
fun test() {
|
fun test() {
|
||||||
foo(1)
|
foo(1)
|
||||||
}
|
}
|
||||||
-2
@@ -1,5 +1,3 @@
|
|||||||
package test
|
package test
|
||||||
|
|
||||||
expect val foo: Int
|
|
||||||
|
|
||||||
fun test() = foo
|
fun test() = foo
|
||||||
-2
@@ -1,5 +1,3 @@
|
|||||||
package test
|
package test
|
||||||
|
|
||||||
actual val foo get() = 2
|
|
||||||
|
|
||||||
fun test() = foo
|
fun test() = foo
|
||||||
Reference in New Issue
Block a user