Files
kotlin-fork/compiler/testData/diagnostics/tests/overload/LocalFunctions.kt
T
Nikolay Lunyak f9c6af4d2a [FIR] Properly assign <local> packages to symbols
This prevents `FirConflictsExpressionChecker.kt`
from missing conflicting local functions. It used
to due to inconsistencies in assigning `<local>`,
and this commit makes it a bit more
straightforward.

The change in KtClassTypeQualifierRenderer
prevents `FirOverrideImplementTest.testLocalClass`
from failing in `intellij`. It didn't fail for
callables, because `KtCallableSignatureRenderer`
doesn't try to render packages.

^KT-59186 Fixed
2023-08-18 13:31:04 +00:00

214 lines
6.5 KiB
Kotlin
Vendored

// FIR_IDENTICAL
fun test() {
<!CONFLICTING_OVERLOADS!>fun test1()<!> {}
<!CONFLICTING_OVERLOADS!>fun test1()<!> {}
fun Any.test2() {}
fun test2(x: Any) = x
<!CONFLICTING_OVERLOADS!>fun Any.test3()<!> {}
<!CONFLICTING_OVERLOADS!>fun Any.test3()<!> {}
<!CONFLICTING_OVERLOADS!>fun test4(): Int<!> = 0
<!CONFLICTING_OVERLOADS!>fun test4(): String<!> = ""
class Test5<!CONFLICTING_OVERLOADS!>(val x: Int)<!> {
<!CONFLICTING_OVERLOADS!>constructor()<!>: this(0)
}
<!CONFLICTING_OVERLOADS!>fun Test5()<!> {}
<!CONFLICTING_OVERLOADS!>fun Test5(x: Int)<!> = x
fun local() {
<!CONFLICTING_OVERLOADS!>fun test1()<!> {}
<!CONFLICTING_OVERLOADS!>fun test1()<!> {}
fun Any.test2() {}
fun test2(x: Any) = x
<!CONFLICTING_OVERLOADS!>fun Any.test3()<!> {}
<!CONFLICTING_OVERLOADS!>fun Any.test3()<!> {}
<!CONFLICTING_OVERLOADS!>fun test4(): Int<!> = 0
<!CONFLICTING_OVERLOADS!>fun test4(): String<!> = ""
class Test5<!CONFLICTING_OVERLOADS!>(val x: Int)<!> {
<!CONFLICTING_OVERLOADS!>constructor()<!>: this(0)
}
<!CONFLICTING_OVERLOADS!>fun Test5()<!> {}
<!CONFLICTING_OVERLOADS!>fun Test5(x: Int)<!> = x
}
}
class Test {
init {
<!CONFLICTING_OVERLOADS!>fun test1()<!> {}
<!CONFLICTING_OVERLOADS!>fun test1()<!> {}
fun Any.test2() {}
fun test2(x: Any) = x
<!CONFLICTING_OVERLOADS!>fun Any.test3()<!> {}
<!CONFLICTING_OVERLOADS!>fun Any.test3()<!> {}
<!CONFLICTING_OVERLOADS!>fun test4(): Int<!> = 0
<!CONFLICTING_OVERLOADS!>fun test4(): String<!> = ""
class Test5<!CONFLICTING_OVERLOADS!>(val x: Int)<!> {
<!CONFLICTING_OVERLOADS!>constructor()<!>: this(0)
}
<!CONFLICTING_OVERLOADS!>fun Test5()<!> {}
<!CONFLICTING_OVERLOADS!>fun Test5(x: Int)<!> = x
}
fun test() {
<!CONFLICTING_OVERLOADS!>fun test1()<!> {}
<!CONFLICTING_OVERLOADS!>fun test1()<!> {}
fun Any.test2() {}
fun test2(x: Any) = x
<!CONFLICTING_OVERLOADS!>fun Any.test3()<!> {}
<!CONFLICTING_OVERLOADS!>fun Any.test3()<!> {}
<!CONFLICTING_OVERLOADS!>fun test4(): Int<!> = 0
<!CONFLICTING_OVERLOADS!>fun test4(): String<!> = ""
class Test5<!CONFLICTING_OVERLOADS!>(val x: Int)<!> {
<!CONFLICTING_OVERLOADS!>constructor()<!>: this(0)
}
<!CONFLICTING_OVERLOADS!>fun Test5()<!> {}
<!CONFLICTING_OVERLOADS!>fun Test5(x: Int)<!> = x
}
val property: Any get() {
<!CONFLICTING_OVERLOADS!>fun test1()<!> {}
<!CONFLICTING_OVERLOADS!>fun test1()<!> {}
fun Any.test2() {}
fun test2(x: Any) = x
<!CONFLICTING_OVERLOADS!>fun Any.test3()<!> {}
<!CONFLICTING_OVERLOADS!>fun Any.test3()<!> {}
<!CONFLICTING_OVERLOADS!>fun test4(): Int<!> = 0
<!CONFLICTING_OVERLOADS!>fun test4(): String<!> = ""
class Test5<!CONFLICTING_OVERLOADS!>(val x: Int)<!> {
<!CONFLICTING_OVERLOADS!>constructor()<!>: this(0)
}
<!CONFLICTING_OVERLOADS!>fun Test5()<!> {}
<!CONFLICTING_OVERLOADS!>fun Test5(x: Int)<!> = x
return 0
}
}
val property: Any get() {
<!CONFLICTING_OVERLOADS!>fun test1()<!> {}
<!CONFLICTING_OVERLOADS!>fun test1()<!> {}
fun Any.test2() {}
fun test2(x: Any) = x
<!CONFLICTING_OVERLOADS!>fun Any.test3()<!> {}
<!CONFLICTING_OVERLOADS!>fun Any.test3()<!> {}
<!CONFLICTING_OVERLOADS!>fun test4(): Int<!> = 0
<!CONFLICTING_OVERLOADS!>fun test4(): String<!> = ""
class Test5<!CONFLICTING_OVERLOADS!>(val x: Int)<!> {
<!CONFLICTING_OVERLOADS!>constructor()<!>: this(0)
}
<!CONFLICTING_OVERLOADS!>fun Test5()<!> {}
<!CONFLICTING_OVERLOADS!>fun Test5(x: Int)<!> = x
return 0
}
object Object {
fun test() {
<!CONFLICTING_OVERLOADS!>fun test1()<!> {}
<!CONFLICTING_OVERLOADS!>fun test1()<!> {}
fun Any.test2() {}
fun test2(x: Any) = x
<!CONFLICTING_OVERLOADS!>fun Any.test3()<!> {}
<!CONFLICTING_OVERLOADS!>fun Any.test3()<!> {}
<!CONFLICTING_OVERLOADS!>fun test4(): Int<!> = 0
<!CONFLICTING_OVERLOADS!>fun test4(): String<!> = ""
class Test5<!CONFLICTING_OVERLOADS!>(val x: Int)<!> {
<!CONFLICTING_OVERLOADS!>constructor()<!>: this(0)
}
<!CONFLICTING_OVERLOADS!>fun Test5()<!> {}
<!CONFLICTING_OVERLOADS!>fun Test5(x: Int)<!> = x
}
val property: Any get() {
<!CONFLICTING_OVERLOADS!>fun test1()<!> {}
<!CONFLICTING_OVERLOADS!>fun test1()<!> {}
fun Any.test2() {}
fun test2(x: Any) = x
<!CONFLICTING_OVERLOADS!>fun Any.test3()<!> {}
<!CONFLICTING_OVERLOADS!>fun Any.test3()<!> {}
<!CONFLICTING_OVERLOADS!>fun test4(): Int<!> = 0
<!CONFLICTING_OVERLOADS!>fun test4(): String<!> = ""
class Test5<!CONFLICTING_OVERLOADS!>(val x: Int)<!> {
<!CONFLICTING_OVERLOADS!>constructor()<!>: this(0)
}
<!CONFLICTING_OVERLOADS!>fun Test5()<!> {}
<!CONFLICTING_OVERLOADS!>fun Test5(x: Int)<!> = x
return 0
}
}
val obj = object {
fun test() {
<!CONFLICTING_OVERLOADS!>fun test1()<!> {}
<!CONFLICTING_OVERLOADS!>fun test1()<!> {}
fun Any.test2() {}
fun test2(x: Any) = x
<!CONFLICTING_OVERLOADS!>fun Any.test3()<!> {}
<!CONFLICTING_OVERLOADS!>fun Any.test3()<!> {}
<!CONFLICTING_OVERLOADS!>fun test4(): Int<!> = 0
<!CONFLICTING_OVERLOADS!>fun test4(): String<!> = ""
class Test5<!CONFLICTING_OVERLOADS!>(val x: Int)<!> {
<!CONFLICTING_OVERLOADS!>constructor()<!>: this(0)
}
<!CONFLICTING_OVERLOADS!>fun Test5()<!> {}
<!CONFLICTING_OVERLOADS!>fun Test5(x: Int)<!> = x
}
val property: Any get() {
<!CONFLICTING_OVERLOADS!>fun test1()<!> {}
<!CONFLICTING_OVERLOADS!>fun test1()<!> {}
fun Any.test2() {}
fun test2(x: Any) = x
<!CONFLICTING_OVERLOADS!>fun Any.test3()<!> {}
<!CONFLICTING_OVERLOADS!>fun Any.test3()<!> {}
<!CONFLICTING_OVERLOADS!>fun test4(): Int<!> = 0
<!CONFLICTING_OVERLOADS!>fun test4(): String<!> = ""
class Test5<!CONFLICTING_OVERLOADS!>(val x: Int)<!> {
<!CONFLICTING_OVERLOADS!>constructor()<!>: this(0)
}
<!CONFLICTING_OVERLOADS!>fun Test5()<!> {}
<!CONFLICTING_OVERLOADS!>fun Test5(x: Int)<!> = x
return 0
}
}