Implement "Safe Delete" refactoring for named functions

Conflicts:
	idea/src/org/jetbrains/jet/plugin/refactoring/safeDelete/KotlinSafeDeleteProcessor.java
This commit is contained in:
Alexey Sedunov
2013-07-12 18:18:46 +04:00
parent 6658564bdd
commit cd6b6e4934
71 changed files with 1442 additions and 43 deletions
@@ -0,0 +1,11 @@
package test
import test.foo
fun <caret>foo() {
}
class B {
}
@@ -0,0 +1,5 @@
package test
class B {
}
@@ -0,0 +1,11 @@
package test
import test.foo
fun <caret>foo() {
}
class B {
val ref = ::foo
}
@@ -0,0 +1,2 @@
Function foo has 1 usage that is not safe to delete.
Of those 0 usages are in strings, comments, or non-code files.
@@ -0,0 +1,9 @@
trait A {
fun foo()
}
class B: A {
override fun <caret>foo() {
}
}
@@ -0,0 +1 @@
fun foo(): jet.Unit in final class B : A implements fun foo(): jet.Unit in trait A.
@@ -0,0 +1,13 @@
trait A {
fun foo()
}
trait Z {
fun foo()
}
class B: A, Z {
override fun <caret>foo() {
}
}
@@ -0,0 +1,2 @@
fun foo(): jet.Unit in final class B : A, Z implements fun foo(): jet.Unit in trait A.
fun foo(): jet.Unit in final class B : A, Z implements fun foo(): jet.Unit in trait Z.
@@ -0,0 +1,7 @@
class C {
fun <caret>foo {
}
}
class B {
}
@@ -0,0 +1,5 @@
class C {
}
class B {
}
@@ -0,0 +1,11 @@
open class A {
open fun foo() {
}
}
class B: A {
override fun <caret>foo() {
}
}
@@ -0,0 +1,8 @@
open class A {
open fun foo() {
}
}
class B: A {
}
@@ -0,0 +1,11 @@
open class A {
open fun <caret>foo() {
}
}
class B: A {
override fun foo() {
}
}
@@ -0,0 +1,5 @@
open class A {
}
class B: A {
}
@@ -0,0 +1,15 @@
open class A {
open fun foo() {
}
}
trait Z {
fun foo()
}
class B: A, Z {
override fun <caret>foo() {
}
}
@@ -0,0 +1 @@
fun foo(): jet.Unit in final class B : A, Z implements fun foo(): jet.Unit in trait Z.
@@ -0,0 +1,15 @@
open class A {
open fun <caret>foo() {
}
}
trait Z {
fun foo()
}
class B: A, Z {
override fun foo() {
}
}
@@ -0,0 +1,12 @@
open class A {
}
trait Z {
fun foo()
}
class B: A, Z {
override fun foo() {
}
}
@@ -0,0 +1,15 @@
open class A {
open fun <caret>foo() {
}
}
class B: A {
fun bar() {
foo()
}
override fun foo() {
}
}
@@ -0,0 +1,12 @@
open class A {
}
class B: A {
fun bar() {
foo()
}
fun foo() {
}
}
@@ -0,0 +1,3 @@
interface A {
void foo();
}
@@ -0,0 +1,5 @@
class B: A {
override fun <caret>foo() {
}
}
@@ -0,0 +1 @@
fun foo(): jet.Unit in final class B : A implements [Java] void foo() in interface A.
@@ -0,0 +1,5 @@
class B implements A {
public void foo() {
}
}
@@ -0,0 +1,2 @@
class B implements A {
}
@@ -0,0 +1,3 @@
trait A {
fun <caret>foo()
}
@@ -0,0 +1,2 @@
trait A {
}
@@ -0,0 +1,7 @@
interface A {
void foo();
}
interface Z {
void foo();
}
@@ -0,0 +1,5 @@
class B: A, Z {
public override fun <caret>foo() {
}
}
@@ -0,0 +1,2 @@
fun foo(): jet.Unit in final class B : A, Z implements [Java] void foo() in interface A.
fun foo(): jet.Unit in final class B : A, Z implements [Java] void foo() in interface Z.
@@ -0,0 +1,5 @@
class B implements A, Z {
public void foo() {
}
}
@@ -0,0 +1,5 @@
class B implements A, Z {
public void foo() {
}
}
@@ -0,0 +1,7 @@
trait A {
fun <caret>foo()
}
trait Z {
fun foo()
}
@@ -0,0 +1,6 @@
trait A {
}
trait Z {
fun foo()
}
@@ -0,0 +1,5 @@
class A {
void foo() {
}
}
@@ -0,0 +1,5 @@
class A {
void foo() {
}
}
@@ -0,0 +1,5 @@
class B: A {
override fun <caret>foo() {
}
}
@@ -0,0 +1,2 @@
class B: A {
}
@@ -0,0 +1,6 @@
class B extends A {
@Override
void foo() {
}
}
@@ -0,0 +1,2 @@
class B extends A {
}
@@ -0,0 +1,5 @@
open class A {
open fun <caret>foo() {
}
}
@@ -0,0 +1,2 @@
open class A {
}
@@ -0,0 +1,10 @@
class B extends A {
void bar() {
foo();
}
@Override
public void foo() {
}
}
@@ -0,0 +1,9 @@
class B extends A {
void bar() {
foo();
}
public void foo() {
}
}
@@ -0,0 +1,5 @@
open class A {
open fun <caret>foo() {
}
}
@@ -0,0 +1,2 @@
open class A {
}
@@ -0,0 +1,9 @@
class A {
public void foo() {
}
}
interface Z {
void foo();
}
@@ -0,0 +1,5 @@
class B: A, Z {
public override fun <caret>foo() {
}
}
@@ -0,0 +1 @@
fun foo(): jet.Unit in final class B : A, Z implements [Java] void foo() in interface Z.
@@ -0,0 +1,5 @@
class B extends A implements Z {
public void foo() {
}
}
@@ -0,0 +1,5 @@
class B extends A implements Z {
public void foo() {
}
}
@@ -0,0 +1,9 @@
class A {
public fun <caret>foo() {
}
}
trait Z {
fun foo()
}
@@ -0,0 +1,6 @@
class A {
}
trait Z {
fun foo()
}
@@ -0,0 +1,10 @@
interface A {
public void <caret>foo();
}
abstract class C implements B {
@Override
public void foo() {
}
}
@@ -0,0 +1,5 @@
interface A {
}
abstract class C implements B {
}
@@ -0,0 +1,11 @@
trait B: A {
public override fun foo() {
throw UnsupportedOperationException()
}
}
class D: C() {
public override fun foo() {
throw UnsupportedOperationException()
}
}
@@ -0,0 +1,5 @@
trait B: A {
}
class D: C() {
}
@@ -0,0 +1,10 @@
interface A {
public void foo();
}
abstract class C implements B {
@Override
public void <caret>foo() {
}
}
@@ -0,0 +1,6 @@
interface A {
public void foo();
}
abstract class C implements B {
}
@@ -0,0 +1,11 @@
trait B: A {
public override fun foo() {
throw UnsupportedOperationException()
}
}
class D: C() {
public override fun foo() {
throw UnsupportedOperationException()
}
}
@@ -0,0 +1,8 @@
trait B: A {
public override fun foo() {
throw UnsupportedOperationException()
}
}
class D: C() {
}