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 }) {
// For SAM-constructors
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)
}
override fun getClassNames(kindFilter: DescriptorKindFilter, nameFilter: (Name) -> Boolean): Collection<Name>
override fun computeClassNames(kindFilter: DescriptorKindFilter, nameFilter: ((Name) -> Boolean)?): Collection<Name>
= nestedClassIndex().keys + enumEntryIndex().keys
override fun getPropertyNames(kindFilter: DescriptorKindFilter, nameFilter: (Name) -> Boolean): Collection<Name> {
if (jClass.isAnnotationType) return memberIndex().getMethodNames(nameFilter)
override fun computePropertyNames(kindFilter: DescriptorKindFilter, nameFilter: ((Name) -> Boolean)?): Collection<Name> {
if (jClass.isAnnotationType) return memberIndex().getMethodNames(nameFilter ?: alwaysTrue())
return memberIndex().getAllFieldNames() +
ownerDescriptor.getTypeConstructor().getSupertypes().flatMapTo(LinkedHashSet<Name>()) { supertype ->
supertype.memberScope.getContributedDescriptors(kindFilter, nameFilter).map { variable ->
supertype.memberScope.getContributedDescriptors(kindFilter, nameFilter ?: alwaysTrue()).map { variable ->
variable.getName()
}
}
@@ -34,6 +34,7 @@ import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.name.SpecialNames
import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter
import org.jetbrains.kotlin.storage.NullableLazyValue
import org.jetbrains.kotlin.utils.alwaysTrue
class LazyJavaPackageScope(
c: LazyJavaResolverContext,
@@ -134,23 +135,23 @@ class LazyJavaPackageScope(
override fun computeMemberIndex(): MemberIndex = object : MemberIndex by EMPTY_MEMBER_INDEX {
// 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
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
}
}
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
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) {
@@ -159,7 +160,7 @@ class LazyJavaPackageScope(
}?.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
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.utils.Printer
import org.jetbrains.kotlin.utils.addIfNotNull
import org.jetbrains.kotlin.utils.alwaysTrue
import org.jetbrains.kotlin.utils.toReadOnlyList
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)
protected open fun getFunctionNames(kindFilter: DescriptorKindFilter, nameFilter: (Name) -> Boolean): Collection<Name>
= memberIndex().getMethodNames(nameFilter)
protected open fun computeFunctionNames(kindFilter: DescriptorKindFilter, nameFilter: ((Name) -> Boolean)?): Collection<Name>
= memberIndex().getMethodNames(nameFilter ?: alwaysTrue())
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 {
name: Name ->
@@ -300,7 +301,7 @@ abstract class LazyJavaScope(protected val c: LazyJavaResolverContext) : MemberS
val result = LinkedHashSet<DeclarationDescriptor>()
if (kindFilter.acceptsKinds(DescriptorKindFilter.CLASSIFIERS_MASK)) {
for (name in getClassNames(kindFilter, nameFilter)) {
for (name in computeClassNames(kindFilter, nameFilter)) {
if (nameFilter(name)) {
// Null signifies that a class found in Java is not present in Kotlin (e.g. package class)
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)) {
for (name in getFunctionNames(kindFilter, nameFilter)) {
for (name in computeFunctionNames(kindFilter, nameFilter)) {
if (nameFilter(name)) {
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)) {
for (name in getPropertyNames(kindFilter, nameFilter)) {
for (name in computePropertyNames(kindFilter, nameFilter)) {
if (nameFilter(name)) {
result.addAll(getContributedVariables(name, location))
}
@@ -327,7 +328,7 @@ abstract class LazyJavaScope(protected val c: LazyJavaResolverContext) : MemberS
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"
@@ -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) {
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()
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? {
// We don't need to track lookups here because we find nested/inner classes in LazyJavaClassMemberScope