FIR checker: introduce DECLARATION_SIGNATURE_OR_DEFAULT positioning strategy

and fix CONFLICTING_OVERLOADS to use it
This commit is contained in:
Jinseong Jeon
2021-01-19 16:46:06 -08:00
committed by Mikhail Glukhikh
parent 2e4daee1d4
commit f1d8a6e5d1
31 changed files with 126 additions and 128 deletions
@@ -1,6 +1,6 @@
<!CONFLICTING_OVERLOADS!>fun test(x: Int) {}<!>
<!CONFLICTING_OVERLOADS{LT}!><!CONFLICTING_OVERLOADS{PSI}!>fun test(x: Int)<!> {}<!>
<!CONFLICTING_OVERLOADS!>fun test(y: Int) {}<!>
<!CONFLICTING_OVERLOADS{LT}!><!CONFLICTING_OVERLOADS{PSI}!>fun test(y: Int)<!> {}<!>
fun test() {}
@@ -17,9 +17,9 @@ fun test(z: Int, c: Char) {}
}<!>
<!REDECLARATION!>class B : A {
<!CONFLICTING_OVERLOADS!>override fun rest(s: String) {}<!>
<!CONFLICTING_OVERLOADS{LT}!><!CONFLICTING_OVERLOADS{PSI}!>override fun rest(s: String)<!> {}<!>
<!CONFLICTING_OVERLOADS!>fun rest(s: String) {}<!>
<!CONFLICTING_OVERLOADS{LT}!><!CONFLICTING_OVERLOADS{PSI}!>fun rest(s: String)<!> {}<!>
fun rest(l: Long) {}
@@ -45,8 +45,8 @@ fun <T : Int> kek(t: T) {}
fun lol(a: Array<Int>) {}
fun lol(a: Array<Boolean>) {}
<!CONFLICTING_OVERLOADS!>fun <T> mem(t: T) where T : () -> Boolean, T : String {}<!>
<!CONFLICTING_OVERLOADS!>fun <T> mem(t: T) where T : String, T : () -> Boolean {}<!>
<!CONFLICTING_OVERLOADS{LT}!><!CONFLICTING_OVERLOADS{PSI}!>fun <T> mem(t: T)<!> where T : () -> Boolean, T : String {}<!>
<!CONFLICTING_OVERLOADS{LT}!><!CONFLICTING_OVERLOADS{PSI}!>fun <T> mem(t: T)<!> where T : String, T : () -> Boolean {}<!>
class M {
<!REDECLARATION{LT}!>companion <!REDECLARATION{PSI}!>object<!> {}<!>
@@ -1,4 +1,4 @@
<!CONFLICTING_OVERLOADS!>fun takeString(s: String) {}<!>
<!CONFLICTING_OVERLOADS{LT}!><!CONFLICTING_OVERLOADS{PSI}!>fun takeString(s: String)<!> {}<!>
class Wrapper(val s: String?) {
fun withThis() {
@@ -11,4 +11,4 @@ class Wrapper(val s: String?) {
}
}
<!CONFLICTING_OVERLOADS!>fun takeString(s: String) {}<!>
<!CONFLICTING_OVERLOADS{LT}!><!CONFLICTING_OVERLOADS{PSI}!>fun takeString(s: String)<!> {}<!>
@@ -23,7 +23,7 @@ fun test_2(a: A?) {
}
}
<!CONFLICTING_OVERLOADS!>fun test_3(x: Any?) {
<!CONFLICTING_OVERLOADS{LT}!><!CONFLICTING_OVERLOADS{PSI}!>fun test_3(x: Any?)<!> {
val a = x as? A ?: return
a.foo() // Should be OK
x.foo() // Should be OK
@@ -53,7 +53,7 @@ fun test_2(a: B?) {
}
}
<!CONFLICTING_OVERLOADS!>fun test_3(x: Any?) {
<!CONFLICTING_OVERLOADS{LT}!><!CONFLICTING_OVERLOADS{PSI}!>fun test_3(x: Any?)<!> {
val a = x as? B ?: return
a.foo() // Should be OK
x.foo() // Should be OK
+2 -2
View File
@@ -13,7 +13,7 @@ class B()
class C(val b : B)
fun get(f: Boolean) = if (f) {A.A1} else {""}
<!CONFLICTING_OVERLOADS!>fun case2() {
<!CONFLICTING_OVERLOADS{LT}!><!CONFLICTING_OVERLOADS{PSI}!>fun case2()<!> {
val flag: Any = get(false) //string
val l1 = when (flag!!) { // should be NO_ELSE_IN_WHEN
@@ -27,7 +27,7 @@ fun get(f: Boolean) = if (f) {A.A1} else {""}
}
}<!>
<!CONFLICTING_OVERLOADS!>fun case2() {
<!CONFLICTING_OVERLOADS{LT}!><!CONFLICTING_OVERLOADS{PSI}!>fun case2()<!> {
val flag: Any = get(true) //A
val l1 = when (flag!!) {// should be NO_ELSE_IN_WHEN