Make "reflection not found" a warning, provide a quick fix
Reporting the warning on each "::", as ReflectionNotFoundInspection did, is not correct anymore, because for example name/get/set on properties works perfectly without kotlin-reflect.jar in the classpath. So instead we report the warning on calls to functions from reflection interfaces. This is not perfect either because it's wrong in projects with custom implementations of reflection interfaces, but this case is so rare that the users can suppress the warning there anyway #KT-7176 Fixed
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
import kotlin.reflect.*
|
||||
|
||||
class Foo(val prop: Any) {
|
||||
fun func() {}
|
||||
}
|
||||
|
||||
fun n01() = Foo::prop
|
||||
fun n02() = Foo::func
|
||||
fun n03() = Foo::class
|
||||
fun n04(p: KProperty0<Int>) = p.get()
|
||||
fun n05(p: KMutableProperty0<String>) = p.set("")
|
||||
fun n06(p: KProperty0<Int>) = p.get()
|
||||
fun n07(p: KFunction<String>) = p.name
|
||||
fun n08(p: KProperty1<String, Int>) = p[""]
|
||||
fun n09(p: KProperty2<String, String, Int>) = p["", ""]
|
||||
fun n10() = (Foo::func).invoke(Foo(""))
|
||||
fun n11() = (Foo::func)(Foo(""))
|
||||
|
||||
fun y01() = Foo::prop.<!NO_REFLECTION_IN_CLASS_PATH!>getter<!>
|
||||
fun y02() = Foo::class.<!NO_REFLECTION_IN_CLASS_PATH!>properties<!>
|
||||
fun y03() = Foo::class.<!NO_REFLECTION_IN_CLASS_PATH!>simpleName<!>
|
||||
@@ -0,0 +1,25 @@
|
||||
package
|
||||
|
||||
internal fun n01(): kotlin.reflect.KProperty1<Foo, kotlin.Any>
|
||||
internal fun n02(): kotlin.reflect.KFunction1<Foo, kotlin.Unit>
|
||||
internal fun n03(): kotlin.reflect.KClass<Foo>
|
||||
internal fun n04(/*0*/ p: kotlin.reflect.KProperty0<kotlin.Int>): kotlin.Int
|
||||
internal fun n05(/*0*/ p: kotlin.reflect.KMutableProperty0<kotlin.String>): kotlin.Unit
|
||||
internal fun n06(/*0*/ p: kotlin.reflect.KProperty0<kotlin.Int>): kotlin.Int
|
||||
internal fun n07(/*0*/ p: kotlin.reflect.KFunction<kotlin.String>): kotlin.String
|
||||
internal fun n08(/*0*/ p: kotlin.reflect.KProperty1<kotlin.String, kotlin.Int>): kotlin.Int
|
||||
internal fun n09(/*0*/ p: kotlin.reflect.KProperty2<kotlin.String, kotlin.String, kotlin.Int>): kotlin.Int
|
||||
internal fun n10(): kotlin.Unit
|
||||
internal fun n11(): kotlin.Unit
|
||||
internal fun y01(): kotlin.reflect.KProperty1.Getter<Foo, kotlin.Any>
|
||||
internal fun y02(): kotlin.Collection<kotlin.reflect.KProperty1<Foo, *>>
|
||||
internal fun y03(): kotlin.String?
|
||||
|
||||
internal final class Foo {
|
||||
public constructor Foo(/*0*/ prop: kotlin.Any)
|
||||
internal final val prop: kotlin.Any
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
internal final fun func(): kotlin.Unit
|
||||
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