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:
Denis Zharkov
2016-09-06 16:15:43 +03:00
parent 81682f0497
commit 02d7cf9614
4 changed files with 25 additions and 23 deletions
@@ -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()
} }
} }
@@ -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> {
@@ -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"
@@ -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