Implement interpretation of KVisibility class

For now it is interpreted as Wrapper, but maybe further it will be
converted to Common
This commit is contained in:
Ivan Kylchik
2020-09-20 23:20:16 +03:00
committed by TeamCityServer
parent 40bf4fafc9
commit 88b5b5f702
4 changed files with 17 additions and 3 deletions
@@ -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
@@ -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
@@ -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
@@ -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) {