Pull Up: Implement conflict analysis

This commit is contained in:
Alexey Sedunov
2015-07-16 17:29:00 +03:00
parent 8493908710
commit 390f352e75
19 changed files with 344 additions and 30 deletions
+21
View File
@@ -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
+12
View File
@@ -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>() {
}