Use of Sequence instead of Stream
This commit is contained in:
@@ -69,7 +69,7 @@ public class KotlinIndicesHelper(
|
|||||||
}
|
}
|
||||||
|
|
||||||
public fun getTopLevelCallables(nameFilter: (String) -> Boolean): Collection<CallableDescriptor> {
|
public fun getTopLevelCallables(nameFilter: (String) -> Boolean): Collection<CallableDescriptor> {
|
||||||
val sourceNames = JetTopLevelFunctionFqnNameIndex.getInstance().getAllKeys(project).stream() + JetTopLevelPropertyFqnNameIndex.getInstance().getAllKeys(project).stream()
|
val sourceNames = JetTopLevelFunctionFqnNameIndex.getInstance().getAllKeys(project).sequence() + JetTopLevelPropertyFqnNameIndex.getInstance().getAllKeys(project).sequence()
|
||||||
val allFqNames = sourceNames.map { FqName(it) }
|
val allFqNames = sourceNames.map { FqName(it) }
|
||||||
return allFqNames.filter { nameFilter(it.shortName().asString()) }
|
return allFqNames.filter { nameFilter(it.shortName().asString()) }
|
||||||
.toSet()
|
.toSet()
|
||||||
@@ -82,8 +82,8 @@ public class KotlinIndicesHelper(
|
|||||||
val functionsIndex = JetTopLevelFunctionFqnNameIndex.getInstance()
|
val functionsIndex = JetTopLevelFunctionFqnNameIndex.getInstance()
|
||||||
val propertiesIndex = JetTopLevelPropertyFqnNameIndex.getInstance()
|
val propertiesIndex = JetTopLevelPropertyFqnNameIndex.getInstance()
|
||||||
|
|
||||||
val sourceFunctionNames = functionsIndex.getAllKeys(project).stream().map { FqName(it) }
|
val sourceFunctionNames = functionsIndex.getAllKeys(project).sequence().map { FqName(it) }
|
||||||
val sourcePropertyNames = propertiesIndex.getAllKeys(project).stream().map { FqName(it) }
|
val sourcePropertyNames = propertiesIndex.getAllKeys(project).sequence().map { FqName(it) }
|
||||||
|
|
||||||
val result = HashSet<CallableDescriptor>()
|
val result = HashSet<CallableDescriptor>()
|
||||||
result.fqNamesToSuitableExtensions(sourceFunctionNames, nameFilter, functionsIndex, expression, bindingContext, dataFlowInfo)
|
result.fqNamesToSuitableExtensions(sourceFunctionNames, nameFilter, functionsIndex, expression, bindingContext, dataFlowInfo)
|
||||||
@@ -92,7 +92,7 @@ public class KotlinIndicesHelper(
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun MutableCollection<CallableDescriptor>.fqNamesToSuitableExtensions(
|
private fun MutableCollection<CallableDescriptor>.fqNamesToSuitableExtensions(
|
||||||
fqNames: Stream<FqName>,
|
fqNames: Sequence<FqName>,
|
||||||
nameFilter: (String) -> Boolean,
|
nameFilter: (String) -> Boolean,
|
||||||
index: StringStubIndexExtension<out JetCallableDeclaration>,
|
index: StringStubIndexExtension<out JetCallableDeclaration>,
|
||||||
expression: JetSimpleNameExpression,
|
expression: JetSimpleNameExpression,
|
||||||
@@ -132,7 +132,7 @@ public class KotlinIndicesHelper(
|
|||||||
receiverValue: ReceiverValue,
|
receiverValue: ReceiverValue,
|
||||||
dataFlowInfo: DataFlowInfo,
|
dataFlowInfo: DataFlowInfo,
|
||||||
callType: CallType,
|
callType: CallType,
|
||||||
bindingContext: BindingContext): Stream<CallableDescriptor> {
|
bindingContext: BindingContext): Sequence<CallableDescriptor> {
|
||||||
val extensions = index.get(callableFQN.asString(), project, scope).filter { it.getReceiverTypeReference() != null }
|
val extensions = index.get(callableFQN.asString(), project, scope).filter { it.getReceiverTypeReference() != null }
|
||||||
val descriptors = if (extensions.any { it.getContainingJetFile().isCompiled() } ) {
|
val descriptors = if (extensions.any { it.getContainingJetFile().isCompiled() } ) {
|
||||||
analyzeImportReference(callableFQN)
|
analyzeImportReference(callableFQN)
|
||||||
@@ -140,13 +140,13 @@ public class KotlinIndicesHelper(
|
|||||||
.filter { it.getExtensionReceiverParameter() != null }
|
.filter { it.getExtensionReceiverParameter() != null }
|
||||||
}
|
}
|
||||||
else extensions.map { resolutionFacade.resolveToDescriptor(it) as CallableDescriptor }
|
else extensions.map { resolutionFacade.resolveToDescriptor(it) as CallableDescriptor }
|
||||||
return descriptors.stream()
|
return descriptors.sequence()
|
||||||
.filter(visibilityFilter)
|
.filter(visibilityFilter)
|
||||||
.flatMap { it.substituteExtensionIfCallable(receiverValue, callType, bindingContext, dataFlowInfo).stream() }
|
.flatMap { it.substituteExtensionIfCallable(receiverValue, callType, bindingContext, dataFlowInfo).sequence() }
|
||||||
}
|
}
|
||||||
|
|
||||||
public fun getClassDescriptors(nameFilter: (String) -> Boolean, kindFilter: (ClassKind) -> Boolean): Collection<ClassDescriptor> {
|
public fun getClassDescriptors(nameFilter: (String) -> Boolean, kindFilter: (ClassKind) -> Boolean): Collection<ClassDescriptor> {
|
||||||
return JetFullClassNameIndex.getInstance().getAllKeys(project).stream()
|
return JetFullClassNameIndex.getInstance().getAllKeys(project).sequence()
|
||||||
.map { FqName(it) }
|
.map { FqName(it) }
|
||||||
.filter { nameFilter(it.shortName().asString()) }
|
.filter { nameFilter(it.shortName().asString()) }
|
||||||
.toList()
|
.toList()
|
||||||
|
|||||||
Reference in New Issue
Block a user