Minor code improvements after conversion to Kotlin

This commit is contained in:
Valentin Kipyatkov
2014-10-28 21:48:38 +03:00
parent 9b81cf2454
commit c71100b486
@@ -53,23 +53,21 @@ public abstract class DeserializedMemberScope protected(
return map return map
} }
private fun <D : CallableMemberDescriptor> computeMembersByName(name: Name, callableKind: Filter<ProtoBuf.Callable.CallableKind>): MutableCollection<D> { private fun <D : CallableMemberDescriptor> computeMembersByName(name: Name, callableKind: (ProtoBuf.Callable.CallableKind) -> Boolean): LinkedHashSet<D> {
val memberProtos = membersProtos.invoke().get(name) val memberProtos = membersProtos()[name] ?: return LinkedHashSet()
val descriptors = LinkedHashSet<D>(if (memberProtos != null) memberProtos.size() else 0) val descriptors = LinkedHashSet<D>(memberProtos.size())
if (memberProtos != null) { for (memberProto in memberProtos) {
for (memberProto in memberProtos) { if (callableKind(Flags.CALLABLE_KIND[memberProto.getFlags()])) {
if (callableKind.accept(Flags.CALLABLE_KIND.get(memberProto.getFlags()))) { [suppress("UNCHECKED_CAST")]
[suppress("UNCHECKED_CAST")] descriptors.add(context.deserializer.loadCallable(memberProto) as D)
descriptors.add(context.deserializer.loadCallable(memberProto) as D)
}
} }
} }
return descriptors return descriptors
} }
private fun computeFunctions(name: Name): Collection<FunctionDescriptor> { private fun computeFunctions(name: Name): Collection<FunctionDescriptor> {
val descriptors = computeMembersByName<FunctionDescriptor>(name, FUNCTION) val descriptors = computeMembersByName<FunctionDescriptor>(name) { it == ProtoBuf.Callable.CallableKind.FUN }
computeNonDeclaredFunctions(name, descriptors) computeNonDeclaredFunctions(name, descriptors)
return descriptors.toReadOnlyList() return descriptors.toReadOnlyList()
} }
@@ -80,7 +78,7 @@ public abstract class DeserializedMemberScope protected(
override fun getFunctions(name: Name): Collection<FunctionDescriptor> = functions(name) override fun getFunctions(name: Name): Collection<FunctionDescriptor> = functions(name)
private fun computeProperties(name: Name): Collection<VariableDescriptor> { private fun computeProperties(name: Name): Collection<VariableDescriptor> {
val descriptors = computeMembersByName<PropertyDescriptor>(name, PROPERTY) val descriptors = computeMembersByName<PropertyDescriptor>(name) { it == ProtoBuf.Callable.CallableKind.VAL || it == ProtoBuf.Callable.CallableKind.VAR }
computeNonDeclaredProperties(name, descriptors) computeNonDeclaredProperties(name, descriptors)
return descriptors.toReadOnlyList() return descriptors.toReadOnlyList()
} }
@@ -107,7 +105,7 @@ public abstract class DeserializedMemberScope protected(
private fun computeAllDescriptors(): Collection<DeclarationDescriptor> { private fun computeAllDescriptors(): Collection<DeclarationDescriptor> {
val result = LinkedHashSet<DeclarationDescriptor>(0) val result = LinkedHashSet<DeclarationDescriptor>(0)
for (name in membersProtos.invoke().keySet()) { for (name in membersProtos().keySet()) {
result.addAll(getFunctions(name)) result.addAll(getFunctions(name))
result.addAll(getProperties(name)) result.addAll(getProperties(name))
} }
@@ -125,19 +123,12 @@ public abstract class DeserializedMemberScope protected(
override fun getImplicitReceiversHierarchy(): List<ReceiverParameterDescriptor> { override fun getImplicitReceiversHierarchy(): List<ReceiverParameterDescriptor> {
val receiver = getImplicitReceiver() val receiver = getImplicitReceiver()
if (receiver != null) { return if (receiver != null) listOf(receiver) else listOf()
return listOf(receiver)
}
return listOf()
} }
protected abstract fun getImplicitReceiver(): ReceiverParameterDescriptor? protected abstract fun getImplicitReceiver(): ReceiverParameterDescriptor?
override fun getOwnDeclaredDescriptors(): Collection<DeclarationDescriptor> = getAllDescriptors() override fun getOwnDeclaredDescriptors() = getAllDescriptors()
private trait Filter<T> {
fun accept(value: T): Boolean
}
override fun printScopeStructure(p: Printer) { override fun printScopeStructure(p: Printer) {
p.println(javaClass.getSimpleName(), " {") p.println(javaClass.getSimpleName(), " {")
@@ -148,18 +139,4 @@ public abstract class DeserializedMemberScope protected(
p.popIndent() p.popIndent()
p.println("}") p.println("}")
} }
class object {
private val FUNCTION = object : Filter<ProtoBuf.Callable.CallableKind> {
override fun accept(value: ProtoBuf.Callable.CallableKind): Boolean {
return value == ProtoBuf.Callable.CallableKind.FUN
}
}
private val PROPERTY = object : Filter<ProtoBuf.Callable.CallableKind> {
override fun accept(value: ProtoBuf.Callable.CallableKind): Boolean {
return value == ProtoBuf.Callable.CallableKind.VAL || value == ProtoBuf.Callable.CallableKind.VAR
}
}
}
} }