Effective visibility: local is now considered private, TYPE_DEPENDS_ON_LOCAL_CLASS diagnostics removed as repeated #KT-9542 Fixed #KT-9526 Fixed
This commit is contained in:
@@ -0,0 +1,10 @@
|
||||
interface Your
|
||||
|
||||
class My {
|
||||
internal val x = object : Your {}
|
||||
|
||||
internal fun <!EXPOSED_FUNCTION_RETURN_TYPE!>foo<!>() = {
|
||||
class Local
|
||||
Local()
|
||||
}()
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package
|
||||
|
||||
public final class My {
|
||||
public constructor My()
|
||||
internal final val x: Your
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
internal final fun foo(): My.foo.<anonymous>.Local
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public interface Your {
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
+2
-2
@@ -3,13 +3,13 @@ fun <T> run(f: () -> T): T {
|
||||
}
|
||||
|
||||
// invalid, depends on local class
|
||||
fun <!FUNCTION_RETURN_TYPE_DEPENDS_ON_LOCAL_CLASS!>foo<!>() = run {
|
||||
fun <!EXPOSED_FUNCTION_RETURN_TYPE!>foo<!>() = run {
|
||||
class A
|
||||
A()
|
||||
}
|
||||
|
||||
// invalid, depends on local class
|
||||
fun <!FUNCTION_RETURN_TYPE_DEPENDS_ON_LOCAL_CLASS!>gav<!>() = {
|
||||
fun <!EXPOSED_FUNCTION_RETURN_TYPE!>gav<!>() = {
|
||||
class B
|
||||
B()
|
||||
}
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
class My {
|
||||
internal open class ThreadLocal
|
||||
// Private from local: ???
|
||||
private val values =
|
||||
// Local from internal: Ok
|
||||
object: ThreadLocal() {}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package
|
||||
|
||||
public final class My {
|
||||
public constructor My()
|
||||
private final val values: My.values.<no name provided>
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
|
||||
internal open class ThreadLocal {
|
||||
public constructor ThreadLocal()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
class A {
|
||||
private open class B
|
||||
fun f() {
|
||||
// Local from private: Ok
|
||||
class C : B()
|
||||
}
|
||||
}
|
||||
|
||||
private open class D
|
||||
|
||||
fun f(): Int {
|
||||
// Local from private: Ok
|
||||
val x = object : D() { }
|
||||
return x.hashCode()
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package
|
||||
|
||||
public fun f(): kotlin.Int
|
||||
|
||||
public final class A {
|
||||
public constructor A()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public final fun f(): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
|
||||
private open class B {
|
||||
public constructor B()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
}
|
||||
|
||||
private open class D {
|
||||
public constructor D()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
@@ -6,21 +6,21 @@ class My<T>(val value: T)
|
||||
|
||||
open class Base
|
||||
|
||||
fun <!FUNCTION_RETURN_TYPE_DEPENDS_ON_LOCAL_CLASS!>invalid1<!>() = run {
|
||||
fun <!EXPOSED_FUNCTION_RETURN_TYPE!>invalid1<!>() = run {
|
||||
class Local
|
||||
My(Local())
|
||||
}
|
||||
|
||||
fun <!FUNCTION_RETURN_TYPE_DEPENDS_ON_LOCAL_CLASS!>invalid2<!>() = My(object {})
|
||||
fun <!EXPOSED_FUNCTION_RETURN_TYPE!>invalid2<!>() = My(object {})
|
||||
|
||||
fun <!FUNCTION_RETURN_TYPE_DEPENDS_ON_LOCAL_CLASS!>invalid3<!>() = My(object : Base() {})
|
||||
fun <!EXPOSED_FUNCTION_RETURN_TYPE!>invalid3<!>() = My(object : Base() {})
|
||||
|
||||
fun <!FUNCTION_RETURN_TYPE_DEPENDS_ON_LOCAL_CLASS!>invalid4<!>() = run {
|
||||
fun <!EXPOSED_FUNCTION_RETURN_TYPE!>invalid4<!>() = run {
|
||||
class Local
|
||||
My(My(Local()))
|
||||
}
|
||||
|
||||
fun <!FUNCTION_RETURN_TYPE_DEPENDS_ON_LOCAL_CLASS!>invalid5<!>() = run {
|
||||
fun <!EXPOSED_FUNCTION_RETURN_TYPE!>invalid5<!>() = run {
|
||||
fun invalid5a() = run {
|
||||
class Local
|
||||
Local()
|
||||
|
||||
@@ -7,9 +7,9 @@ class Something {
|
||||
internal val internalVal1 = object { override fun toString() = "!" }
|
||||
private val privateVal1 = object { override fun toString() = "!" }
|
||||
|
||||
public val <!PROPERTY_TYPE_DEPENDS_ON_LOCAL_CLASS!>publicVal2<!> = run { class A; A() }
|
||||
protected val <!PROPERTY_TYPE_DEPENDS_ON_LOCAL_CLASS!>protectedVal2<!> = run { class A; A() }
|
||||
internal val <!PROPERTY_TYPE_DEPENDS_ON_LOCAL_CLASS!>internalVal2<!> = run { class A; A() }
|
||||
<!EXPOSED_PROPERTY_TYPE!>public val publicVal2 = run { class A; A() }<!>
|
||||
<!EXPOSED_PROPERTY_TYPE!>protected val protectedVal2 = run { class A; A() }<!>
|
||||
<!EXPOSED_PROPERTY_TYPE!>internal val internalVal2 = run { class A; A() }<!>
|
||||
private val privateVal2 = run { class A; A() }
|
||||
|
||||
public fun publicFun1() = object { override fun toString() = "!" }
|
||||
@@ -17,8 +17,8 @@ class Something {
|
||||
internal fun internalFun1() = object { override fun toString() = "!" }
|
||||
private fun privateFun1() = object { override fun toString() = "!" }
|
||||
|
||||
public fun <!FUNCTION_RETURN_TYPE_DEPENDS_ON_LOCAL_CLASS!>publicFun2<!>() = run { class A; A() }
|
||||
protected fun <!FUNCTION_RETURN_TYPE_DEPENDS_ON_LOCAL_CLASS!>protectedFun2<!>() = run { class A; A() }
|
||||
internal fun <!FUNCTION_RETURN_TYPE_DEPENDS_ON_LOCAL_CLASS!>internalFun2<!>() = run { class A; A() }
|
||||
public fun <!EXPOSED_FUNCTION_RETURN_TYPE!>publicFun2<!>() = run { class A; A() }
|
||||
protected fun <!EXPOSED_FUNCTION_RETURN_TYPE!>protectedFun2<!>() = run { class A; A() }
|
||||
internal fun <!EXPOSED_FUNCTION_RETURN_TYPE!>internalFun2<!>() = run { class A; A() }
|
||||
private fun privateFun2() = run { class A; A() }
|
||||
}
|
||||
@@ -6,27 +6,27 @@ class My<T>(val value: T)
|
||||
|
||||
open class Base
|
||||
|
||||
val <!PROPERTY_TYPE_DEPENDS_ON_LOCAL_CLASS!>invalid1<!> = run {
|
||||
<!EXPOSED_PROPERTY_TYPE!>val invalid1 = run {
|
||||
class Local
|
||||
My(Local())
|
||||
}
|
||||
}<!>
|
||||
|
||||
val <!PROPERTY_TYPE_DEPENDS_ON_LOCAL_CLASS!>invalid2<!> = My(object {})
|
||||
<!EXPOSED_PROPERTY_TYPE!>val invalid2 = My(object {})<!>
|
||||
|
||||
val <!PROPERTY_TYPE_DEPENDS_ON_LOCAL_CLASS!>invalid3<!> = My(object : Base() {})
|
||||
<!EXPOSED_PROPERTY_TYPE!>val invalid3 = My(object : Base() {})<!>
|
||||
|
||||
val <!PROPERTY_TYPE_DEPENDS_ON_LOCAL_CLASS!>invalid4<!> = run {
|
||||
<!EXPOSED_PROPERTY_TYPE!>val invalid4 = run {
|
||||
class Local
|
||||
My(My(Local()))
|
||||
}
|
||||
}<!>
|
||||
|
||||
val <!PROPERTY_TYPE_DEPENDS_ON_LOCAL_CLASS!>invalid5<!> = run {
|
||||
<!EXPOSED_PROPERTY_TYPE!>val invalid5 = run {
|
||||
fun invalid5a() = run {
|
||||
class Local
|
||||
Local()
|
||||
}
|
||||
My(invalid5a())
|
||||
}
|
||||
}<!>
|
||||
|
||||
// Valid: effectively Any
|
||||
val valid1 = object {}
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
interface Your
|
||||
|
||||
class My {
|
||||
// private from local: ???
|
||||
private val x = object : Your {}
|
||||
|
||||
// private from local: ???
|
||||
private fun foo() = {
|
||||
class Local
|
||||
Local()
|
||||
}()
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package
|
||||
|
||||
public final class My {
|
||||
public constructor My()
|
||||
private final val x: My.x.<no name provided>
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
private final fun foo(): My.foo.<anonymous>.Local
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public interface Your {
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
Reference in New Issue
Block a user