Inaccessible outer class member is now an error
#KT-1174 In Progress
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
class Outer() {
|
||||
open class InnerBase() {
|
||||
open inner class InnerBase() {
|
||||
}
|
||||
|
||||
class InnerDerived(): InnerBase() {
|
||||
inner class InnerDerived(): InnerBase() {
|
||||
}
|
||||
|
||||
public val foo: InnerBase? = InnerDerived()
|
||||
|
||||
@@ -4,7 +4,7 @@ import java.io.*
|
||||
class World() {
|
||||
public val items: ArrayList<Item> = ArrayList<Item>()
|
||||
|
||||
class Item() {
|
||||
inner class Item() {
|
||||
{
|
||||
items.add(this)
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
class Outer(val foo: StringBuilder) {
|
||||
class Inner() {
|
||||
inner class Inner() {
|
||||
fun len() : Int {
|
||||
return foo.length()
|
||||
}
|
||||
|
||||
@@ -20,7 +20,7 @@ class C {
|
||||
return "OK"
|
||||
}
|
||||
|
||||
private class Inner() {
|
||||
private inner class Inner() {
|
||||
fun innerFun() {
|
||||
"".ext()
|
||||
f()
|
||||
|
||||
@@ -17,7 +17,7 @@ class C{
|
||||
return v
|
||||
}
|
||||
|
||||
private class Inner() {
|
||||
private inner class Inner() {
|
||||
fun innerFun() {
|
||||
v = v + 1
|
||||
}
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
class Outer() {
|
||||
val s = "xyzzy"
|
||||
|
||||
open class InnerBase(public val name: String) {
|
||||
open inner class InnerBase(public val name: String) {
|
||||
}
|
||||
|
||||
class InnerDerived(): InnerBase(s) {
|
||||
inner class InnerDerived(): InnerBase(s) {
|
||||
}
|
||||
|
||||
val x = InnerDerived()
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
class A {
|
||||
class B(val a: String = "a", val b: Int = 55, val c: String = "c")
|
||||
inner class B(val a: String = "a", val b: Int = 55, val c: String = "c")
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
class A {
|
||||
class B(val a: Double = 1.0, val b: Int = 55, val c: String = "c")
|
||||
inner class B(val a: Double = 1.0, val b: Int = 55, val c: String = "c")
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
fun box(): String {
|
||||
val o = object {
|
||||
class A(val value: String = "OK")
|
||||
inner class A(val value: String = "OK")
|
||||
}
|
||||
|
||||
return o.A().value
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
class A {
|
||||
public class Foo(val a: Int = 1) {}
|
||||
public inner class Foo(val a: Int = 1) {}
|
||||
|
||||
fun foo() {
|
||||
Foo()
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
private class A {
|
||||
public class Foo(val a: Int = 1) {}
|
||||
public inner class Foo(val a: Int = 1) {}
|
||||
}
|
||||
|
||||
// CLASS: A$Foo
|
||||
|
||||
@@ -4,14 +4,14 @@ fun box() = IssueState.DEFAULT.ToString() + IssueState.FIXED.ToString()
|
||||
|
||||
enum class IssueState {
|
||||
DEFAULT {
|
||||
class D {
|
||||
inner class D {
|
||||
val k = ToString()
|
||||
}
|
||||
}
|
||||
FIXED {
|
||||
override fun ToString() = "K"
|
||||
|
||||
object D {
|
||||
inner class D {
|
||||
val k = ToString()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,7 +16,7 @@ public object SomeObject {
|
||||
}
|
||||
|
||||
public class SomeClass() {
|
||||
class Inner {
|
||||
inner class Inner {
|
||||
val copy = list
|
||||
}
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ open class N() : M() {
|
||||
|
||||
override var y = 200
|
||||
|
||||
open class C() {
|
||||
open inner class C() {
|
||||
fun test5() = y
|
||||
fun test6() : Int {
|
||||
super<M>@N.y += 200
|
||||
|
||||
@@ -229,7 +229,7 @@ class Outer() {
|
||||
$b = 1
|
||||
}
|
||||
|
||||
class Inner() {
|
||||
inner class Inner() {
|
||||
{
|
||||
<!VAL_REASSIGNMENT!>a<!>++
|
||||
b++
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
class Outer1 {
|
||||
class Nested
|
||||
|
||||
class C1 { val b = Nested() }
|
||||
class C2(val b: Any = Nested())
|
||||
inner class C3 { val b = Nested() }
|
||||
inner class C4(val b: Any = Nested())
|
||||
|
||||
inner class Inner
|
||||
|
||||
class C5 { val b = <!INACCESSIBLE_OUTER_CLASS_EXPRESSION!>Inner()<!> }
|
||||
class C6(val b: Any = <!INACCESSIBLE_OUTER_CLASS_EXPRESSION!>Inner()<!>)
|
||||
inner class C7 { val b = Inner() }
|
||||
inner class C8(val b: Any = Inner())
|
||||
}
|
||||
|
||||
|
||||
class Outer2 {
|
||||
class Nested {
|
||||
fun foo() = Outer2()
|
||||
fun bar() = <!INACCESSIBLE_OUTER_CLASS_EXPRESSION!>Inner()<!>
|
||||
}
|
||||
inner class Inner {
|
||||
fun foo() = Outer2()
|
||||
fun bar() = Nested()
|
||||
}
|
||||
|
||||
fun foo() {
|
||||
Nested()
|
||||
Inner()
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
enum class E {
|
||||
E1 {
|
||||
override fun foo() = outerFun() + super.outerFun()
|
||||
}
|
||||
E2 {
|
||||
override fun foo() = E1.foo()
|
||||
}
|
||||
|
||||
abstract fun foo(): Int
|
||||
|
||||
fun outerFun() = 42
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
class Outer {
|
||||
class Nested
|
||||
inner class Inner
|
||||
|
||||
fun Inner.foo() {
|
||||
Outer()
|
||||
Nested()
|
||||
Inner()
|
||||
}
|
||||
|
||||
fun Nested.bar() {
|
||||
Outer()
|
||||
Nested()
|
||||
Inner()
|
||||
}
|
||||
|
||||
fun Outer.baz() {
|
||||
Outer()
|
||||
Nested()
|
||||
Inner()
|
||||
}
|
||||
}
|
||||
|
||||
fun Outer.foo() {
|
||||
Outer()
|
||||
<!UNRESOLVED_REFERENCE!>Nested<!>()
|
||||
Inner()
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
class Outer {
|
||||
fun foo(): Int {
|
||||
if (outerState > 0) return outerState
|
||||
|
||||
class Local {
|
||||
val localState = outerState
|
||||
|
||||
inner class LocalInner {
|
||||
val o = outerState
|
||||
val l = localState
|
||||
}
|
||||
}
|
||||
|
||||
return Local().localState
|
||||
}
|
||||
|
||||
val outerState = 42
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
class Outer {
|
||||
class Nested {
|
||||
fun foo() {
|
||||
class Local {
|
||||
val state = <!INACCESSIBLE_OUTER_CLASS_EXPRESSION!>outerState<!>
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
val outerState = 42
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
class Outer {
|
||||
open class OpenNested
|
||||
class FinalNested
|
||||
|
||||
open inner class OpenInner
|
||||
class FinalInner
|
||||
|
||||
class Nested1 : OpenNested()
|
||||
class Nested2 : <!FINAL_SUPERTYPE!>FinalNested<!>()
|
||||
class Nested3 : <!INACCESSIBLE_OUTER_CLASS_EXPRESSION!>OpenInner()<!>
|
||||
class Nested4 : <!FINAL_SUPERTYPE!>FinalInner<!>()
|
||||
|
||||
inner class Inner1 : OpenNested()
|
||||
inner class Inner2 : <!FINAL_SUPERTYPE!>FinalNested<!>()
|
||||
inner class Inner3 : OpenInner()
|
||||
inner class Inner4 : <!FINAL_SUPERTYPE!>FinalInner<!>()
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
open class Outer {
|
||||
class Nested : Outer() {
|
||||
fun bar() = foo()
|
||||
fun baz() = super.foo()
|
||||
}
|
||||
|
||||
fun foo() = 42
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
open class Outer<T> {
|
||||
class Nested<U> : Outer<U>() {
|
||||
fun bar(): U = foo()
|
||||
fun baz(): U = super.foo()
|
||||
}
|
||||
class Nested2 : Outer<String>() {
|
||||
fun bar(): String = foo()
|
||||
fun baz(): String = super.foo()
|
||||
}
|
||||
|
||||
fun foo(): T = null!!
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
class Outer {
|
||||
fun function() = 42
|
||||
val property = ""
|
||||
|
||||
class Nested {
|
||||
fun f() = <!INACCESSIBLE_OUTER_CLASS_EXPRESSION!>function()<!>
|
||||
fun g() = <!INACCESSIBLE_OUTER_CLASS_EXPRESSION!>property<!>
|
||||
}
|
||||
|
||||
inner class Inner {
|
||||
fun innerFun() = function()
|
||||
val innerProp = property
|
||||
|
||||
inner class InnerInner {
|
||||
fun f() = innerFun()
|
||||
fun g() = innerProp
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
open class Outer {
|
||||
private class PrivateNested
|
||||
private inner class PrivateInner
|
||||
|
||||
protected class ProtectedNested
|
||||
protected inner class ProtectedInner
|
||||
|
||||
public class PublicNested
|
||||
public inner class PublicInner
|
||||
}
|
||||
|
||||
class Derived : Outer() {
|
||||
fun foo() {
|
||||
Outer.<!INVISIBLE_MEMBER!>PrivateNested<!>()
|
||||
super.<!INVISIBLE_MEMBER!>PrivateInner<!>()
|
||||
|
||||
Outer.ProtectedNested()
|
||||
super.ProtectedInner()
|
||||
|
||||
Outer.PublicNested()
|
||||
super.PublicInner()
|
||||
}
|
||||
}
|
||||
|
||||
fun foo() {
|
||||
Outer.<!INVISIBLE_MEMBER!>PrivateNested<!>()
|
||||
Outer().<!INVISIBLE_MEMBER!>PrivateInner<!>()
|
||||
|
||||
Outer.<!INVISIBLE_MEMBER!>ProtectedNested<!>()
|
||||
Outer().<!INVISIBLE_MEMBER!>ProtectedInner<!>()
|
||||
|
||||
Outer.PublicNested()
|
||||
Outer().PublicInner()
|
||||
}
|
||||
@@ -19,7 +19,7 @@ val A.foo1 : Int get() = ii
|
||||
|
||||
|
||||
class C {
|
||||
class D {}
|
||||
inner class D {}
|
||||
}
|
||||
|
||||
val C.foo : C.D = <!UNRESOLVED_REFERENCE!>D<!>()
|
||||
|
||||
@@ -9,7 +9,7 @@ abstract class Foo {
|
||||
class Bar : Foo() {
|
||||
protected val i: Int = 1
|
||||
|
||||
class Baz {
|
||||
inner class Baz {
|
||||
val copy = color // INVISIBLE_MEMBER: Cannot access 'color' in 'Bar'
|
||||
val j = i
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user