[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
@@ -2,10 +2,10 @@
package Jet86
class A {
companion object {
companion <!REDECLARATION!>object<!> {
val x = 1
}
companion <!MANY_COMPANION_OBJECTS!>object<!> {
companion <!MANY_COMPANION_OBJECTS, REDECLARATION!>object<!> {
val x = 1
}
}
@@ -2,19 +2,19 @@
package test
class A {
object Companion
<!REDECLARATION!>object Companion<!>
companion object
companion <!REDECLARATION!>object<!>
}
class B {
companion object Named
companion <!REDECLARATION!>object Named<!>
object Named
<!REDECLARATION!>object Named<!>
}
class C {
class Named
<!REDECLARATION!>class Named<!>
companion object Named
companion <!REDECLARATION!>object Named<!>
}
@@ -1,6 +1,6 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
data class A(val x: Int, val y: String) {
fun copy(x: Int, y: String) = x
fun copy(x: Int, y: String) = A(x, y)
<!CONFLICTING_OVERLOADS!>fun copy(x: Int, y: String) = x<!>
<!CONFLICTING_OVERLOADS!>fun copy(x: Int, y: String) = A(x, y)<!>
}
@@ -1,9 +1,9 @@
data class A1(val x: Int, val y: String, val x: Int) {
data class A1(<!REDECLARATION!>val x: Int<!>, val y: String, <!REDECLARATION!>val x: Int<!>) {
val z = ""
}
data class A2(val x: Int, val y: String) {
val x = ""
data class A2(<!REDECLARATION!>val x: Int<!>, val y: String) {
<!REDECLARATION!>val x = ""<!>
}
data class A3(val<!SYNTAX!><!> :Int, val<!SYNTAX!><!> : Int)
data class A3(<!REDECLARATION!>val<!SYNTAX!><!> :Int<!>, <!REDECLARATION!>val<!SYNTAX!><!> : Int<!>)
@@ -7,8 +7,8 @@ class MyClass {
class MyClass2 {}
fun MyClass2.component1() = 1.2
fun MyClass2.component1() = 1.3
<!CONFLICTING_OVERLOADS!>fun MyClass2.component1() = 1.2<!>
<!CONFLICTING_OVERLOADS!>fun MyClass2.component1() = 1.3<!>
fun test(mc1: MyClass, mc2: MyClass2) {
val (<!INAPPLICABLE_CANDIDATE!>a<!>, <!UNRESOLVED_REFERENCE!>b<!>) = mc1
@@ -1,6 +1,6 @@
class A {
operator fun component1() = 1
operator fun component1() = 1
<!CONFLICTING_OVERLOADS!>operator fun component1() = 1<!>
<!CONFLICTING_OVERLOADS!>operator fun component1() = 1<!>
operator fun component2() = 1
}
@@ -3,10 +3,10 @@
// KT-3464 Front-end shouldn't allow override modifier in class declaration
override class A {
override companion object {}
open companion <!MANY_COMPANION_OBJECTS!>object<!> {}
abstract companion <!MANY_COMPANION_OBJECTS!>object<!> {}
final companion <!MANY_COMPANION_OBJECTS!>object<!> {}
override companion <!REDECLARATION!>object<!> {}
open companion <!MANY_COMPANION_OBJECTS, REDECLARATION!>object<!> {}
abstract companion <!MANY_COMPANION_OBJECTS, REDECLARATION!>object<!> {}
final companion <!MANY_COMPANION_OBJECTS, REDECLARATION!>object<!> {}
}
override object B1 {}
@@ -1,5 +1,5 @@
class C {
companion object {}
companion <!REDECLARATION!>object<!> {}
val Companion = C
<!REDECLARATION!>val Companion = C<!>
}
@@ -1,8 +1,8 @@
class B {
companion object A {
companion <!REDECLARATION!>object A<!> {
}
val A = this
<!REDECLARATION!>val A = this<!>
}
class C {
@@ -10,5 +10,5 @@ fun test1(a: Array<out Int?>) {
fun test2(vararg a: Int?) {
val list = a.<!INAPPLICABLE_CANDIDATE!>filterNotNull<!>()
list checkType { <!INAPPLICABLE_CANDIDATE!>_<!><List<Int>>() }
list checkType { _<List<Int>>() }
}
@@ -15,15 +15,15 @@ inline operator fun <T, U, V> @ExtensionFunctionType Function2<T, U, V>.plus(p:
this - p
}
inline fun <T, U, V> inlineFunWithInvoke(s: (p: T) -> U, ext: T.(p: U) -> V) {
<!CONFLICTING_OVERLOADS!>inline fun <T, U, V> inlineFunWithInvoke(s: (p: T) -> U, ext: T.(p: U) -> V) {
s + s
ext + ext
}
}<!>
inline fun <T, U, V> inlineFunWithInvoke(s: (p: T) -> U, ext: T.(p: U) -> V) {
<!CONFLICTING_OVERLOADS!>inline fun <T, U, V> inlineFunWithInvoke(s: (p: T) -> U, ext: T.(p: U) -> V) {
s + s
ext + ext
}
}<!>
inline fun <T, U> Function1<T, U>.submit() {
this + this
@@ -23,6 +23,6 @@ actual var s: String = "value"
fun foo2(): Int = 0
actual class Foo3
<!REDECLARATION!>actual class Foo3<!>
class Foo3
<!REDECLARATION!>class Foo3<!>
@@ -1,8 +0,0 @@
// !LANGUAGE: +MultiPlatformProjects
// MODULE: m1-common
// FILE: common.kt
expect fun foo()
expect fun foo()
expect fun foo(x: Int)
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !LANGUAGE: +MultiPlatformProjects
// MODULE: m1-common
// FILE: common.kt
@@ -7,11 +7,11 @@ expect fun foo()
// MODULE: m2-jvm(m1-common)
// FILE: jvm.kt
actual fun foo() {}
actual fun foo() {}
<!CONFLICTING_OVERLOADS!>actual fun foo() {}<!>
<!CONFLICTING_OVERLOADS!>actual fun foo() {}<!>
// MODULE: m3-js(m1-common)
// FILE: js.kt
actual fun foo() {}
actual fun foo() {}
<!CONFLICTING_OVERLOADS!>actual fun foo() {}<!>
<!CONFLICTING_OVERLOADS!>actual fun foo() {}<!>
@@ -2,8 +2,8 @@
// MODULE: m1-common
// FILE: common.kt
expect fun foo()
<!CONFLICTING_OVERLOADS!>expect fun foo()<!>
expect fun foo() {}
<!CONFLICTING_OVERLOADS!>expect fun foo() {}<!>
expect fun bar() {}
@@ -1,6 +1,6 @@
class A {
fun a(a: Int): Int = 0
<!CONFLICTING_OVERLOADS!>fun a(a: Int): Int = 0<!>
fun a(a: Int) {
}
<!CONFLICTING_OVERLOADS!>fun a(a: Int) {
}<!>
}
@@ -1,7 +1,7 @@
package qwertyuiop
fun c(s: String) {
}
<!CONFLICTING_OVERLOADS!>fun c(s: String) {
}<!>
fun c(s: String) {
}
<!CONFLICTING_OVERLOADS!>fun c(s: String) {
}<!>
@@ -1,5 +1,5 @@
package extensionFunctions
fun Int.qwe(a: Float) = 1
<!CONFLICTING_OVERLOADS!>fun Int.qwe(a: Float) = 1<!>
fun Int.qwe(a: Float) = 2
<!CONFLICTING_OVERLOADS!>fun Int.qwe(a: Float) = 2<!>
@@ -1,7 +1,7 @@
class A() {
fun b() {
}
<!CONFLICTING_OVERLOADS!>fun b() {
}<!>
fun b() {
}
<!CONFLICTING_OVERLOADS!>fun b() {
}<!>
}
@@ -1,4 +1,4 @@
class Aaa() {
val a = 1
val a = 1
<!REDECLARATION!>val a = 1<!>
<!REDECLARATION!>val a = 1<!>
}
@@ -1,4 +1,4 @@
class Aaa() {
val a = 1
val a = ""
<!REDECLARATION!>val a = 1<!>
<!REDECLARATION!>val a = ""<!>
}
@@ -1,8 +1,8 @@
import java.io.Serializable
interface Test1 {
fun <T> foo(t: T) where T : Cloneable, T : Serializable
fun <T> foo(t: T) where T : Serializable, T : Cloneable
<!CONFLICTING_OVERLOADS!>fun <T> foo(t: T) where T : Cloneable, T : Serializable<!>
<!CONFLICTING_OVERLOADS!>fun <T> foo(t: T) where T : Serializable, T : Cloneable<!>
}
@@ -10,6 +10,6 @@ interface I1
interface I2 : I1
interface Test2 {
fun <T> foo(t: T) where T : I1, T : I2
fun <T> foo(t: T) where T : I2, T : I1
<!CONFLICTING_OVERLOADS!>fun <T> foo(t: T) where T : I1, T : I2<!>
<!CONFLICTING_OVERLOADS!>fun <T> foo(t: T) where T : I2, T : I1<!>
}
@@ -3,6 +3,6 @@ interface Some {
}
class SomeImpl : Some {
override fun test() {}
override fun test() {}
<!CONFLICTING_OVERLOADS!>override fun test() {}<!>
<!CONFLICTING_OVERLOADS!>override fun test() {}<!>
}
@@ -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
}
@@ -1,4 +1,4 @@
// JET-11 Redeclaration & Forward reference for classes cause an exception
open class NoC
<!REDECLARATION!>open class NoC<!>
class NoC1 : NoC()
open class NoC
<!REDECLARATION!>open class NoC<!>
@@ -3,32 +3,32 @@ package c
fun z(view: () -> Unit) {}
fun x() = z { z { z { z { z { z { z { z { } } } } } } } }
fun x() = z { z { z { z { z { z { z { z { } } } } } } } }
fun x() = z { z { z { z { z { z { z { z { } } } } } } } }
fun x() = z { z { z { z { z { z { z { z { } } } } } } } }
fun x() = z { z { z { z { z { z { z { z { } } } } } } } }
fun x() = z { z { z { z { z { z { z { z { } } } } } } } }
fun x() = z { z { z { z { z { z { z { z { } } } } } } } }
fun x() = z { z { z { z { z { z { z { z { } } } } } } } }
fun x() = z { z { z { z { z { z { z { z { } } } } } } } }
fun x() = z { z { z { z { z { z { z { z { } } } } } } } }
fun x() = z { z { z { z { z { z { z { z { } } } } } } } }
fun x() = z { z { z { z { z { z { z { z { } } } } } } } }
fun x() = z { z { z { z { z { z { z { z { } } } } } } } }
fun x() = z { z { z { z { z { z { z { z { } } } } } } } }
fun x() = z { z { z { z { z { z { z { z { } } } } } } } }
fun x() = z { z { z { z { z { z { z { z { } } } } } } } }
fun x() = z { z { z { z { z { z { z { z { } } } } } } } }
fun x() = z { z { z { z { z { z { z { z { } } } } } } } }
fun x() = z { z { z { z { z { z { z { z { } } } } } } } }
fun x() = z { z { z { z { z { z { z { z { } } } } } } } }
fun x() = z { z { z { z { z { z { z { z { } } } } } } } }
fun x() = z { z { z { z { z { z { z { z { } } } } } } } }
fun x() = z { z { z { z { z { z { z { z { } } } } } } } }
fun x() = z { z { z { z { z { z { z { z { } } } } } } } }
fun x() = z { z { z { z { z { z { z { z { } } } } } } } }
fun x() = z { z { z { z { z { z { z { z { } } } } } } } }
fun x() = z { z { z { z { z { z { z { z { } } } } } } } }
<!CONFLICTING_OVERLOADS!>fun x() = z { z { z { z { z { z { z { z { } } } } } } } }<!>
<!CONFLICTING_OVERLOADS!>fun x() = z { z { z { z { z { z { z { z { } } } } } } } }<!>
<!CONFLICTING_OVERLOADS!>fun x() = z { z { z { z { z { z { z { z { } } } } } } } }<!>
<!CONFLICTING_OVERLOADS!>fun x() = z { z { z { z { z { z { z { z { } } } } } } } }<!>
<!CONFLICTING_OVERLOADS!>fun x() = z { z { z { z { z { z { z { z { } } } } } } } }<!>
<!CONFLICTING_OVERLOADS!>fun x() = z { z { z { z { z { z { z { z { } } } } } } } }<!>
<!CONFLICTING_OVERLOADS!>fun x() = z { z { z { z { z { z { z { z { } } } } } } } }<!>
<!CONFLICTING_OVERLOADS!>fun x() = z { z { z { z { z { z { z { z { } } } } } } } }<!>
<!CONFLICTING_OVERLOADS!>fun x() = z { z { z { z { z { z { z { z { } } } } } } } }<!>
<!CONFLICTING_OVERLOADS!>fun x() = z { z { z { z { z { z { z { z { } } } } } } } }<!>
<!CONFLICTING_OVERLOADS!>fun x() = z { z { z { z { z { z { z { z { } } } } } } } }<!>
<!CONFLICTING_OVERLOADS!>fun x() = z { z { z { z { z { z { z { z { } } } } } } } }<!>
<!CONFLICTING_OVERLOADS!>fun x() = z { z { z { z { z { z { z { z { } } } } } } } }<!>
<!CONFLICTING_OVERLOADS!>fun x() = z { z { z { z { z { z { z { z { } } } } } } } }<!>
<!CONFLICTING_OVERLOADS!>fun x() = z { z { z { z { z { z { z { z { } } } } } } } }<!>
<!CONFLICTING_OVERLOADS!>fun x() = z { z { z { z { z { z { z { z { } } } } } } } }<!>
<!CONFLICTING_OVERLOADS!>fun x() = z { z { z { z { z { z { z { z { } } } } } } } }<!>
<!CONFLICTING_OVERLOADS!>fun x() = z { z { z { z { z { z { z { z { } } } } } } } }<!>
<!CONFLICTING_OVERLOADS!>fun x() = z { z { z { z { z { z { z { z { } } } } } } } }<!>
<!CONFLICTING_OVERLOADS!>fun x() = z { z { z { z { z { z { z { z { } } } } } } } }<!>
<!CONFLICTING_OVERLOADS!>fun x() = z { z { z { z { z { z { z { z { } } } } } } } }<!>
<!CONFLICTING_OVERLOADS!>fun x() = z { z { z { z { z { z { z { z { } } } } } } } }<!>
<!CONFLICTING_OVERLOADS!>fun x() = z { z { z { z { z { z { z { z { } } } } } } } }<!>
<!CONFLICTING_OVERLOADS!>fun x() = z { z { z { z { z { z { z { z { } } } } } } } }<!>
<!CONFLICTING_OVERLOADS!>fun x() = z { z { z { z { z { z { z { z { } } } } } } } }<!>
<!CONFLICTING_OVERLOADS!>fun x() = z { z { z { z { z { z { z { z { } } } } } } } }<!>
<!CONFLICTING_OVERLOADS!>fun x() = z { z { z { z { z { z { z { z { } } } } } } } }<!>
class x() {}
@@ -1,7 +1,7 @@
class A
class A {
<!REDECLARATION!>class A<!>
<!REDECLARATION!>class A {
constructor()
}
}<!>
class B
class Outer {