Pull Up: Implement conflict analysis
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
open class A<T, U> {
|
||||
}
|
||||
|
||||
class <caret>B<X>: A<String, X>() {
|
||||
// INFO: {"checked": "true"}
|
||||
fun foo(s: String, x: X) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
class C<X>: A<Int, B<X>>() {
|
||||
fun foo(s: String, x: B<X>) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
class D<X>: A<Int, X>() {
|
||||
fun foo(s: String, x: B<X>) {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
Function 'fun foo(String, X)' in super class would clash with existing member of class C
|
||||
@@ -0,0 +1,12 @@
|
||||
open class A<T, U> {
|
||||
private fun foo(t: String, u: U) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
class <caret>B<X>: A<String, X>() {
|
||||
// INFO: {"checked": "true"}
|
||||
fun foo(s: String, x: X) {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
Class A already contains function 'fun foo(String, X)'
|
||||
@@ -15,11 +15,6 @@ abstract class <caret>B: T {
|
||||
// INFO: {"checked": "true"}
|
||||
abstract fun bar(s: String)
|
||||
|
||||
// INFO: {"checked": "true"}
|
||||
inner class X {
|
||||
|
||||
}
|
||||
|
||||
// INFO: {"checked": "true"}
|
||||
class Y {
|
||||
|
||||
|
||||
@@ -15,11 +15,6 @@ interface T {
|
||||
// INFO: {"checked": "true"}
|
||||
fun bar(s: String)
|
||||
|
||||
// INFO: {"checked": "true"}
|
||||
class X {
|
||||
|
||||
}
|
||||
|
||||
// INFO: {"checked": "true"}
|
||||
class Y {
|
||||
|
||||
|
||||
@@ -15,11 +15,6 @@ abstract class <caret>B: T {
|
||||
// INFO: {"checked": "true", "toAbstract": "true"}
|
||||
abstract fun bar(s: String)
|
||||
|
||||
// INFO: {"checked": "true", "toAbstract": "true"}
|
||||
inner class X {
|
||||
|
||||
}
|
||||
|
||||
// INFO: {"checked": "true", "toAbstract": "true"}
|
||||
class Y {
|
||||
|
||||
|
||||
@@ -15,11 +15,6 @@ interface T {
|
||||
// INFO: {"checked": "true", "toAbstract": "true"}
|
||||
fun bar(s: String)
|
||||
|
||||
// INFO: {"checked": "true", "toAbstract": "true"}
|
||||
class X {
|
||||
|
||||
}
|
||||
|
||||
// INFO: {"checked": "true", "toAbstract": "true"}
|
||||
class Y {
|
||||
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
open class A {
|
||||
|
||||
}
|
||||
|
||||
class <caret>B: A() {
|
||||
// INFO: {"checked": "false"}
|
||||
private fun foo() = 1
|
||||
|
||||
// INFO: {"checked": "true"}
|
||||
private class Z(n: Int)
|
||||
|
||||
// INFO: {"checked": "true"}
|
||||
fun bar1() = foo() + 1
|
||||
// INFO: {"checked": "true", "toAbstract": "true"}
|
||||
fun bar2() = Z(foo() + 1)
|
||||
|
||||
// INFO: {"checked": "true"}
|
||||
val x1 = foo() + 1
|
||||
// INFO: {"checked": "true", "toAbstract": "true"}
|
||||
val x2 = Z(foo() + 1)
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
Function 'fun bar1(): Int' uses function 'fun foo(): Int', which is not accessible from the superclass
|
||||
Function 'fun bar2(): B.Z' uses class B.Z, which is not accessible from the superclass
|
||||
Property 'val x1: Int' uses function 'fun foo(): Int', which is not accessible from the superclass
|
||||
Property 'val x2: B.Z' uses class B.Z, which is not accessible from the superclass
|
||||
@@ -0,0 +1,9 @@
|
||||
// WITH_RUNTIME
|
||||
interface T
|
||||
|
||||
abstract class <caret>B: T {
|
||||
// INFO: {"checked": "true"}
|
||||
inner class X {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
Class B.X is an inner class. It can not be moved to the interface
|
||||
@@ -0,0 +1,12 @@
|
||||
abstract class A<T, U> {
|
||||
abstract fun foo(t: String, u: U) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
class <caret>B<X>: A<String, X>() {
|
||||
// INFO: {"checked": "true"}
|
||||
fun foo(s: String, x: X) {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
abstract class A<T, U> {
|
||||
// INFO: {"checked": "true"}
|
||||
fun foo(s: String, x: U) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
class B<X>: A<String, X>() {
|
||||
}
|
||||
Reference in New Issue
Block a user