Minor. Rename MemberIndex -> DeclaredMemberIndex
Also replace super-calls with explicit calls to declaredMemberIndex().getMethods
This commit is contained in:
+12
-12
@@ -23,23 +23,23 @@ import org.jetbrains.kotlin.load.java.structure.JavaMember
|
|||||||
import org.jetbrains.kotlin.load.java.structure.JavaMethod
|
import org.jetbrains.kotlin.load.java.structure.JavaMethod
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
|
||||||
interface MemberIndex {
|
interface DeclaredMemberIndex {
|
||||||
fun findMethodsByName(name: Name): Collection<JavaMethod>
|
fun findMethodsByName(name: Name): Collection<JavaMethod>
|
||||||
fun getMethodNames(): Set<Name>
|
fun getMethodNames(): Set<Name>
|
||||||
|
|
||||||
fun findFieldByName(name: Name): JavaField?
|
fun findFieldByName(name: Name): JavaField?
|
||||||
fun getAllFieldNames(): Set<Name>
|
fun getFieldNames(): Set<Name>
|
||||||
|
|
||||||
|
object Empty : DeclaredMemberIndex {
|
||||||
|
override fun findMethodsByName(name: Name) = listOf<JavaMethod>()
|
||||||
|
override fun getMethodNames() = emptySet<Name>()
|
||||||
|
|
||||||
|
override fun findFieldByName(name: Name): JavaField? = null
|
||||||
|
override fun getFieldNames() = emptySet<Name>()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
object EMPTY_MEMBER_INDEX : MemberIndex {
|
open class ClassDeclaredMemberIndex(val jClass: JavaClass, val memberFilter: (JavaMember) -> Boolean) : DeclaredMemberIndex {
|
||||||
override fun findMethodsByName(name: Name) = listOf<JavaMethod>()
|
|
||||||
override fun getMethodNames() = emptySet<Name>()
|
|
||||||
|
|
||||||
override fun findFieldByName(name: Name): JavaField? = null
|
|
||||||
override fun getAllFieldNames() = emptySet<Name>()
|
|
||||||
}
|
|
||||||
|
|
||||||
open class ClassMemberIndex(val jClass: JavaClass, val memberFilter: (JavaMember) -> Boolean) : MemberIndex {
|
|
||||||
private val methodFilter = {
|
private val methodFilter = {
|
||||||
m: JavaMethod ->
|
m: JavaMethod ->
|
||||||
memberFilter(m) && !DescriptorResolverUtils.isObjectMethodInInterface(m)
|
memberFilter(m) && !DescriptorResolverUtils.isObjectMethodInInterface(m)
|
||||||
@@ -52,6 +52,6 @@ open class ClassMemberIndex(val jClass: JavaClass, val memberFilter: (JavaMember
|
|||||||
override fun getMethodNames(): Set<Name> = jClass.methods.asSequence().filter(methodFilter).mapTo(mutableSetOf(), JavaMethod::name)
|
override fun getMethodNames(): Set<Name> = jClass.methods.asSequence().filter(methodFilter).mapTo(mutableSetOf(), JavaMethod::name)
|
||||||
|
|
||||||
override fun findFieldByName(name: Name): JavaField? = fields[name]
|
override fun findFieldByName(name: Name): JavaField? = fields[name]
|
||||||
override fun getAllFieldNames(): Set<Name> = jClass.fields.asSequence().filter(memberFilter).mapTo(mutableSetOf(), JavaField::name)
|
override fun getFieldNames(): Set<Name> = jClass.fields.asSequence().filter(memberFilter).mapTo(mutableSetOf(), JavaField::name)
|
||||||
}
|
}
|
||||||
|
|
||||||
+5
-5
@@ -67,13 +67,13 @@ class LazyJavaClassMemberScope(
|
|||||||
private val jClass: JavaClass
|
private val jClass: JavaClass
|
||||||
) : LazyJavaScope(c) {
|
) : LazyJavaScope(c) {
|
||||||
|
|
||||||
override fun computeMemberIndex() = ClassMemberIndex(jClass, { !it.isStatic })
|
override fun computeMemberIndex() = ClassDeclaredMemberIndex(jClass, { !it.isStatic })
|
||||||
|
|
||||||
override fun computeFunctionNames(kindFilter: DescriptorKindFilter, nameFilter: ((Name) -> Boolean)?) =
|
override fun computeFunctionNames(kindFilter: DescriptorKindFilter, nameFilter: ((Name) -> Boolean)?) =
|
||||||
ownerDescriptor.typeConstructor.supertypes.flatMapTo(HashSet()) {
|
ownerDescriptor.typeConstructor.supertypes.flatMapTo(HashSet()) {
|
||||||
it.memberScope.getFunctionNames()
|
it.memberScope.getFunctionNames()
|
||||||
}.apply {
|
}.apply {
|
||||||
addAll(super.computeFunctionNames(kindFilter, null))
|
addAll(declaredMemberIndex().getMethodNames())
|
||||||
addAll(computeClassNames(kindFilter, nameFilter))
|
addAll(computeClassNames(kindFilter, nameFilter))
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -138,7 +138,7 @@ class LazyJavaClassMemberScope(
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun searchMethodsByNameWithoutBuiltinMagic(name: Name): Collection<SimpleFunctionDescriptor> =
|
private fun searchMethodsByNameWithoutBuiltinMagic(name: Name): Collection<SimpleFunctionDescriptor> =
|
||||||
memberIndex().findMethodsByName(name).map { resolveMethodToFunctionDescriptor(it) }
|
declaredMemberIndex().findMethodsByName(name).map { resolveMethodToFunctionDescriptor(it) }
|
||||||
|
|
||||||
private fun searchMethodsInSupertypesWithoutBuiltinMagic(name: Name): Collection<SimpleFunctionDescriptor> =
|
private fun searchMethodsInSupertypesWithoutBuiltinMagic(name: Name): Collection<SimpleFunctionDescriptor> =
|
||||||
getFunctionsFromSupertypes(name).filterNot {
|
getFunctionsFromSupertypes(name).filterNot {
|
||||||
@@ -408,7 +408,7 @@ class LazyJavaClassMemberScope(
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun computeAnnotationProperties(name: Name, result: MutableCollection<PropertyDescriptor>) {
|
private fun computeAnnotationProperties(name: Name, result: MutableCollection<PropertyDescriptor>) {
|
||||||
val method = memberIndex().findMethodsByName(name).singleOrNull() ?: return
|
val method = declaredMemberIndex().findMethodsByName(name).singleOrNull() ?: return
|
||||||
result.add(createPropertyDescriptorWithDefaultGetter(method, modality = Modality.FINAL))
|
result.add(createPropertyDescriptorWithDefaultGetter(method, modality = Modality.FINAL))
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -667,7 +667,7 @@ class LazyJavaClassMemberScope(
|
|||||||
|
|
||||||
override fun computePropertyNames(kindFilter: DescriptorKindFilter, nameFilter: ((Name) -> Boolean)?): Set<Name> {
|
override fun computePropertyNames(kindFilter: DescriptorKindFilter, nameFilter: ((Name) -> Boolean)?): Set<Name> {
|
||||||
if (jClass.isAnnotationType) return getFunctionNames()
|
if (jClass.isAnnotationType) return getFunctionNames()
|
||||||
val result = LinkedHashSet(memberIndex().getAllFieldNames())
|
val result = LinkedHashSet(declaredMemberIndex().getFieldNames())
|
||||||
return ownerDescriptor.typeConstructor.supertypes.flatMapTo(result) { supertype ->
|
return ownerDescriptor.typeConstructor.supertypes.flatMapTo(result) { supertype ->
|
||||||
supertype.memberScope.getVariableNames()
|
supertype.memberScope.getVariableNames()
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -143,7 +143,7 @@ class LazyJavaPackageScope(
|
|||||||
|
|
||||||
override fun getContributedVariables(name: Name, location: LookupLocation): Collection<PropertyDescriptor> = emptyList()
|
override fun getContributedVariables(name: Name, location: LookupLocation): Collection<PropertyDescriptor> = emptyList()
|
||||||
|
|
||||||
override fun computeMemberIndex(): MemberIndex = EMPTY_MEMBER_INDEX
|
override fun computeMemberIndex(): DeclaredMemberIndex = DeclaredMemberIndex.Empty
|
||||||
|
|
||||||
override fun computeClassNames(kindFilter: DescriptorKindFilter, nameFilter: ((Name) -> Boolean)?): Set<Name> {
|
override fun computeClassNames(kindFilter: DescriptorKindFilter, nameFilter: ((Name) -> Boolean)?): Set<Name> {
|
||||||
// neither objects nor enum members can be in java package
|
// neither objects nor enum members can be in java package
|
||||||
|
|||||||
+6
-6
@@ -63,9 +63,9 @@ abstract class LazyJavaScope(protected val c: LazyJavaResolverContext) : MemberS
|
|||||||
listOf()
|
listOf()
|
||||||
)
|
)
|
||||||
|
|
||||||
protected val memberIndex: NotNullLazyValue<MemberIndex> = c.storageManager.createLazyValue { computeMemberIndex() }
|
protected val declaredMemberIndex: NotNullLazyValue<DeclaredMemberIndex> = c.storageManager.createLazyValue { computeMemberIndex() }
|
||||||
|
|
||||||
protected abstract fun computeMemberIndex(): MemberIndex
|
protected abstract fun computeMemberIndex(): DeclaredMemberIndex
|
||||||
|
|
||||||
// Fake overrides, SAM constructors/adapters, values()/valueOf(), etc.
|
// Fake overrides, SAM constructors/adapters, values()/valueOf(), etc.
|
||||||
protected abstract fun computeNonDeclaredFunctions(result: MutableCollection<SimpleFunctionDescriptor>, name: Name)
|
protected abstract fun computeNonDeclaredFunctions(result: MutableCollection<SimpleFunctionDescriptor>, name: Name)
|
||||||
@@ -76,7 +76,7 @@ abstract class LazyJavaScope(protected val c: LazyJavaResolverContext) : MemberS
|
|||||||
name ->
|
name ->
|
||||||
val result = LinkedHashSet<SimpleFunctionDescriptor>()
|
val result = LinkedHashSet<SimpleFunctionDescriptor>()
|
||||||
|
|
||||||
for (method in memberIndex().findMethodsByName(name)) {
|
for (method in declaredMemberIndex().findMethodsByName(name)) {
|
||||||
val descriptor = resolveMethodToFunctionDescriptor(method)
|
val descriptor = resolveMethodToFunctionDescriptor(method)
|
||||||
if (!descriptor.isVisibleAsFunction()) continue
|
if (!descriptor.isVisibleAsFunction()) continue
|
||||||
|
|
||||||
@@ -227,18 +227,18 @@ abstract class LazyJavaScope(protected val c: LazyJavaResolverContext) : MemberS
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected open fun computeFunctionNames(kindFilter: DescriptorKindFilter, nameFilter: ((Name) -> Boolean)?): Set<Name> =
|
protected open fun computeFunctionNames(kindFilter: DescriptorKindFilter, nameFilter: ((Name) -> Boolean)?): Set<Name> =
|
||||||
memberIndex().getMethodNames()
|
declaredMemberIndex().getMethodNames()
|
||||||
|
|
||||||
protected abstract fun computeNonDeclaredProperties(name: Name, result: MutableCollection<PropertyDescriptor>)
|
protected abstract fun computeNonDeclaredProperties(name: Name, result: MutableCollection<PropertyDescriptor>)
|
||||||
|
|
||||||
protected open fun computePropertyNames(kindFilter: DescriptorKindFilter, nameFilter: ((Name) -> Boolean)?): Set<Name> =
|
protected open fun computePropertyNames(kindFilter: DescriptorKindFilter, nameFilter: ((Name) -> Boolean)?): Set<Name> =
|
||||||
memberIndex().getAllFieldNames()
|
declaredMemberIndex().getFieldNames()
|
||||||
|
|
||||||
private val properties = c.storageManager.createMemoizedFunction {
|
private val properties = c.storageManager.createMemoizedFunction {
|
||||||
name: Name ->
|
name: Name ->
|
||||||
val properties = ArrayList<PropertyDescriptor>()
|
val properties = ArrayList<PropertyDescriptor>()
|
||||||
|
|
||||||
val field = memberIndex().findFieldByName(name)
|
val field = declaredMemberIndex().findFieldByName(name)
|
||||||
if (field != null && !field.isEnumEntry) {
|
if (field != null && !field.isEnumEntry) {
|
||||||
properties.add(resolveProperty(field))
|
properties.add(resolveProperty(field))
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-3
@@ -40,10 +40,10 @@ class LazyJavaStaticClassScope(
|
|||||||
override val ownerDescriptor: LazyJavaClassDescriptor
|
override val ownerDescriptor: LazyJavaClassDescriptor
|
||||||
) : LazyJavaStaticScope(c) {
|
) : LazyJavaStaticScope(c) {
|
||||||
|
|
||||||
override fun computeMemberIndex() = ClassMemberIndex(jClass) { it.isStatic }
|
override fun computeMemberIndex() = ClassDeclaredMemberIndex(jClass) { it.isStatic }
|
||||||
|
|
||||||
override fun computeFunctionNames(kindFilter: DescriptorKindFilter, nameFilter: ((Name) -> Boolean)?) =
|
override fun computeFunctionNames(kindFilter: DescriptorKindFilter, nameFilter: ((Name) -> Boolean)?) =
|
||||||
super.computeFunctionNames(kindFilter, nameFilter).toMutableSet().apply {
|
declaredMemberIndex().getMethodNames().toMutableSet().apply {
|
||||||
addAll(ownerDescriptor.getParentJavaStaticClassScope()?.getFunctionNames().orEmpty())
|
addAll(ownerDescriptor.getParentJavaStaticClassScope()?.getFunctionNames().orEmpty())
|
||||||
if (jClass.isEnum) {
|
if (jClass.isEnum) {
|
||||||
addAll(listOf(DescriptorUtils.ENUM_VALUE_OF, DescriptorUtils.ENUM_VALUES))
|
addAll(listOf(DescriptorUtils.ENUM_VALUE_OF, DescriptorUtils.ENUM_VALUES))
|
||||||
@@ -52,7 +52,7 @@ class LazyJavaStaticClassScope(
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun computePropertyNames(kindFilter: DescriptorKindFilter, nameFilter: ((Name) -> Boolean)?) =
|
override fun computePropertyNames(kindFilter: DescriptorKindFilter, nameFilter: ((Name) -> Boolean)?) =
|
||||||
super.computePropertyNames(kindFilter, nameFilter).toMutableSet().apply {
|
declaredMemberIndex().getFieldNames().toMutableSet().apply {
|
||||||
flatMapJavaStaticSupertypesScopes(ownerDescriptor, this) { it.getVariableNames() }
|
flatMapJavaStaticSupertypesScopes(ownerDescriptor, this) { it.getVariableNames() }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user