[FIR] Add diagnostics for object related problems
This commit is contained in:
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
+4
-4
@@ -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<!>
|
||||
}
|
||||
|
||||
+8
-8
@@ -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!>()<!>
|
||||
|
||||
+3
-3
@@ -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 {}
|
||||
|
||||
+2
-2
@@ -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 {
|
||||
|
||||
+2
-2
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
+2
-2
@@ -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 =
|
||||
|
||||
Reference in New Issue
Block a user