Prohibit local objects and enum classes
#KT-5402 Fixed
#KT-4838 Fixed
Resolve type of object inside local object as special, not supertype('Any').
Changed visibility of constructor of anonymous object to 'internal' to be able to resolve the following:
fun box(): String {
var foo = object {
val bar = object {
val baz = "ok"
}
}
return foo.bar.baz
}
The containing declaration of property initializers is constructor, so 'baz' was invisible inside private constructor.
This commit is contained in:
@@ -14,7 +14,7 @@ fun test() {
|
||||
}
|
||||
b.foo()
|
||||
|
||||
object B {
|
||||
<!LOCAL_OBJECT_NOT_ALLOWED!>object B<!> {
|
||||
fun foo() {}
|
||||
}
|
||||
B.foo()
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
// !DIAGNOSTICS: -UNUSED_VARIABLE
|
||||
|
||||
fun foo() {
|
||||
<!LOCAL_OBJECT_NOT_ALLOWED!>object a<!> {}
|
||||
val b = object {
|
||||
<!LOCAL_OBJECT_NOT_ALLOWED!>object c<!> {}
|
||||
}
|
||||
b.<!NESTED_CLASS_ACCESSED_VIA_INSTANCE_REFERENCE!>c<!>
|
||||
class A {
|
||||
<!LOCAL_OBJECT_NOT_ALLOWED!>object d<!> {}
|
||||
}
|
||||
val f = {
|
||||
<!LOCAL_OBJECT_NOT_ALLOWED!>object e<!> {}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user