
arrow.common.utils.ClassOrPackageDataWrapper.kt Maven / Gradle / Ivy
package arrow.common.utils
import me.eugeniomarletti.kotlin.metadata.ClassData
import me.eugeniomarletti.kotlin.metadata.PackageData
import me.eugeniomarletti.kotlin.metadata.shadow.metadata.ProtoBuf.Constructor
import me.eugeniomarletti.kotlin.metadata.shadow.metadata.ProtoBuf.Function
import me.eugeniomarletti.kotlin.metadata.shadow.metadata.ProtoBuf.Property
import me.eugeniomarletti.kotlin.metadata.shadow.metadata.ProtoBuf.TypeParameter
import me.eugeniomarletti.kotlin.metadata.shadow.metadata.deserialization.NameResolver
sealed class ClassOrPackageDataWrapper {
abstract val `package`: String
abstract val nameResolver: NameResolver
abstract val constructorList: List
abstract val functionList: List
abstract val propertyList: List
abstract val typeParameters: List
abstract fun getTypeParameter(typeParameterIndex: Int): TypeParameter?
class Package(
override val nameResolver: NameResolver,
val packageProto: me.eugeniomarletti.kotlin.metadata.shadow.metadata.ProtoBuf.Package,
override val `package`: String
) : ClassOrPackageDataWrapper() {
override val constructorList: List get() = emptyList()
override val functionList: List get() = packageProto.functionList
override val propertyList: List get() = packageProto.propertyList
override val typeParameters: List = emptyList()
override fun getTypeParameter(typeParameterIndex: Int): TypeParameter? = null
}
class Class(
override val nameResolver: NameResolver,
val classProto: me.eugeniomarletti.kotlin.metadata.shadow.metadata.ProtoBuf.Class,
override val `package`: String
) : ClassOrPackageDataWrapper() {
override val constructorList: List get() = classProto.constructorList
override val functionList: List get() = classProto.functionList
override val propertyList: List get() = classProto.propertyList
override val typeParameters: List = classProto.typeParameterList
override fun getTypeParameter(typeParameterIndex: Int): TypeParameter? =
classProto.typeParameterList.getOrNull(typeParameterIndex)
}
}
fun ClassData.asClassOrPackageDataWrapper(`package`: String) =
ClassOrPackageDataWrapper.Class(nameResolver, classProto, `package`)
fun PackageData.asClassOrPackageDataWrapper(`package`: String) =
ClassOrPackageDataWrapper.Package(nameResolver, packageProto, `package`)
© 2015 - 2025 Weber Informatics LLC | Privacy Policy