Minor. Rename get*Names -> compute*Names
To indicate that repeating calls to them may require additional computations Also change second parameter to be nullable, this will be necessary in the next commits
This commit is contained in:
+5
-5
@@ -71,7 +71,7 @@ class LazyJavaClassMemberScope(
|
|||||||
return object : ClassMemberIndex(jClass, { !it.isStatic }) {
|
return object : ClassMemberIndex(jClass, { !it.isStatic }) {
|
||||||
// For SAM-constructors
|
// For SAM-constructors
|
||||||
override fun getMethodNames(nameFilter: (Name) -> Boolean): Collection<Name>
|
override fun getMethodNames(nameFilter: (Name) -> Boolean): Collection<Name>
|
||||||
= super.getMethodNames(nameFilter) + getClassNames(DescriptorKindFilter.CLASSIFIERS, nameFilter)
|
= super.getMethodNames(nameFilter) + computeClassNames(DescriptorKindFilter.CLASSIFIERS, nameFilter)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -660,15 +660,15 @@ class LazyJavaClassMemberScope(
|
|||||||
return super.getContributedVariables(name, location)
|
return super.getContributedVariables(name, location)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getClassNames(kindFilter: DescriptorKindFilter, nameFilter: (Name) -> Boolean): Collection<Name>
|
override fun computeClassNames(kindFilter: DescriptorKindFilter, nameFilter: ((Name) -> Boolean)?): Collection<Name>
|
||||||
= nestedClassIndex().keys + enumEntryIndex().keys
|
= nestedClassIndex().keys + enumEntryIndex().keys
|
||||||
|
|
||||||
override fun getPropertyNames(kindFilter: DescriptorKindFilter, nameFilter: (Name) -> Boolean): Collection<Name> {
|
override fun computePropertyNames(kindFilter: DescriptorKindFilter, nameFilter: ((Name) -> Boolean)?): Collection<Name> {
|
||||||
if (jClass.isAnnotationType) return memberIndex().getMethodNames(nameFilter)
|
if (jClass.isAnnotationType) return memberIndex().getMethodNames(nameFilter ?: alwaysTrue())
|
||||||
|
|
||||||
return memberIndex().getAllFieldNames() +
|
return memberIndex().getAllFieldNames() +
|
||||||
ownerDescriptor.getTypeConstructor().getSupertypes().flatMapTo(LinkedHashSet<Name>()) { supertype ->
|
ownerDescriptor.getTypeConstructor().getSupertypes().flatMapTo(LinkedHashSet<Name>()) { supertype ->
|
||||||
supertype.memberScope.getContributedDescriptors(kindFilter, nameFilter).map { variable ->
|
supertype.memberScope.getContributedDescriptors(kindFilter, nameFilter ?: alwaysTrue()).map { variable ->
|
||||||
variable.getName()
|
variable.getName()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+7
-6
@@ -34,6 +34,7 @@ import org.jetbrains.kotlin.name.Name
|
|||||||
import org.jetbrains.kotlin.name.SpecialNames
|
import org.jetbrains.kotlin.name.SpecialNames
|
||||||
import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter
|
import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter
|
||||||
import org.jetbrains.kotlin.storage.NullableLazyValue
|
import org.jetbrains.kotlin.storage.NullableLazyValue
|
||||||
|
import org.jetbrains.kotlin.utils.alwaysTrue
|
||||||
|
|
||||||
class LazyJavaPackageScope(
|
class LazyJavaPackageScope(
|
||||||
c: LazyJavaResolverContext,
|
c: LazyJavaResolverContext,
|
||||||
@@ -134,23 +135,23 @@ class LazyJavaPackageScope(
|
|||||||
|
|
||||||
override fun computeMemberIndex(): MemberIndex = object : MemberIndex by EMPTY_MEMBER_INDEX {
|
override fun computeMemberIndex(): MemberIndex = object : MemberIndex by EMPTY_MEMBER_INDEX {
|
||||||
// For SAM-constructors
|
// For SAM-constructors
|
||||||
override fun getMethodNames(nameFilter: (Name) -> Boolean): Collection<Name> = getClassNames(DescriptorKindFilter.CLASSIFIERS, nameFilter)
|
override fun getMethodNames(nameFilter: (Name) -> Boolean): Collection<Name> = computeClassNames(DescriptorKindFilter.CLASSIFIERS, nameFilter)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getClassNames(kindFilter: DescriptorKindFilter, nameFilter: (Name) -> Boolean): Collection<Name> {
|
override fun computeClassNames(kindFilter: DescriptorKindFilter, nameFilter: ((Name) -> Boolean)?): Collection<Name> {
|
||||||
// neither objects nor enum members can be in java package
|
// neither objects nor enum members can be in java package
|
||||||
if (!kindFilter.acceptsKinds(DescriptorKindFilter.NON_SINGLETON_CLASSIFIERS_MASK)) return listOf()
|
if (!kindFilter.acceptsKinds(DescriptorKindFilter.NON_SINGLETON_CLASSIFIERS_MASK)) return listOf()
|
||||||
|
|
||||||
return jPackage.getClasses(nameFilter).mapNotNull { klass ->
|
return jPackage.getClasses(nameFilter ?: alwaysTrue()).mapNotNull { klass ->
|
||||||
if (klass.lightClassOriginKind == LightClassOriginKind.SOURCE) null else klass.name
|
if (klass.lightClassOriginKind == LightClassOriginKind.SOURCE) null else klass.name
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getFunctionNames(kindFilter: DescriptorKindFilter, nameFilter: (Name) -> Boolean): Collection<Name> {
|
override fun computeFunctionNames(kindFilter: DescriptorKindFilter, nameFilter: ((Name) -> Boolean)?): Collection<Name> {
|
||||||
// optimization: only SAM-constructors may exist in java package
|
// optimization: only SAM-constructors may exist in java package
|
||||||
if (kindFilter.excludes.contains(SamConstructorDescriptorKindExclude)) return listOf()
|
if (kindFilter.excludes.contains(SamConstructorDescriptorKindExclude)) return listOf()
|
||||||
|
|
||||||
return super.getFunctionNames(kindFilter, nameFilter)
|
return super.computeFunctionNames(kindFilter, nameFilter)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun computeNonDeclaredFunctions(result: MutableCollection<SimpleFunctionDescriptor>, name: Name) {
|
override fun computeNonDeclaredFunctions(result: MutableCollection<SimpleFunctionDescriptor>, name: Name) {
|
||||||
@@ -159,7 +160,7 @@ class LazyJavaPackageScope(
|
|||||||
}?.let { result.add(it) }
|
}?.let { result.add(it) }
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getPropertyNames(kindFilter: DescriptorKindFilter, nameFilter: (Name) -> Boolean) = listOf<Name>()
|
override fun computePropertyNames(kindFilter: DescriptorKindFilter, nameFilter: ((Name) -> Boolean)?) = listOf<Name>()
|
||||||
|
|
||||||
// we don't use implementation from super which caches all descriptors and does not use filters
|
// we don't use implementation from super which caches all descriptors and does not use filters
|
||||||
override fun getContributedDescriptors(kindFilter: DescriptorKindFilter, nameFilter: (Name) -> Boolean): Collection<DeclarationDescriptor> {
|
override fun getContributedDescriptors(kindFilter: DescriptorKindFilter, nameFilter: (Name) -> Boolean): Collection<DeclarationDescriptor> {
|
||||||
|
|||||||
+8
-7
@@ -45,6 +45,7 @@ import org.jetbrains.kotlin.types.KotlinType
|
|||||||
import org.jetbrains.kotlin.types.TypeUtils
|
import org.jetbrains.kotlin.types.TypeUtils
|
||||||
import org.jetbrains.kotlin.utils.Printer
|
import org.jetbrains.kotlin.utils.Printer
|
||||||
import org.jetbrains.kotlin.utils.addIfNotNull
|
import org.jetbrains.kotlin.utils.addIfNotNull
|
||||||
|
import org.jetbrains.kotlin.utils.alwaysTrue
|
||||||
import org.jetbrains.kotlin.utils.toReadOnlyList
|
import org.jetbrains.kotlin.utils.toReadOnlyList
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
@@ -216,12 +217,12 @@ abstract class LazyJavaScope(protected val c: LazyJavaResolverContext) : MemberS
|
|||||||
|
|
||||||
override fun getContributedFunctions(name: Name, location: LookupLocation): Collection<SimpleFunctionDescriptor> = functions(name)
|
override fun getContributedFunctions(name: Name, location: LookupLocation): Collection<SimpleFunctionDescriptor> = functions(name)
|
||||||
|
|
||||||
protected open fun getFunctionNames(kindFilter: DescriptorKindFilter, nameFilter: (Name) -> Boolean): Collection<Name>
|
protected open fun computeFunctionNames(kindFilter: DescriptorKindFilter, nameFilter: ((Name) -> Boolean)?): Collection<Name>
|
||||||
= memberIndex().getMethodNames(nameFilter)
|
= memberIndex().getMethodNames(nameFilter ?: alwaysTrue())
|
||||||
|
|
||||||
protected abstract fun computeNonDeclaredProperties(name: Name, result: MutableCollection<PropertyDescriptor>)
|
protected abstract fun computeNonDeclaredProperties(name: Name, result: MutableCollection<PropertyDescriptor>)
|
||||||
|
|
||||||
protected abstract fun getPropertyNames(kindFilter: DescriptorKindFilter, nameFilter: (Name) -> Boolean): Collection<Name>
|
protected abstract fun computePropertyNames(kindFilter: DescriptorKindFilter, nameFilter: ((Name) -> Boolean)?): Collection<Name>
|
||||||
|
|
||||||
private val properties = c.storageManager.createMemoizedFunction {
|
private val properties = c.storageManager.createMemoizedFunction {
|
||||||
name: Name ->
|
name: Name ->
|
||||||
@@ -300,7 +301,7 @@ abstract class LazyJavaScope(protected val c: LazyJavaResolverContext) : MemberS
|
|||||||
val result = LinkedHashSet<DeclarationDescriptor>()
|
val result = LinkedHashSet<DeclarationDescriptor>()
|
||||||
|
|
||||||
if (kindFilter.acceptsKinds(DescriptorKindFilter.CLASSIFIERS_MASK)) {
|
if (kindFilter.acceptsKinds(DescriptorKindFilter.CLASSIFIERS_MASK)) {
|
||||||
for (name in getClassNames(kindFilter, nameFilter)) {
|
for (name in computeClassNames(kindFilter, nameFilter)) {
|
||||||
if (nameFilter(name)) {
|
if (nameFilter(name)) {
|
||||||
// Null signifies that a class found in Java is not present in Kotlin (e.g. package class)
|
// Null signifies that a class found in Java is not present in Kotlin (e.g. package class)
|
||||||
result.addIfNotNull(getContributedClassifier(name, location))
|
result.addIfNotNull(getContributedClassifier(name, location))
|
||||||
@@ -309,7 +310,7 @@ abstract class LazyJavaScope(protected val c: LazyJavaResolverContext) : MemberS
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (kindFilter.acceptsKinds(DescriptorKindFilter.FUNCTIONS_MASK) && !kindFilter.excludes.contains(NonExtensions)) {
|
if (kindFilter.acceptsKinds(DescriptorKindFilter.FUNCTIONS_MASK) && !kindFilter.excludes.contains(NonExtensions)) {
|
||||||
for (name in getFunctionNames(kindFilter, nameFilter)) {
|
for (name in computeFunctionNames(kindFilter, nameFilter)) {
|
||||||
if (nameFilter(name)) {
|
if (nameFilter(name)) {
|
||||||
result.addAll(getContributedFunctions(name, location))
|
result.addAll(getContributedFunctions(name, location))
|
||||||
}
|
}
|
||||||
@@ -317,7 +318,7 @@ abstract class LazyJavaScope(protected val c: LazyJavaResolverContext) : MemberS
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (kindFilter.acceptsKinds(DescriptorKindFilter.VARIABLES_MASK) && !kindFilter.excludes.contains(NonExtensions)) {
|
if (kindFilter.acceptsKinds(DescriptorKindFilter.VARIABLES_MASK) && !kindFilter.excludes.contains(NonExtensions)) {
|
||||||
for (name in getPropertyNames(kindFilter, nameFilter)) {
|
for (name in computePropertyNames(kindFilter, nameFilter)) {
|
||||||
if (nameFilter(name)) {
|
if (nameFilter(name)) {
|
||||||
result.addAll(getContributedVariables(name, location))
|
result.addAll(getContributedVariables(name, location))
|
||||||
}
|
}
|
||||||
@@ -327,7 +328,7 @@ abstract class LazyJavaScope(protected val c: LazyJavaResolverContext) : MemberS
|
|||||||
return result.toReadOnlyList()
|
return result.toReadOnlyList()
|
||||||
}
|
}
|
||||||
|
|
||||||
protected abstract fun getClassNames(kindFilter: DescriptorKindFilter, nameFilter: (Name) -> Boolean): Collection<Name>
|
protected abstract fun computeClassNames(kindFilter: DescriptorKindFilter, nameFilter: ((Name) -> Boolean)?): Collection<Name>
|
||||||
|
|
||||||
override fun toString() = "Lazy scope for $ownerDescriptor"
|
override fun toString() = "Lazy scope for $ownerDescriptor"
|
||||||
|
|
||||||
|
|||||||
+5
-5
@@ -51,17 +51,17 @@ class LazyJavaStaticClassScope(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getFunctionNames(kindFilter: DescriptorKindFilter, nameFilter: (Name) -> Boolean): Collection<Name> {
|
override fun computeFunctionNames(kindFilter: DescriptorKindFilter, nameFilter: ((Name) -> Boolean)?): Collection<Name> {
|
||||||
if (jClass.isEnum) {
|
if (jClass.isEnum) {
|
||||||
return super.getFunctionNames(kindFilter, nameFilter) + listOf(DescriptorUtils.ENUM_VALUE_OF, DescriptorUtils.ENUM_VALUES)
|
return super.computeFunctionNames(kindFilter, nameFilter) + listOf(DescriptorUtils.ENUM_VALUE_OF, DescriptorUtils.ENUM_VALUES)
|
||||||
}
|
}
|
||||||
return super.getFunctionNames(kindFilter, nameFilter)
|
return super.computeFunctionNames(kindFilter, nameFilter)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getPropertyNames(kindFilter: DescriptorKindFilter, nameFilter: (Name) -> Boolean): Collection<Name> =
|
override fun computePropertyNames(kindFilter: DescriptorKindFilter, nameFilter: ((Name) -> Boolean)?): Collection<Name> =
|
||||||
memberIndex().getAllFieldNames()
|
memberIndex().getAllFieldNames()
|
||||||
|
|
||||||
override fun getClassNames(kindFilter: DescriptorKindFilter, nameFilter: (Name) -> Boolean): Collection<Name> = listOf()
|
override fun computeClassNames(kindFilter: DescriptorKindFilter, nameFilter: ((Name) -> Boolean)?): Collection<Name> = listOf()
|
||||||
|
|
||||||
override fun getContributedClassifier(name: Name, location: LookupLocation): ClassifierDescriptor? {
|
override fun getContributedClassifier(name: Name, location: LookupLocation): ClassifierDescriptor? {
|
||||||
// We don't need to track lookups here because we find nested/inner classes in LazyJavaClassMemberScope
|
// We don't need to track lookups here because we find nested/inner classes in LazyJavaClassMemberScope
|
||||||
|
|||||||
Reference in New Issue
Block a user