From 5bb141381ba0c9661cf6cc3beda2319de2f029cd Mon Sep 17 00:00:00 2001 From: Nikolay Krasko Date: Wed, 25 Nov 2015 13:09:44 +0300 Subject: [PATCH] Refactoring: replace condition with function --- .../diagnostics/DiagnosticsElementsCache.java | 10 +++++----- .../diagnostics/DiagnosticsWithSuppression.java | 17 ++++++++++++----- .../resolve/diagnostics/SimpleDiagnostics.kt | 2 +- 3 files changed, 18 insertions(+), 11 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/diagnostics/DiagnosticsElementsCache.java b/compiler/frontend/src/org/jetbrains/kotlin/resolve/diagnostics/DiagnosticsElementsCache.java index 88fcd6875e9..bc07515086e 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/diagnostics/DiagnosticsElementsCache.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/diagnostics/DiagnosticsElementsCache.java @@ -17,10 +17,10 @@ package org.jetbrains.kotlin.resolve.diagnostics; import com.intellij.openapi.util.AtomicNotNullLazyValue; -import com.intellij.openapi.util.Condition; import com.intellij.psi.PsiElement; import com.intellij.util.containers.ConcurrentMultiMap; import com.intellij.util.containers.MultiMap; +import kotlin.jvm.functions.Function1; import org.jetbrains.annotations.NotNull; import org.jetbrains.kotlin.diagnostics.Diagnostic; @@ -28,7 +28,7 @@ import java.util.Collection; public class DiagnosticsElementsCache { private final Diagnostics diagnostics; - private final Condition filter; + private final Function1 filter; private final AtomicNotNullLazyValue> elementToDiagnostic = new AtomicNotNullLazyValue>() { @NotNull @@ -38,7 +38,7 @@ public class DiagnosticsElementsCache { } }; - public DiagnosticsElementsCache(Diagnostics diagnostics, Condition filter) { + public DiagnosticsElementsCache(Diagnostics diagnostics, Function1 filter) { this.diagnostics = diagnostics; this.filter = filter; } @@ -48,10 +48,10 @@ public class DiagnosticsElementsCache { return elementToDiagnostic.getValue().get(psiElement); } - private static MultiMap buildElementToDiagnosticCache(Diagnostics diagnostics, Condition filter) { + private static MultiMap buildElementToDiagnosticCache(Diagnostics diagnostics, Function1 filter) { MultiMap elementToDiagnostic = new ConcurrentMultiMap(); for (Diagnostic diagnostic : diagnostics) { - if (filter.value(diagnostic)) { + if (filter.invoke(diagnostic)) { elementToDiagnostic.putValue(diagnostic.getPsiElement(), diagnostic); } } diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/diagnostics/DiagnosticsWithSuppression.java b/compiler/frontend/src/org/jetbrains/kotlin/resolve/diagnostics/DiagnosticsWithSuppression.java index bf5aaa7c24c..3cc705278bf 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/diagnostics/DiagnosticsWithSuppression.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/diagnostics/DiagnosticsWithSuppression.java @@ -24,8 +24,9 @@ import com.intellij.openapi.util.ModificationTracker; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import com.intellij.util.containers.ConcurrentWeakValueHashMap; -import com.intellij.util.containers.ContainerUtil; import com.intellij.util.containers.FilteringIterator; +import kotlin.CollectionsKt; +import kotlin.jvm.functions.Function1; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.TestOnly; import org.jetbrains.kotlin.builtins.KotlinBuiltIns; @@ -70,12 +71,13 @@ public class DiagnosticsWithSuppression implements Diagnostics { // The cache is weak: we're OK with losing it private final Map suppressors = new ConcurrentWeakValueHashMap(); - private final Condition filter = new Condition() { + private final Function1 filter = new Function1() { @Override - public boolean value(Diagnostic diagnostic) { + public Boolean invoke(Diagnostic diagnostic) { return !isSuppressed(diagnostic); } }; + private final DiagnosticsElementsCache elementsCache = new DiagnosticsElementsCache(this, filter); public DiagnosticsWithSuppression(@NotNull BindingContext context, @NotNull Collection diagnostics) { @@ -92,13 +94,18 @@ public class DiagnosticsWithSuppression implements Diagnostics { @NotNull @Override public Iterator iterator() { - return new FilteringIterator(diagnostics.iterator(), filter); + return new FilteringIterator(diagnostics.iterator(), new Condition() { + @Override + public boolean value(Diagnostic diagnostic) { + return filter.invoke(diagnostic); + } + }); } @NotNull @Override public Collection all() { - return ContainerUtil.filter(diagnostics, filter); + return CollectionsKt.filter(diagnostics, filter); } @NotNull diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/diagnostics/SimpleDiagnostics.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/diagnostics/SimpleDiagnostics.kt index 61742186c11..88caa4066c0 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/diagnostics/SimpleDiagnostics.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/diagnostics/SimpleDiagnostics.kt @@ -26,7 +26,7 @@ public class SimpleDiagnostics(diagnostics: Collection) : Diagnostic private val diagnostics = ArrayList(diagnostics) @Suppress("UNCHECKED_CAST") - private val elementsCache = DiagnosticsElementsCache(this, Condition.TRUE as Condition?) + private val elementsCache = DiagnosticsElementsCache(this, { true }) override fun all() = diagnostics