[FIR] Add diagnostics for object related problems

This commit is contained in:
Nick
2020-07-30 17:11:15 +03:00
committed by Mikhail Glukhikh
parent 694d3cad4e
commit 26e3a111d6
32 changed files with 419 additions and 77 deletions
@@ -194,7 +194,7 @@ fun testFunctionLiterals() {
val endsWithObjectDeclaration : () -> Int = {
var x = 1
x = 333
object A {}
<!LOCAL_OBJECT_NOT_ALLOWED!>object A<!> {}
}
val expectedUnitReturnType1: () -> Unit = {
@@ -203,7 +203,7 @@ fun testFunctionLiterals() {
val expectedUnitReturnType2: () -> Unit = {
fun meow() : Unit {}
object A {}
<!LOCAL_OBJECT_NOT_ALLOWED!>object A<!> {}
}
}
@@ -5,7 +5,7 @@ class A {
companion object {
val x = 1
}
companion object {
companion <!MANY_COMPANION_OBJECTS!>object<!> {
val x = 1
}
}
@@ -14,10 +14,10 @@ class AA {
companion object {
val x = 1
}
companion object A {
companion <!MANY_COMPANION_OBJECTS!>object A<!> {
val x = 1
}
companion object AA {
companion <!MANY_COMPANION_OBJECTS!>object AA<!> {
val x = 1
}
}
@@ -2,16 +2,16 @@ class A {
inner class I {
companion object A
companion object B
companion <!MANY_COMPANION_OBJECTS!>object B<!>
companion object C
companion <!MANY_COMPANION_OBJECTS!>object C<!>
}
}
object O {
companion object A
companion object B
companion <!MANY_COMPANION_OBJECTS!>object B<!>
companion object C
companion <!MANY_COMPANION_OBJECTS!>object C<!>
}
@@ -1,21 +1,21 @@
object A<T>
object B<in T, out R>
object C<T : Comparable<T>>
<!TYPE_PARAMETERS_IN_OBJECT!>object A<!><T>
<!TYPE_PARAMETERS_IN_OBJECT!>object B<!><in T, out R>
<!TYPE_PARAMETERS_IN_OBJECT!>object C<!><T : Comparable<T>>
class D {
companion object<T>
companion <!TYPE_PARAMETERS_IN_OBJECT!>object<!><T>
}
class E {
companion object<in T, out R>
companion <!TYPE_PARAMETERS_IN_OBJECT!>object<!><in T, out R>
}
class F {
companion object C<T : Comparable<T>>
companion <!TYPE_PARAMETERS_IN_OBJECT!>object C<!><T : Comparable<T>>
}
class G {
companion object F<T>
companion <!TYPE_PARAMETERS_IN_OBJECT!>object F<!><T>
}
object H<T, R><!CONSTRUCTOR_IN_OBJECT!>()<!>
<!TYPE_PARAMETERS_IN_OBJECT!>object H<!><T, R><!CONSTRUCTOR_IN_OBJECT!>()<!>
@@ -4,9 +4,9 @@
override class A {
override companion object {}
open companion object {}
abstract companion object {}
final companion object {}
open companion <!MANY_COMPANION_OBJECTS!>object<!> {}
abstract companion <!MANY_COMPANION_OBJECTS!>object<!> {}
final companion <!MANY_COMPANION_OBJECTS!>object<!> {}
}
override object B1 {}
@@ -87,9 +87,9 @@ class WithNestedFun<K> {
}
fun <T> local() {
fun interface LocalFun {
<!LOCAL_INTERFACE_NOT_ALLOWED!>fun interface LocalFun {
fun invoke(element: T)
}
}<!>
}
fun interface WithDefaultValue {
@@ -9,8 +9,8 @@ inline val z: Int
}
}
object B{
object BInner {}
<!LOCAL_OBJECT_NOT_ALLOWED!>object B<!>{
<!LOCAL_OBJECT_NOT_ALLOWED!>object BInner<!> {}
}
fun local() {
@@ -9,8 +9,8 @@ inline fun unsupported() {
}
}
object B{
object BInner {}
<!LOCAL_OBJECT_NOT_ALLOWED!>object B<!>{
<!LOCAL_OBJECT_NOT_ALLOWED!>object BInner<!> {}
}
fun local() {
@@ -1,30 +0,0 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE
// KT-4351 Cannot resolve reference to self in init of class local to function
fun f() {
class MyClass() {
init {
val x: MyClass = MyClass()
}
fun member() {
val x: MyClass = MyClass()
}
}
object MyObject {
init {
val obj: MyObject = MyObject
}
}
val x: MyClass = MyClass()
}
val closure = {
class MyClass {
init {
val x: MyClass = MyClass()
}
}
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_VARIABLE
// KT-4351 Cannot resolve reference to self in init of class local to function
+4 -4
View File
@@ -1,14 +1,14 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE
fun foo() {
interface a {}
<!LOCAL_INTERFACE_NOT_ALLOWED!>interface a {}<!>
val b = object {
interface c {}
<!LOCAL_INTERFACE_NOT_ALLOWED!>interface c {}<!>
}
class A {
interface d {}
<!LOCAL_INTERFACE_NOT_ALLOWED!>interface d {}<!>
}
val f = {
interface e {}
<!LOCAL_INTERFACE_NOT_ALLOWED!>interface e {}<!>
}
}
@@ -16,7 +16,7 @@ fun test() {
}
b.foo()
object B {
<!LOCAL_OBJECT_NOT_ALLOWED!>object B<!> {
fun foo() {}
}
B.foo()
@@ -1,15 +1,15 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE
fun foo() {
object a {}
<!LOCAL_OBJECT_NOT_ALLOWED!>object a<!> {}
val b = object {
object c {}
<!LOCAL_OBJECT_NOT_ALLOWED!>object c<!> {}
}
b.c
class A {
object d {}
<!LOCAL_OBJECT_NOT_ALLOWED!>object d<!> {}
}
val f = {
object e {}
<!LOCAL_OBJECT_NOT_ALLOWED!>object e<!> {}
}
}
@@ -1,4 +0,0 @@
fun foo(): Any {
object Bar
return Bar
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
fun foo(): Any {
<!LOCAL_OBJECT_NOT_ALLOWED!>object Bar<!>
return Bar
@@ -8,10 +8,10 @@ fun withLocalClasses(param: Int): Interface {
get() = 100
}
interface LocalInterface : Interface {
<!LOCAL_INTERFACE_NOT_ALLOWED!>interface LocalInterface : Interface {
override fun foo(x: Int): Int =
x + param
}
}<!>
return object : LocalBase(), LocalInterface {
override fun foo(x: Int): Int =