[FIR] Cast error on the element name instead of the whole body
This commit is contained in:
committed by
Mikhail Glukhikh
parent
4c639a840d
commit
8960829c01
@@ -1,12 +0,0 @@
|
||||
internal class My
|
||||
|
||||
class Your
|
||||
|
||||
// Both arguments should be exposed
|
||||
fun foo(<!EXPOSED_PARAMETER_TYPE!>my: My<!>, <!EXPOSED_PARAMETER_TYPE!>f: (My) -> Unit<!>) = f(my)
|
||||
|
||||
// Ok
|
||||
fun bar(your: Your, f: (Your) -> Unit) = f(your)
|
||||
|
||||
// Exposed, returns My
|
||||
<!EXPOSED_FUNCTION_RETURN_TYPE!>fun gav(<!EXPOSED_PARAMETER_TYPE!>f: () -> My<!>) = f()<!>
|
||||
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
internal class My
|
||||
|
||||
class Your
|
||||
|
||||
@@ -10,13 +10,13 @@ internal open class Your: My() {
|
||||
open class His: Your() {
|
||||
protected open class Nested
|
||||
// error, public from internal
|
||||
<!EXPOSED_PROPERTY_TYPE!>val x = My()<!>
|
||||
val <!EXPOSED_PROPERTY_TYPE!>x<!> = My()
|
||||
// valid, private from internal
|
||||
private fun bar() = My()
|
||||
// valid, internal from internal
|
||||
internal var y: My? = null
|
||||
// error, protected from internal
|
||||
<!EXPOSED_FUNCTION_RETURN_TYPE!>protected fun baz() = Your()<!>
|
||||
protected fun <!EXPOSED_FUNCTION_RETURN_TYPE!>baz<!>() = Your()
|
||||
}
|
||||
|
||||
internal class Their: His() {
|
||||
|
||||
@@ -1,10 +0,0 @@
|
||||
interface Your
|
||||
|
||||
class My {
|
||||
internal val x = object : Your {}
|
||||
|
||||
<!EXPOSED_FUNCTION_RETURN_TYPE!>internal fun foo() = {
|
||||
class Local
|
||||
Local()
|
||||
}()<!>
|
||||
}
|
||||
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
interface Your
|
||||
|
||||
class My {
|
||||
|
||||
@@ -1,18 +0,0 @@
|
||||
// invalid, depends on local class
|
||||
<!EXPOSED_FUNCTION_RETURN_TYPE!>fun foo() = run {
|
||||
class A
|
||||
A()
|
||||
}<!>
|
||||
|
||||
// invalid, depends on local class
|
||||
<!EXPOSED_FUNCTION_RETURN_TYPE!>fun gav() = {
|
||||
class B
|
||||
B()
|
||||
}<!>
|
||||
|
||||
abstract class My
|
||||
|
||||
// valid, object literal here is effectively My
|
||||
fun bar() = run {
|
||||
object: My() {}
|
||||
}
|
||||
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
// invalid, depends on local class
|
||||
fun <!EXPOSED_FUNCTION_RETURN_TYPE!>foo<!>() = run {
|
||||
class A
|
||||
|
||||
@@ -2,27 +2,27 @@ class My<T>(val value: T)
|
||||
|
||||
open class Base
|
||||
|
||||
<!EXPOSED_FUNCTION_RETURN_TYPE!>fun invalid1() = run {
|
||||
fun <!EXPOSED_FUNCTION_RETURN_TYPE!>invalid1<!>() = run {
|
||||
class Local
|
||||
My(Local())
|
||||
}<!>
|
||||
}
|
||||
|
||||
fun invalid2() = My(object {})
|
||||
|
||||
fun invalid3() = My(object : Base() {})
|
||||
|
||||
<!EXPOSED_FUNCTION_RETURN_TYPE!>fun invalid4() = run {
|
||||
fun <!EXPOSED_FUNCTION_RETURN_TYPE!>invalid4<!>() = run {
|
||||
class Local
|
||||
My(My(Local()))
|
||||
}<!>
|
||||
}
|
||||
|
||||
<!EXPOSED_FUNCTION_RETURN_TYPE!>fun invalid5() = run {
|
||||
fun <!EXPOSED_FUNCTION_RETURN_TYPE!>invalid5<!>() = run {
|
||||
fun invalid5a() = run {
|
||||
class Local
|
||||
Local()
|
||||
}
|
||||
My(invalid5a())
|
||||
}<!>
|
||||
}
|
||||
|
||||
// Valid: effectively Any
|
||||
fun valid1() = object {}
|
||||
|
||||
@@ -1,21 +0,0 @@
|
||||
class Something {
|
||||
public val publicVal1 = object { override fun toString() = "!" }
|
||||
protected val protectedVal1 = object { override fun toString() = "!" }
|
||||
internal val internalVal1 = object { override fun toString() = "!" }
|
||||
private val privateVal1 = object { override fun toString() = "!" }
|
||||
|
||||
<!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() = "!" }
|
||||
protected fun protectedFun1() = object { override fun toString() = "!" }
|
||||
internal fun internalFun1() = object { override fun toString() = "!" }
|
||||
private fun privateFun1() = object { override fun toString() = "!" }
|
||||
|
||||
<!EXPOSED_FUNCTION_RETURN_TYPE!>public fun publicFun2() = run { class A; A() }<!>
|
||||
<!EXPOSED_FUNCTION_RETURN_TYPE!>protected fun protectedFun2() = run { class A; A() }<!>
|
||||
<!EXPOSED_FUNCTION_RETURN_TYPE!>internal fun internalFun2() = run { class A; A() }<!>
|
||||
private fun privateFun2() = run { class A; A() }
|
||||
}
|
||||
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
class Something {
|
||||
public val publicVal1 = object { override fun toString() = "!" }
|
||||
protected val protectedVal1 = object { override fun toString() = "!" }
|
||||
|
||||
@@ -2,27 +2,27 @@ class My<T>(val value: T)
|
||||
|
||||
open class Base
|
||||
|
||||
<!EXPOSED_PROPERTY_TYPE!>val invalid1 = run {
|
||||
val <!EXPOSED_PROPERTY_TYPE!>invalid1<!> = run {
|
||||
class Local
|
||||
My(Local())
|
||||
}<!>
|
||||
}
|
||||
|
||||
val invalid2 = My(object {})
|
||||
|
||||
val invalid3 = My(object : Base() {})
|
||||
|
||||
<!EXPOSED_PROPERTY_TYPE!>val invalid4 = run {
|
||||
val <!EXPOSED_PROPERTY_TYPE!>invalid4<!> = run {
|
||||
class Local
|
||||
My(My(Local()))
|
||||
}<!>
|
||||
}
|
||||
|
||||
<!EXPOSED_PROPERTY_TYPE!>val invalid5 = run {
|
||||
val <!EXPOSED_PROPERTY_TYPE!>invalid5<!> = run {
|
||||
fun invalid5a() = run {
|
||||
class Local
|
||||
Local()
|
||||
}
|
||||
My(invalid5a())
|
||||
}<!>
|
||||
}
|
||||
|
||||
// Valid: effectively Any
|
||||
val valid1 = object {}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// From KT-10753
|
||||
object My : Inter() {
|
||||
<!EXPOSED_FUNCTION_RETURN_TYPE!>fun foo(<!EXPOSED_PARAMETER_TYPE!>arg: Inter<!>): Inter = arg<!>
|
||||
<!EXPOSED_PROPERTY_TYPE!>val x: Inter? = null<!>
|
||||
fun <!EXPOSED_FUNCTION_RETURN_TYPE!>foo<!>(<!EXPOSED_PARAMETER_TYPE!>arg: Inter<!>): Inter = arg
|
||||
val <!EXPOSED_PROPERTY_TYPE!>x<!>: Inter? = null
|
||||
}
|
||||
|
||||
internal open class Inter
|
||||
@@ -10,21 +10,21 @@ internal open class Inter
|
||||
open class Test {
|
||||
protected class Protected
|
||||
|
||||
<!EXPOSED_FUNCTION_RETURN_TYPE!>fun foo(<!EXPOSED_PARAMETER_TYPE!>x: Protected<!>) = x<!>
|
||||
fun <!EXPOSED_FUNCTION_RETURN_TYPE!>foo<!>(<!EXPOSED_PARAMETER_TYPE!>x: Protected<!>) = x
|
||||
|
||||
interface NestedInterface {
|
||||
fun create(<!EXPOSED_PARAMETER_TYPE!>x: Protected<!>)
|
||||
}
|
||||
|
||||
class NestedClass {
|
||||
<!EXPOSED_FUNCTION_RETURN_TYPE!>fun create(<!EXPOSED_PARAMETER_TYPE!>x: Protected<!>) = x<!>
|
||||
fun <!EXPOSED_FUNCTION_RETURN_TYPE!>create<!>(<!EXPOSED_PARAMETER_TYPE!>x: Protected<!>) = x
|
||||
}
|
||||
|
||||
object NestedObject {
|
||||
<!EXPOSED_FUNCTION_RETURN_TYPE!>fun create(<!EXPOSED_PARAMETER_TYPE!>x: Protected<!>) = x<!>
|
||||
fun <!EXPOSED_FUNCTION_RETURN_TYPE!>create<!>(<!EXPOSED_PARAMETER_TYPE!>x: Protected<!>) = x
|
||||
}
|
||||
|
||||
companion object {
|
||||
<!EXPOSED_FUNCTION_RETURN_TYPE!>fun create(<!EXPOSED_PARAMETER_TYPE!>x: Protected<!>) = x<!>
|
||||
fun <!EXPOSED_FUNCTION_RETURN_TYPE!>create<!>(<!EXPOSED_PARAMETER_TYPE!>x: Protected<!>) = x
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -1,3 +1,3 @@
|
||||
private enum class Foo { A, B }
|
||||
|
||||
class Bar private constructor(<!EXPOSED_PROPERTY_TYPE!>val foo: Foo<!>)
|
||||
class Bar private constructor(val <!EXPOSED_PROPERTY_TYPE!>foo<!>: Foo)
|
||||
+1
-1
@@ -1,3 +1,3 @@
|
||||
private enum class Foo { A, B }
|
||||
|
||||
class Bar(<!EXPOSED_PARAMETER_TYPE, EXPOSED_PROPERTY_TYPE!>val foo: Foo<!>)
|
||||
class Bar(<!EXPOSED_PARAMETER_TYPE!>val <!EXPOSED_PROPERTY_TYPE!>foo<!>: Foo<!>)
|
||||
@@ -12,5 +12,5 @@ class OuterDerived: Outer() {
|
||||
// valid, My has better visibility
|
||||
protected class His: Outer.My()
|
||||
// valid, My and Your have better visibility
|
||||
<!EXPOSED_FUNCTION_RETURN_TYPE!>override fun foo(<!EXPOSED_PARAMETER_TYPE!>my: Outer.My<!>) = Outer.Your()<!>
|
||||
override fun <!EXPOSED_FUNCTION_RETURN_TYPE!>foo<!>(<!EXPOSED_PARAMETER_TYPE!>my: Outer.My<!>) = Outer.Your()
|
||||
}
|
||||
@@ -9,5 +9,5 @@ class OuterDerived: Outer() {
|
||||
// valid, My has better visibility
|
||||
protected class His: Outer.My()
|
||||
// valid, My and Your have better visibility
|
||||
<!EXPOSED_FUNCTION_RETURN_TYPE!>override fun foo(<!EXPOSED_PARAMETER_TYPE!>my: Outer.My<!>) = Outer.Your()<!>
|
||||
override fun <!EXPOSED_FUNCTION_RETURN_TYPE!>foo<!>(<!EXPOSED_PARAMETER_TYPE!>my: Outer.My<!>) = Outer.Your()
|
||||
}
|
||||
@@ -6,18 +6,18 @@ public interface Your: My {
|
||||
fun <T: Base> foo(): T
|
||||
}
|
||||
|
||||
public class Derived<T: My>(<!EXPOSED_PARAMETER_TYPE, EXPOSED_PROPERTY_TYPE!>val x: My<!>): Base() {
|
||||
public class Derived<T: My>(<!EXPOSED_PARAMETER_TYPE!>val <!EXPOSED_PROPERTY_TYPE!>x<!>: My<!>): Base() {
|
||||
|
||||
constructor(<!EXPOSED_PARAMETER_TYPE!>xx: My?<!>, <!EXPOSED_PARAMETER_TYPE!>x: My<!>): this(xx ?: x)
|
||||
|
||||
<!EXPOSED_PROPERTY_TYPE!>val y: Base? = null<!>
|
||||
val <!EXPOSED_PROPERTY_TYPE!>y<!>: Base? = null
|
||||
|
||||
val <!EXPOSED_RECEIVER_TYPE!>My<!>.z: Int
|
||||
get() = 42
|
||||
|
||||
<!EXPOSED_FUNCTION_RETURN_TYPE!>fun foo(<!EXPOSED_PARAMETER_TYPE!>m: My<!>): My = m<!>
|
||||
fun <!EXPOSED_FUNCTION_RETURN_TYPE!>foo<!>(<!EXPOSED_PARAMETER_TYPE!>m: My<!>): My = m
|
||||
|
||||
<!EXPOSED_FUNCTION_RETURN_TYPE!>fun <!EXPOSED_RECEIVER_TYPE!>My<!>.bar(): My = this<!>
|
||||
fun <!EXPOSED_RECEIVER_TYPE!>My<!>.<!EXPOSED_FUNCTION_RETURN_TYPE!>bar<!>(): My = this
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@ internal open class My
|
||||
|
||||
abstract class Your {
|
||||
// invalid, List<My> is effectively internal
|
||||
<!EXPOSED_FUNCTION_RETURN_TYPE!>abstract fun give(): List<My><!>
|
||||
abstract fun <!EXPOSED_FUNCTION_RETURN_TYPE!>give<!>(): List<My>
|
||||
}
|
||||
|
||||
// invalid, List<My> is effectively internal
|
||||
|
||||
Reference in New Issue
Block a user