Descriptor kind filter replaced with bit mask

This commit is contained in:
Valentin Kipyatkov
2014-11-02 11:18:57 +03:00
parent 43df891515
commit 6f2da4930a
34 changed files with 90 additions and 108 deletions
@@ -181,9 +181,9 @@ public class DeserializedClassDescriptor(outerContext: DeserializationContext, p
private inner class DeserializedClassMemberScope : DeserializedMemberScope(context, this@DeserializedClassDescriptor.classProto.getMemberList()) {
private val classDescriptor: DeserializedClassDescriptor = this@DeserializedClassDescriptor
private val allDescriptors = context.storageManager.createLazyValue { computeDescriptors({ true }, { true }) }
private val allDescriptors = context.storageManager.createLazyValue { computeDescriptors(JetScope.ALL_KINDS_MASK, JetScope.ALL_NAME_FILTER) }
override fun getDescriptors(kindFilter: (JetScope.DescriptorKind) -> Boolean,
override fun getDescriptors(kindFilterMask: Int,
nameFilter: (Name) -> Boolean): Collection<DeclarationDescriptor> = allDescriptors()
override fun computeNonDeclaredFunctions(name: Name, functions: MutableCollection<FunctionDescriptor>) {
@@ -101,16 +101,16 @@ public abstract class DeserializedMemberScope protected(
override fun getDeclarationsByLabel(labelName: Name): Collection<DeclarationDescriptor> = listOf()
protected fun computeDescriptors(kindFilter: (JetScope.DescriptorKind) -> Boolean,
protected fun computeDescriptors(kindFilterMask: Int,
nameFilter: (Name) -> Boolean): Collection<DeclarationDescriptor> {
val result = LinkedHashSet<DeclarationDescriptor>(0)
for (name in membersProtos().keySet()) {
if (nameFilter(name)) {
if (kindFilter(JetScope.DescriptorKind.ORDINARY_FUNCTION) || kindFilter(JetScope.DescriptorKind.EXTENSION_FUNCTION)) {
if (kindFilterMask and JetScope.FUNCTIONS_MASK != 0) {
result.addAll(getFunctions(name))
}
if (kindFilter(JetScope.DescriptorKind.NON_EXTENSION_PROPERTY) || kindFilter(JetScope.DescriptorKind.EXTENSION_PROPERTY)) {
if (kindFilterMask and JetScope.PROPERTIES_MASK != 0) {
result.addAll(getProperties(name))
}
}
@@ -118,7 +118,7 @@ public abstract class DeserializedMemberScope protected(
addNonDeclaredDescriptors(result)
if (kindFilter(JetScope.DescriptorKind.TYPE) || kindFilter(JetScope.DescriptorKind.OBJECT) || kindFilter(JetScope.DescriptorKind.ENUM_ENTRY)) {
if (kindFilterMask and JetScope.CLASSIFIERS_MASK != 0) {
addClassDescriptors(result, nameFilter)
}
@@ -44,8 +44,8 @@ public open class DeserializedPackageMemberScope(
private val packageFqName = packageDescriptor.fqName
private val classNames = context.storageManager.createLazyValue(classNames)
override fun getDescriptors(kindFilter: (JetScope.DescriptorKind) -> Boolean, nameFilter: (Name) -> Boolean)
= computeDescriptors(kindFilter, nameFilter)
override fun getDescriptors(kindFilterMask: Int, nameFilter: (Name) -> Boolean)
= computeDescriptors(kindFilterMask, nameFilter)
override fun getClassDescriptor(name: Name) = context.deserializeClass(ClassId(packageFqName, name))