Iterators replaced with streams where appropriate

This commit is contained in:
Andrey Breslav
2014-04-29 15:51:16 +04:00
parent 19719f9747
commit c6bd4a22ef
11 changed files with 21 additions and 24 deletions
@@ -43,7 +43,7 @@ class LazyJavaAnnotations(c: LazyJavaResolverContextWithTypes, val annotationOwn
[suppress("UNCHECKED_CAST")] // any iterator can be cast to MutableIterator
override fun iterator(): MutableIterator<AnnotationDescriptor>
= annotationOwner.getAnnotations().iterator().map { annotationDescriptors(it) }.filterNotNull() as MutableIterator
= annotationOwner.getAnnotations().stream().map { annotationDescriptors(it) }.filterNotNull().iterator() as MutableIterator
override fun isEmpty() = iterator().hasNext()
}
@@ -196,7 +196,7 @@ class LazyJavaClassDescriptor(
listOf(jlObject ?: KotlinBuiltIns.getInstance().getAnyType())
}
else
supertypes.iterator()
supertypes.stream()
.map {
supertype ->
c.typeResolver.transformJavaType(supertype, TypeUsage.SUPERTYPE.toAttributes())
@@ -61,7 +61,7 @@ public abstract class LazyJavaMemberScope(
->
val methods = memberIndex().findMethodsByName(name)
val functions = LinkedHashSet(
methods.iterator()
methods.stream()
// values() and valueOf() are added manually, see LazyJavaClassDescriptor::getClassObjectDescriptor()
.filter{ m -> !DescriptorResolverUtils.shouldBeInEnumClassObject(m) }
.flatMap {
@@ -69,9 +69,9 @@ public abstract class LazyJavaMemberScope(
val function = resolveMethodToFunctionDescriptor(m, true)
val samAdapter = resolveSamAdapter(function)
if (samAdapter != null)
listOf(function, samAdapter).iterator()
listOf(function, samAdapter).stream()
else
listOf(function).iterator()
listOf(function).stream()
}.toList())
if (_containingDeclaration is JavaPackageFragmentDescriptor) {
@@ -90,7 +90,7 @@ public class LazyPackageFragmentScopeForJavaPackage(
override fun computeMemberIndex(): MemberIndex = computeMemberIndexForSamConstructors(EMPTY_MEMBER_INDEX)
override fun getAllClassNames(): Collection<Name> {
return jPackage.getClasses().iterator()
return jPackage.getClasses().stream()
.filter { c -> c.getOriginKind() != JavaClass.OriginKind.KOTLIN_LIGHT_CLASS }
.map { c -> c.getName() }.toList()
}
@@ -126,7 +126,7 @@ public class LazyPackageFragmentScopeForJavaClass(
// We do not filter by hasStaticMembers() because it's slow (e.g. it triggers light class generation),
// and there's no harm in having some names in the result that can not be resolved
override fun getSubPackages(): Collection<FqName> = jClass.getInnerClasses().iterator()
override fun getSubPackages(): Collection<FqName> = jClass.getInnerClasses().stream()
.filter { c -> c.isStatic() }
.map { c -> c.getFqName().sure("Nested class has no fqName: $c}") }.toList()
}
@@ -55,8 +55,8 @@ open class ClassMemberIndex(val jClass: JavaClass, filter: (JavaMember) -> Boole
!DescriptorResolverUtils.isObjectMethodInInterface(m)
}
private val methods = jClass.getMethods().iterator().filter(methodFilter).groupBy { m -> m.getName() }
private val fields = jClass.getFields().iterator().filter(memberFilter).valuesToMap { m -> m.getName() }
private val methods = jClass.getMethods().stream().filter(methodFilter).groupBy { m -> m.getName() }
private val fields = jClass.getFields().stream().filter(memberFilter).valuesToMap { m -> m.getName() }
override fun findMethodsByName(name: Name): Collection<JavaMethod> {
return methods[name] ?: listOf()
@@ -65,5 +65,5 @@ open class ClassMemberIndex(val jClass: JavaClass, filter: (JavaMember) -> Boole
override fun getAllMethodNames(): Collection<Name> = jClass.getAllMethods().iterator().filter(methodFilter).map { m -> m.getName() }.toList()
override fun findFieldByName(name: Name): JavaField? = fields[name]
override fun getAllFieldNames() = jClass.getAllFields().iterator().filter(memberFilter).map { m -> m.getName() }.toList()
override fun getAllFieldNames() = jClass.getAllFields().stream().filter(memberFilter).map { m -> m.getName() }.toList()
}
@@ -19,8 +19,7 @@ package org.jetbrains.jet.utils
import java.util.LinkedHashMap
import java.util.ArrayList
[deprecated("use streams instead")]
public fun <K, V> Iterator<V>.valuesToMap(key: (V) -> K): Map<K, V> {
public fun <K, V> Stream<V>.valuesToMap(key: (V) -> K): Map<K, V> {
val map = LinkedHashMap<K, V>()
for (v in this) {
map[key(v)] = v
@@ -28,8 +27,7 @@ public fun <K, V> Iterator<V>.valuesToMap(key: (V) -> K): Map<K, V> {
return map
}
[deprecated("use streams instead")]
public fun <K, V> Iterator<K>.keysToMap(value: (K) -> V): Map<K, V> {
public fun <K, V> Stream<K>.keysToMap(value: (K) -> V): Map<K, V> {
val map = LinkedHashMap<K, V>()
for (k in this) {
map[k] = value(k)
@@ -37,8 +35,7 @@ public fun <K, V> Iterator<K>.keysToMap(value: (K) -> V): Map<K, V> {
return map
}
[deprecated("use streams instead")]
public fun <K, V: Any> Iterator<K>.keysToMapExceptNulls(value: (K) -> V?): Map<K, V> {
public fun <K, V: Any> Stream<K>.keysToMapExceptNulls(value: (K) -> V?): Map<K, V> {
val map = LinkedHashMap<K, V>()
for (k in this) {
val v = value(k)
@@ -57,7 +57,7 @@ class KotlinOverrideTreeStructure(project: Project, val element: PsiElement) : H
}
return javaTreeStructures
.iterator()
.stream()
.map (::buildChildrenByTreeStructure)
.reduce { (a, b) -> ContainerUtil.union(a.toSet(), b.toSet()).copyToArray() }
}
@@ -265,7 +265,7 @@ public class MoveKotlinTopLevelDeclarationsProcessor(project: Project, val optio
}
getTransaction()!!.getElementListener(oldDeclaration).elementMoved(newDeclaration)
for ((oldElement, newElement) in oldLightElements.iterator() zip newDeclaration.toLightElements().iterator()) {
for ((oldElement, newElement) in oldLightElements.stream() zip newDeclaration.toLightElements().stream()) {
oldToNewElementsMapping[oldElement] = newElement
}
}
@@ -105,7 +105,7 @@ public class KotlinSafeDeleteProcessor : JavaSafeDeleteProcessor() {
return searchInfo
}
fun findUsagesByJavaProcessor(elements: Iterator<PsiElement>, insideDeleted: Condition<PsiElement>): Condition<PsiElement> =
fun findUsagesByJavaProcessor(elements: Stream<PsiElement>, insideDeleted: Condition<PsiElement>): Condition<PsiElement> =
elements
.map { element -> findUsagesByJavaProcessor(element, true)?.getInsideDeletedCondition() }
.filterNotNull()
@@ -114,7 +114,7 @@ public class KotlinSafeDeleteProcessor : JavaSafeDeleteProcessor() {
fun findUsagesByJavaProcessor(jetDeclaration: JetDeclaration): NonCodeUsageSearchInfo {
return NonCodeUsageSearchInfo(
findUsagesByJavaProcessor(
jetDeclaration.toLightElements().iterator(),
jetDeclaration.toLightElements().stream(),
getIgnoranceCondition()
),
jetDeclaration
@@ -123,7 +123,7 @@ public class KotlinSafeDeleteProcessor : JavaSafeDeleteProcessor() {
fun findKotlinDeclarationUsages(declaration: JetDeclaration): NonCodeUsageSearchInfo {
ReferencesSearch.search(declaration, declaration.getUseScope())
.iterator()
.stream()
.filterNot { reference -> getIgnoranceCondition().value(reference.getElement()) }
.mapTo(usages) { reference ->
reference.getElement().getParentByType(javaClass<JetImportDirective>())?.let { importDirective ->
@@ -214,7 +214,7 @@ public class KotlinSafeDeleteProcessor : JavaSafeDeleteProcessor() {
if (declarationDescriptor !is CallableMemberDescriptor) return null
return declarationDescriptor.getOverriddenDescriptors()
.iterator()
.stream()
.filter { overridenDescriptor -> overridenDescriptor.getModality() == Modality.ABSTRACT }
.mapTo(ArrayList<String>()) { overridenDescriptor ->
JetBundle.message(
@@ -64,7 +64,7 @@ fun PsiElement.removeOverrideModifier() {
fun PsiMethod.cleanUpOverrides() {
val superMethods = findSuperMethods(true)
for (overridingMethod in OverridingMethodsSearch.search(this, true).findAll()) {
val currentSuperMethods = overridingMethod.findSuperMethods(true).iterator() + superMethods.iterator()
val currentSuperMethods = overridingMethod.findSuperMethods(true).stream() + superMethods.stream()
if (currentSuperMethods.all { superMethod -> superMethod.unwrapped == unwrapped }) {
overridingMethod.unwrapped?.removeOverrideModifier()
}
@@ -46,7 +46,7 @@ public open class KotlinDirectInheritorsSearcher() : QueryExecutorBase<PsiClass,
if (scope == null) return
ApplicationManager.getApplication()?.runReadAction {
JetSuperClassIndex.getInstance().get(name, baseClass.getProject(), scope).iterator()
JetSuperClassIndex.getInstance().get(name, baseClass.getProject(), scope).stream()
.map { candidate -> JetSourceNavigationHelper.getOriginalPsiClassOrCreateLightClass(candidate)}
.filterNotNull()
.filter { candidate -> candidate.isInheritor(baseClass, false) }