[FIR] Add diagnostic CONFLICTING_OVERLOADS & REDECLARATION

This commit is contained in:
Nick
2020-08-05 09:35:10 +03:00
parent 36984009e9
commit 4669e019d1
72 changed files with 681 additions and 247 deletions
@@ -1,4 +1,4 @@
package foo
val Int.foo: Int get() = 2
val Int.foo: Int get() = 3
<!REDECLARATION!>val Int.foo: Int get() = 2<!>
<!REDECLARATION!>val Int.foo: Int get() = 3<!>
@@ -1,13 +1,13 @@
public class A() {
public val FOO: String = "test"
<!REDECLARATION!>public val FOO: String = "test"<!>
public class FOO() { }
<!REDECLARATION!>public class FOO() { }<!>
}
public class B() {
companion object {
public val FOO: String = "test"
<!REDECLARATION!>public val FOO: String = "test"<!>
public class FOO() { }
<!REDECLARATION!>public class FOO() { }<!>
}
}
@@ -1,6 +1,6 @@
class A {
companion object B {
class G
val G = 1
<!REDECLARATION!>class G<!>
<!REDECLARATION!>val G = 1<!>
}
}
@@ -1,5 +1,5 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
// KT-9733 No error shown for 2 "main" functions in the same file
fun main(args: Array<String>) {}
fun main(args: Array<String>) {}
<!CONFLICTING_OVERLOADS!>fun main(args: Array<String>) {}<!>
<!CONFLICTING_OVERLOADS!>fun main(args: Array<String>) {}<!>
@@ -1,14 +1,14 @@
// FILE: f.kt
package redeclarations
object A {
<!REDECLARATION!>object A<!> {
val x : Int = 0
val A = 1
}
class A {}
<!REDECLARATION!>class A {}<!>
val A = 1
<!REDECLARATION!>val A = 1<!>
// FILE: f.kt
package redeclarations.A
@@ -1,9 +1,9 @@
// !DIAGNOSTICS: -DUPLICATE_CLASS_NAMES
// KT-3525
object B {
class C
class C
<!REDECLARATION!>class C<!>
<!REDECLARATION!>class C<!>
val a : Int = 1
val a : Int = 1
<!REDECLARATION!>val a : Int = 1<!>
<!REDECLARATION!>val a : Int = 1<!>
}
@@ -14,16 +14,16 @@ private val invalidProp0 = 1
fun useInvalidFun0() = invalidFun0()
fun useInvalidProp0() = invalidProp0
private fun invalidFun1() {}
private fun invalidFun1() {}
<!CONFLICTING_OVERLOADS!>private fun invalidFun1() {}<!>
<!CONFLICTING_OVERLOADS!>private fun invalidFun1() {}<!>
private fun invalidFun2() {}
public fun invalidFun2() {}
<!CONFLICTING_OVERLOADS!>private fun invalidFun2() {}<!>
<!CONFLICTING_OVERLOADS!>public fun invalidFun2() {}<!>
public fun invalidFun3() {}
private fun invalidFun4() {}
public fun invalidFun4() {}
<!CONFLICTING_OVERLOADS!>private fun invalidFun4() {}<!>
<!CONFLICTING_OVERLOADS!>public fun invalidFun4() {}<!>
public fun validFun2(a: A) = a
public fun validFun2(b: B) = b
@@ -1,13 +1,13 @@
val Test1 = null
class Test1
<!REDECLARATION!>val Test1 = null<!>
<!REDECLARATION!>class Test1<!>
val Test2 = null
interface Test2
<!REDECLARATION!>val Test2 = null<!>
<!REDECLARATION!>interface Test2<!>
val Test3 = null
object Test3
<!REDECLARATION!>val Test3 = null<!>
<!REDECLARATION!>object Test3<!>
val Test4 = null
class Test4
interface Test4
object Test4
<!REDECLARATION!>val Test4 = null<!>
<!REDECLARATION!>class Test4<!>
<!REDECLARATION!>interface Test4<!>
<!REDECLARATION!>object Test4<!>
@@ -1,17 +1,17 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -UNUSED_PARAMETER -TOPLEVEL_TYPEALIASES_ONLY
// FILE: file1.kt
class SomeClass
<!REDECLARATION!>class SomeClass<!>
typealias SomeClass = Any
typealias SomeClass = Any
typealias SomeClass = Any
<!REDECLARATION!>typealias SomeClass = Any<!>
<!REDECLARATION!>typealias SomeClass = Any<!>
<!REDECLARATION!>typealias SomeClass = Any<!>
class Outer {
class Nested
<!REDECLARATION!>class Nested<!>
typealias Nested = Any
typealias Nested = Any
typealias Nested = Any
<!REDECLARATION!>typealias Nested = Any<!>
<!REDECLARATION!>typealias Nested = Any<!>
<!REDECLARATION!>typealias Nested = Any<!>
}
// FILE: file2.kt
@@ -1,13 +1,13 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -UNUSED_PARAMETER -TOPLEVEL_TYPEALIASES_ONLY
// FILE: file1.kt
typealias Test = String
<!REDECLARATION!>typealias Test = String<!>
val Test = 42
<!REDECLARATION!>val Test = 42<!>
class Outer {
typealias Test = String
<!REDECLARATION!>typealias Test = String<!>
val Test = 42
<!REDECLARATION!>val Test = 42<!>
}
typealias Test2 = String
@@ -4,19 +4,19 @@
package kt2438
class B {
class C
class C
<!REDECLARATION!>class C<!>
<!REDECLARATION!>class C<!>
}
class A {
class B
<!REDECLARATION!>class B<!>
companion object {
class B
class B
<!REDECLARATION!>class B<!>
<!REDECLARATION!>class B<!>
}
class B
<!REDECLARATION!>class B<!>
}
@@ -1,37 +1,37 @@
val a : Int = 1
val a : Int = 1
val a : Int = 1
<!REDECLARATION!>val a : Int = 1<!>
<!REDECLARATION!>val a : Int = 1<!>
<!REDECLARATION!>val a : Int = 1<!>
val b : Int = 1
val b : Int = 1
val b : Int = 1
val b : Int = 1
<!REDECLARATION!>val b : Int = 1<!>
<!REDECLARATION!>val b : Int = 1<!>
<!REDECLARATION!>val b : Int = 1<!>
<!REDECLARATION!>val b : Int = 1<!>
fun foo() {} // and here too
fun foo() {} // and here
fun foo() {} // and here
fun foo() {} // and here
<!CONFLICTING_OVERLOADS!>fun foo() {}<!> // and here too
<!CONFLICTING_OVERLOADS!>fun foo() {}<!> // and here
<!CONFLICTING_OVERLOADS!>fun foo() {}<!> // and here
<!CONFLICTING_OVERLOADS!>fun foo() {}<!> // and here
fun bar() {} // and here
fun bar() {} // and here
fun bar() {} // and here
<!CONFLICTING_OVERLOADS!>fun bar() {}<!> // and here
<!CONFLICTING_OVERLOADS!>fun bar() {}<!> // and here
<!CONFLICTING_OVERLOADS!>fun bar() {}<!> // and here
class A {
val a : Int = 1
val a : Int = 1
val a : Int = 1
<!REDECLARATION!>val a : Int = 1<!>
<!REDECLARATION!>val a : Int = 1<!>
<!REDECLARATION!>val a : Int = 1<!>
val b : Int = 1
val b : Int = 1
val b : Int = 1
val b : Int = 1
<!REDECLARATION!>val b : Int = 1<!>
<!REDECLARATION!>val b : Int = 1<!>
<!REDECLARATION!>val b : Int = 1<!>
<!REDECLARATION!>val b : Int = 1<!>
fun foo() {} // and here too
fun foo() {} // and here
fun foo() {} // and here
fun foo() {} // and here
<!CONFLICTING_OVERLOADS!>fun foo() {}<!> // and here too
<!CONFLICTING_OVERLOADS!>fun foo() {}<!> // and here
<!CONFLICTING_OVERLOADS!>fun foo() {}<!> // and here
<!CONFLICTING_OVERLOADS!>fun foo() {}<!> // and here
fun bar() {} // and here
fun bar() {} // and here
fun bar() {} // and here
<!CONFLICTING_OVERLOADS!>fun bar() {}<!> // and here
<!CONFLICTING_OVERLOADS!>fun bar() {}<!> // and here
<!CONFLICTING_OVERLOADS!>fun bar() {}<!> // and here
}