Check local function declarations for overload conflicts.

In PSI unifier tests, disable errors for tests on local functions (as irrelevant).
This commit is contained in:
Dmitry Petrov
2016-02-11 16:01:58 +03:00
parent 17a95384e1
commit edf6a2142b
11 changed files with 307 additions and 14 deletions
@@ -0,0 +1,213 @@
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
}
}