Simplify signature and usages of KDeclarationContainerImpl#getMembers
This commit is contained in:
@@ -21,6 +21,7 @@ import org.jetbrains.kotlin.descriptors.ConstructorDescriptor
|
|||||||
import org.jetbrains.kotlin.types.TypeSubstitutor
|
import org.jetbrains.kotlin.types.TypeSubstitutor
|
||||||
import org.jetbrains.kotlin.types.Variance
|
import org.jetbrains.kotlin.types.Variance
|
||||||
import org.jetbrains.kotlin.utils.DFS
|
import org.jetbrains.kotlin.utils.DFS
|
||||||
|
import kotlin.reflect.jvm.internal.KCallableImpl
|
||||||
import kotlin.reflect.jvm.internal.KClassImpl
|
import kotlin.reflect.jvm.internal.KClassImpl
|
||||||
import kotlin.reflect.jvm.internal.KFunctionImpl
|
import kotlin.reflect.jvm.internal.KFunctionImpl
|
||||||
import kotlin.reflect.jvm.internal.KTypeImpl
|
import kotlin.reflect.jvm.internal.KTypeImpl
|
||||||
@@ -70,8 +71,8 @@ val KClass<*>.defaultType: KType
|
|||||||
*/
|
*/
|
||||||
val KClass<*>.declaredMembers: Collection<KCallable<*>>
|
val KClass<*>.declaredMembers: Collection<KCallable<*>>
|
||||||
get() = with(this as KClassImpl) {
|
get() = with(this as KClassImpl) {
|
||||||
(getMembers(memberScope, declaredOnly = true, nonExtensions = true, extensions = true) +
|
(getMembers(memberScope, declaredOnly = true) +
|
||||||
getMembers(staticScope, declaredOnly = true, nonExtensions = true, extensions = true)).toList()
|
getMembers(staticScope, declaredOnly = true)).toList()
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -86,7 +87,7 @@ val KClass<*>.functions: Collection<KFunction<*>>
|
|||||||
*/
|
*/
|
||||||
val KClass<*>.staticFunctions: Collection<KFunction<*>>
|
val KClass<*>.staticFunctions: Collection<KFunction<*>>
|
||||||
get() = (this as KClassImpl)
|
get() = (this as KClassImpl)
|
||||||
.getMembers(staticScope, declaredOnly = false, nonExtensions = true, extensions = true)
|
.getMembers(staticScope, declaredOnly = false)
|
||||||
.filterIsInstance<KFunction<*>>()
|
.filterIsInstance<KFunction<*>>()
|
||||||
.toList()
|
.toList()
|
||||||
|
|
||||||
@@ -95,7 +96,8 @@ val KClass<*>.staticFunctions: Collection<KFunction<*>>
|
|||||||
*/
|
*/
|
||||||
val KClass<*>.memberFunctions: Collection<KFunction<*>>
|
val KClass<*>.memberFunctions: Collection<KFunction<*>>
|
||||||
get() = (this as KClassImpl)
|
get() = (this as KClassImpl)
|
||||||
.getMembers(memberScope, declaredOnly = false, nonExtensions = true, extensions = false)
|
.getMembers(memberScope, declaredOnly = false)
|
||||||
|
.filterNotExtensions()
|
||||||
.filterIsInstance<KFunction<*>>()
|
.filterIsInstance<KFunction<*>>()
|
||||||
.toList()
|
.toList()
|
||||||
|
|
||||||
@@ -104,7 +106,8 @@ val KClass<*>.memberFunctions: Collection<KFunction<*>>
|
|||||||
*/
|
*/
|
||||||
val KClass<*>.memberExtensionFunctions: Collection<KFunction<*>>
|
val KClass<*>.memberExtensionFunctions: Collection<KFunction<*>>
|
||||||
get() = (this as KClassImpl)
|
get() = (this as KClassImpl)
|
||||||
.getMembers(memberScope, declaredOnly = false, nonExtensions = false, extensions = true)
|
.getMembers(memberScope, declaredOnly = false)
|
||||||
|
.filterExtensions()
|
||||||
.filterIsInstance<KFunction<*>>()
|
.filterIsInstance<KFunction<*>>()
|
||||||
.toList()
|
.toList()
|
||||||
|
|
||||||
@@ -115,8 +118,8 @@ val KClass<*>.memberExtensionFunctions: Collection<KFunction<*>>
|
|||||||
*/
|
*/
|
||||||
val KClass<*>.declaredFunctions: Collection<KFunction<*>>
|
val KClass<*>.declaredFunctions: Collection<KFunction<*>>
|
||||||
get() = (this as KClassImpl)
|
get() = (this as KClassImpl)
|
||||||
.getMembers(memberScope, declaredOnly = true, nonExtensions = true, extensions = true)
|
.getMembers(memberScope, declaredOnly = true)
|
||||||
.plus(getMembers(staticScope, declaredOnly = true, nonExtensions = true, extensions = true))
|
.plus(getMembers(staticScope, declaredOnly = true))
|
||||||
.filterIsInstance<KFunction<*>>()
|
.filterIsInstance<KFunction<*>>()
|
||||||
.toList()
|
.toList()
|
||||||
|
|
||||||
@@ -125,7 +128,8 @@ val KClass<*>.declaredFunctions: Collection<KFunction<*>>
|
|||||||
*/
|
*/
|
||||||
val KClass<*>.declaredMemberFunctions: Collection<KFunction<*>>
|
val KClass<*>.declaredMemberFunctions: Collection<KFunction<*>>
|
||||||
get() = (this as KClassImpl)
|
get() = (this as KClassImpl)
|
||||||
.getMembers(memberScope, declaredOnly = true, nonExtensions = true, extensions = false)
|
.getMembers(memberScope, declaredOnly = true)
|
||||||
|
.filterNotExtensions()
|
||||||
.filterIsInstance<KFunction<*>>()
|
.filterIsInstance<KFunction<*>>()
|
||||||
.toList()
|
.toList()
|
||||||
|
|
||||||
@@ -134,7 +138,8 @@ val KClass<*>.declaredMemberFunctions: Collection<KFunction<*>>
|
|||||||
*/
|
*/
|
||||||
val KClass<*>.declaredMemberExtensionFunctions: Collection<KFunction<*>>
|
val KClass<*>.declaredMemberExtensionFunctions: Collection<KFunction<*>>
|
||||||
get() = (this as KClassImpl)
|
get() = (this as KClassImpl)
|
||||||
.getMembers(memberScope, declaredOnly = true, nonExtensions = false, extensions = true)
|
.getMembers(memberScope, declaredOnly = true)
|
||||||
|
.filterExtensions()
|
||||||
.filterIsInstance<KFunction<*>>()
|
.filterIsInstance<KFunction<*>>()
|
||||||
.toList()
|
.toList()
|
||||||
|
|
||||||
@@ -144,7 +149,8 @@ val KClass<*>.declaredMemberExtensionFunctions: Collection<KFunction<*>>
|
|||||||
*/
|
*/
|
||||||
val KClass<*>.staticProperties: Collection<KProperty0<*>>
|
val KClass<*>.staticProperties: Collection<KProperty0<*>>
|
||||||
get() = (this as KClassImpl)
|
get() = (this as KClassImpl)
|
||||||
.getMembers(staticScope, declaredOnly = false, nonExtensions = true, extensions = false)
|
.getMembers(staticScope, declaredOnly = false)
|
||||||
|
.filterNotExtensions()
|
||||||
.filterIsInstance<KProperty0<*>>()
|
.filterIsInstance<KProperty0<*>>()
|
||||||
.toList()
|
.toList()
|
||||||
|
|
||||||
@@ -153,7 +159,8 @@ val KClass<*>.staticProperties: Collection<KProperty0<*>>
|
|||||||
*/
|
*/
|
||||||
val <T : Any> KClass<T>.memberProperties: Collection<KProperty1<T, *>>
|
val <T : Any> KClass<T>.memberProperties: Collection<KProperty1<T, *>>
|
||||||
get() = (this as KClassImpl<T>)
|
get() = (this as KClassImpl<T>)
|
||||||
.getMembers(memberScope, declaredOnly = false, nonExtensions = true, extensions = false)
|
.getMembers(memberScope, declaredOnly = false)
|
||||||
|
.filterNotExtensions()
|
||||||
.filterIsInstance<KProperty1<T, *>>()
|
.filterIsInstance<KProperty1<T, *>>()
|
||||||
.toList()
|
.toList()
|
||||||
|
|
||||||
@@ -162,7 +169,8 @@ val <T : Any> KClass<T>.memberProperties: Collection<KProperty1<T, *>>
|
|||||||
*/
|
*/
|
||||||
val <T : Any> KClass<T>.memberExtensionProperties: Collection<KProperty2<T, *, *>>
|
val <T : Any> KClass<T>.memberExtensionProperties: Collection<KProperty2<T, *, *>>
|
||||||
get() = (this as KClassImpl<T>)
|
get() = (this as KClassImpl<T>)
|
||||||
.getMembers(memberScope, declaredOnly = false, nonExtensions = false, extensions = true)
|
.getMembers(memberScope, declaredOnly = false)
|
||||||
|
.filterExtensions()
|
||||||
.filterIsInstance<KProperty2<T, *, *>>()
|
.filterIsInstance<KProperty2<T, *, *>>()
|
||||||
.toList()
|
.toList()
|
||||||
|
|
||||||
@@ -171,7 +179,8 @@ val <T : Any> KClass<T>.memberExtensionProperties: Collection<KProperty2<T, *, *
|
|||||||
*/
|
*/
|
||||||
val <T : Any> KClass<T>.declaredMemberProperties: Collection<KProperty1<T, *>>
|
val <T : Any> KClass<T>.declaredMemberProperties: Collection<KProperty1<T, *>>
|
||||||
get() = (this as KClassImpl<T>)
|
get() = (this as KClassImpl<T>)
|
||||||
.getMembers(memberScope, declaredOnly = true, nonExtensions = true, extensions = false)
|
.getMembers(memberScope, declaredOnly = true)
|
||||||
|
.filterNotExtensions()
|
||||||
.filterIsInstance<KProperty1<T, *>>()
|
.filterIsInstance<KProperty1<T, *>>()
|
||||||
.toList()
|
.toList()
|
||||||
|
|
||||||
@@ -180,11 +189,18 @@ val <T : Any> KClass<T>.declaredMemberProperties: Collection<KProperty1<T, *>>
|
|||||||
*/
|
*/
|
||||||
val <T : Any> KClass<T>.declaredMemberExtensionProperties: Collection<KProperty2<T, *, *>>
|
val <T : Any> KClass<T>.declaredMemberExtensionProperties: Collection<KProperty2<T, *, *>>
|
||||||
get() = (this as KClassImpl<T>)
|
get() = (this as KClassImpl<T>)
|
||||||
.getMembers(memberScope, declaredOnly = true, nonExtensions = false, extensions = true)
|
.getMembers(memberScope, declaredOnly = true)
|
||||||
|
.filterExtensions()
|
||||||
.filterIsInstance<KProperty2<T, *, *>>()
|
.filterIsInstance<KProperty2<T, *, *>>()
|
||||||
.toList()
|
.toList()
|
||||||
|
|
||||||
|
|
||||||
|
private fun <T : KCallableImpl<*>> Sequence<T>.filterExtensions(): Sequence<T> =
|
||||||
|
filter { it.descriptor.extensionReceiverParameter != null }
|
||||||
|
|
||||||
|
private fun <T : KCallableImpl<*>> Sequence<T>.filterNotExtensions(): Sequence<T> =
|
||||||
|
filter { it.descriptor.extensionReceiverParameter == null }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Immediate superclasses of this class, in the order they are listed in the source code.
|
* Immediate superclasses of this class, in the order they are listed in the source code.
|
||||||
* Includes superclasses and superinterfaces of the class, but does not include the class itself.
|
* Includes superclasses and superinterfaces of the class, but does not include the class itself.
|
||||||
|
|||||||
@@ -75,9 +75,7 @@ internal class KClassImpl<T : Any>(override val jClass: Class<T>) :
|
|||||||
internal val staticScope: MemberScope get() = descriptor.staticScope
|
internal val staticScope: MemberScope get() = descriptor.staticScope
|
||||||
|
|
||||||
override val members: Collection<KCallable<*>>
|
override val members: Collection<KCallable<*>>
|
||||||
get() = getMembers(memberScope, declaredOnly = false, nonExtensions = true, extensions = true)
|
get() = (getMembers(memberScope, declaredOnly = false) + getMembers(staticScope, declaredOnly = false)).toList()
|
||||||
.plus(getMembers(staticScope, declaredOnly = false, nonExtensions = true, extensions = true))
|
|
||||||
.toList()
|
|
||||||
|
|
||||||
override val constructorDescriptors: Collection<ConstructorDescriptor>
|
override val constructorDescriptors: Collection<ConstructorDescriptor>
|
||||||
get() {
|
get() {
|
||||||
|
|||||||
@@ -47,17 +47,10 @@ internal abstract class KDeclarationContainerImpl : ClassBasedDeclarationContain
|
|||||||
|
|
||||||
abstract fun getFunctions(name: Name): Collection<FunctionDescriptor>
|
abstract fun getFunctions(name: Name): Collection<FunctionDescriptor>
|
||||||
|
|
||||||
fun getMembers(scope: MemberScope, declaredOnly: Boolean, nonExtensions: Boolean, extensions: Boolean): Sequence<KCallableImpl<*>> {
|
fun getMembers(scope: MemberScope, declaredOnly: Boolean): Sequence<KCallableImpl<*>> {
|
||||||
val visitor = object : DeclarationDescriptorVisitorEmptyBodies<KCallableImpl<*>?, Unit>() {
|
val visitor = object : DeclarationDescriptorVisitorEmptyBodies<KCallableImpl<*>?, Unit>() {
|
||||||
private fun skipCallable(descriptor: CallableMemberDescriptor): Boolean {
|
private fun skipCallable(descriptor: CallableMemberDescriptor): Boolean =
|
||||||
if (declaredOnly && !descriptor.kind.isReal) return true
|
declaredOnly && !descriptor.kind.isReal
|
||||||
|
|
||||||
val isExtension = descriptor.extensionReceiverParameter != null
|
|
||||||
if (isExtension && !extensions) return true
|
|
||||||
if (!isExtension && !nonExtensions) return true
|
|
||||||
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun visitPropertyDescriptor(descriptor: PropertyDescriptor, data: Unit): KCallableImpl<*>? {
|
override fun visitPropertyDescriptor(descriptor: PropertyDescriptor, data: Unit): KCallableImpl<*>? {
|
||||||
return if (skipCallable(descriptor)) null else createProperty(descriptor)
|
return if (skipCallable(descriptor)) null else createProperty(descriptor)
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ internal class KPackageImpl(override val jClass: Class<*>, val moduleName: Strin
|
|||||||
private val scope: MemberScope get() = data().descriptor.memberScope
|
private val scope: MemberScope get() = data().descriptor.memberScope
|
||||||
|
|
||||||
override val members: Collection<KCallable<*>>
|
override val members: Collection<KCallable<*>>
|
||||||
get() = getMembers(scope, declaredOnly = false, nonExtensions = true, extensions = true).filter { member ->
|
get() = getMembers(scope, declaredOnly = false).filter { member ->
|
||||||
val callableDescriptor = member.descriptor as DeserializedCallableMemberDescriptor
|
val callableDescriptor = member.descriptor as DeserializedCallableMemberDescriptor
|
||||||
val packageFragment = callableDescriptor.containingDeclaration as PackageFragmentDescriptor
|
val packageFragment = callableDescriptor.containingDeclaration as PackageFragmentDescriptor
|
||||||
val source = (packageFragment as? LazyJavaPackageFragment)?.source as? KotlinJvmBinaryPackageSourceElement
|
val source = (packageFragment as? LazyJavaPackageFragment)?.source as? KotlinJvmBinaryPackageSourceElement
|
||||||
|
|||||||
Reference in New Issue
Block a user