FIR: Reimplement conflicts checker to detect conflicts in different files

also pass correct ScopeSession to checkers
fixes some IC tests
This commit is contained in:
Ilya Chernikov
2021-02-17 21:49:07 +01:00
parent 3e458a1efb
commit 51a1cec08b
21 changed files with 379 additions and 144 deletions
@@ -1,11 +1,11 @@
// FILE: f1.kt
package test
class A
<!REDECLARATION!>class A<!>
class F1
// FILE: f2.kt
package test
class A
<!REDECLARATION!>class A<!>
class F2
@@ -1,10 +0,0 @@
// FILE: test1.kt
class A
class B(val x: Int) {
constructor(x: Int, y: Int): this(x + y)
}
// FILE: test2.kt
fun A() {}
fun B(x: Int) = x
fun B(x: Int, y: Int) = x + y
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// FILE: test1.kt
class <!CONFLICTING_OVERLOADS!>A<!>
class B<!CONFLICTING_OVERLOADS!>(val x: Int)<!> {
@@ -1,9 +1,9 @@
// FILE: a.kt
val a : Int = 1
fun f() {
<!REDECLARATION!>val a : Int = 1<!>
<!CONFLICTING_OVERLOADS!>fun f()<!> {
}
// FILE: b.kt
val a : Int = 1
fun f() {
<!REDECLARATION!>val a : Int = 1<!>
<!CONFLICTING_OVERLOADS!>fun f()<!> {
}
@@ -7,8 +7,8 @@ interface B : A
private fun validFun() {}
private val validVal = 1
private fun invalidFun0() {}
private val invalidProp0 = 1
<!CONFLICTING_OVERLOADS!>private fun invalidFun0()<!> {}
<!REDECLARATION!>private val invalidProp0 = 1<!>
// NB invalidFun0 and invalidProp0 are conflicting overloads, since the following is an ambiguity:
fun useInvalidFun0() = invalidFun0()
@@ -20,7 +20,7 @@ fun useInvalidProp0() = invalidProp0
<!CONFLICTING_OVERLOADS!>private fun invalidFun2()<!> {}
<!CONFLICTING_OVERLOADS!>public fun invalidFun2()<!> {}
public fun invalidFun3() {}
<!CONFLICTING_OVERLOADS!>public fun invalidFun3()<!> {}
<!CONFLICTING_OVERLOADS!>private fun invalidFun4()<!> {}
<!CONFLICTING_OVERLOADS!>public fun invalidFun4()<!> {}
@@ -34,16 +34,16 @@ package a
private fun validFun() {}
private val validVal = 1
private fun invalidFun0() {}
<!CONFLICTING_OVERLOADS!>private fun invalidFun0()<!> {}
private val invalidProp0 = 1
<!REDECLARATION!>private val invalidProp0 = 1<!>
internal fun invalidFun3() {}
internal fun invalidFun4() {}
<!CONFLICTING_OVERLOADS!>internal fun invalidFun3()<!> {}
<!CONFLICTING_OVERLOADS!>internal fun invalidFun4()<!> {}
// FILE: c.kt
package a
public fun invalidFun0() {}
public val invalidProp0 = 1
public val invalidProp0 = 1
@@ -15,4 +15,4 @@ class Outer {
}
// FILE: file2.kt
typealias SomeClass = Any
<!REDECLARATION!>typealias SomeClass = Any<!>
@@ -18,5 +18,5 @@ private val test1co: C.Companion = C
private val test2: TA = <!INAPPLICABLE_CANDIDATE!>TA<!>()
private val test2co = TA
private class C
private typealias TA = Int
<!REDECLARATION!>private class C<!>
<!REDECLARATION!>private typealias TA = Int<!>