diff --git a/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/proxy/reflection/AbstractKPropertyProxy.kt b/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/proxy/reflection/AbstractKPropertyProxy.kt index f6722ed33f0..cb045cc4d1e 100644 --- a/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/proxy/reflection/AbstractKPropertyProxy.kt +++ b/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/proxy/reflection/AbstractKPropertyProxy.kt @@ -40,7 +40,7 @@ internal abstract class AbstractKPropertyProxy( override val returnType: KType get() = TODO("Not yet implemented") override val visibility: KVisibility? - get() = TODO("Not yet implemented") + get() = state.irClass.visibility.toKVisibility() override fun equals(other: Any?): Boolean { if (other !is AbstractKPropertyProxy) return false diff --git a/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/proxy/reflection/KClassProxy.kt b/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/proxy/reflection/KClassProxy.kt index 817d8cfd135..c97601acc24 100644 --- a/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/proxy/reflection/KClassProxy.kt +++ b/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/proxy/reflection/KClassProxy.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.ir.interpreter.proxy.reflection import org.jetbrains.kotlin.descriptors.Modality +import org.jetbrains.kotlin.descriptors.Visibilities import org.jetbrains.kotlin.ir.interpreter.IrInterpreter import org.jetbrains.kotlin.ir.interpreter.internalName import org.jetbrains.kotlin.ir.interpreter.proxy.Proxy @@ -39,7 +40,7 @@ internal class KClassProxy( get() = TODO("Not yet implemented") override val visibility: KVisibility? - get() = TODO("Not yet implemented") + get() = state.irClass.visibility.toKVisibility() override val isFinal: Boolean get() = state.irClass.modality == Modality.FINAL override val isOpen: Boolean diff --git a/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/proxy/reflection/KFunctionProxy.kt b/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/proxy/reflection/KFunctionProxy.kt index a33b3c2d228..b1a058eb6c1 100644 --- a/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/proxy/reflection/KFunctionProxy.kt +++ b/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/proxy/reflection/KFunctionProxy.kt @@ -55,7 +55,7 @@ internal class KFunctionProxy( } override val visibility: KVisibility? - get() = TODO("Not yet implemented") + get() = state.irClass.visibility.toKVisibility() override val isFinal: Boolean get() = state.irFunction is IrSimpleFunction && state.irFunction.modality == Modality.FINAL override val isOpen: Boolean diff --git a/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/proxy/reflection/ReflectionProxy.kt b/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/proxy/reflection/ReflectionProxy.kt index 5c3c25ceae0..f46b46bda2b 100644 --- a/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/proxy/reflection/ReflectionProxy.kt +++ b/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/proxy/reflection/ReflectionProxy.kt @@ -5,14 +5,27 @@ package org.jetbrains.kotlin.ir.interpreter.proxy.reflection +import org.jetbrains.kotlin.descriptors.DescriptorVisibilities +import org.jetbrains.kotlin.descriptors.DescriptorVisibility import org.jetbrains.kotlin.ir.interpreter.IrInterpreter import org.jetbrains.kotlin.ir.interpreter.proxy.Proxy import org.jetbrains.kotlin.ir.interpreter.state.KClassState import org.jetbrains.kotlin.ir.interpreter.state.KFunctionState import org.jetbrains.kotlin.ir.interpreter.state.KPropertyState import org.jetbrains.kotlin.ir.interpreter.state.ReflectionState +import kotlin.reflect.KVisibility internal interface ReflectionProxy : Proxy { + fun DescriptorVisibility.toKVisibility(): KVisibility? { + return when (this) { + DescriptorVisibilities.PUBLIC -> KVisibility.PUBLIC + DescriptorVisibilities.PROTECTED -> KVisibility.PROTECTED + DescriptorVisibilities.INTERNAL -> KVisibility.INTERNAL + DescriptorVisibilities.PRIVATE -> KVisibility.PRIVATE + else -> null + } + } + companion object { internal fun ReflectionState.asProxy(interpreter: IrInterpreter): ReflectionProxy { return when (this) {