KT-13961 REDECLARATION not reported on private-in-file 'foo' vs public 'foo' in different file

Private-in-file declarations conflict with public overload-equivalent declarations
in other files in the same package.

Move functions for grouping possible redeclarations to OverloadResolver
(since they are used only there).

Refactor redeclarations / conflicting overloads reporting.
This commit is contained in:
Dmitry Petrov
2016-09-21 18:12:24 +03:00
parent 0120085443
commit 06101dba52
42 changed files with 293 additions and 297 deletions
@@ -5,8 +5,14 @@ interface A
interface B : A
private fun validFun() {}
private val validVal = 1
private val validProp = 1
<!CONFLICTING_OVERLOADS!>private fun invalidFun0()<!> {}
private val <!REDECLARATION!>invalidProp0<!> = 1
// NB invalidFun0 and invalidProp0 are conflicting overloads, since the following is an ambiguity:
fun useInvalidFun0() = <!OVERLOAD_RESOLUTION_AMBIGUITY!>invalidFun0<!>()
fun useInvalidProp0() = <!OVERLOAD_RESOLUTION_AMBIGUITY!>invalidProp0<!>
<!CONFLICTING_OVERLOADS!>private fun invalidFun1()<!> {}
<!CONFLICTING_OVERLOADS!>private fun invalidFun1()<!> {}
@@ -17,7 +23,7 @@ private val validProp = 1
<!CONFLICTING_OVERLOADS!>public fun invalidFun3()<!> {}
<!CONFLICTING_OVERLOADS!>private fun invalidFun4()<!> {}
<!CONFLICTING_OVERLOADS, CONFLICTING_OVERLOADS!>public fun invalidFun4()<!> {}
<!CONFLICTING_OVERLOADS!>public fun invalidFun4()<!> {}
public fun validFun2(a: A) = a
public fun validFun2(b: B) = b
@@ -26,8 +32,11 @@ public fun validFun2(b: B) = b
package a
private fun validFun() {}
private val validVal = 1
private val validProp = 1
<!CONFLICTING_OVERLOADS!>private fun invalidFun0()<!> {}
private val <!REDECLARATION!>invalidProp0<!> = 1
<!CONFLICTING_OVERLOADS!>internal fun invalidFun3()<!> {}
<!CONFLICTING_OVERLOADS!>internal fun invalidFun4()<!> {}
@@ -35,6 +44,6 @@ private val validProp = 1
// FILE: c.kt
package a
public fun validFun() {}
<!CONFLICTING_OVERLOADS!>public fun invalidFun0()<!> {}
public val validProp = 1
public val <!REDECLARATION!>invalidProp0<!> = 1