From 6c6c1a1cd107343f878022f02106447b520e2a6b Mon Sep 17 00:00:00 2001 From: Svetlana Isakova Date: Thu, 7 Jun 2012 17:07:21 +0400 Subject: [PATCH] addAllMyDataTo with filter method added --- .../lang/resolve/DelegatingBindingTrace.java | 19 +++++++++++++++---- .../lang/resolve/TemporaryBindingTrace.java | 13 +++++++++++-- 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DelegatingBindingTrace.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DelegatingBindingTrace.java index 8eb22fa32f8..b1d4c65fd03 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DelegatingBindingTrace.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DelegatingBindingTrace.java @@ -16,8 +16,10 @@ package org.jetbrains.jet.lang.resolve; +import com.google.common.base.Predicate; import com.google.common.collect.Lists; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.lang.diagnostics.Diagnostic; import org.jetbrains.jet.util.slicedmap.*; @@ -102,15 +104,24 @@ public class DelegatingBindingTrace implements BindingTrace { return result; } - public void addAllMyDataTo(BindingTrace trace) { + public void addAllMyDataTo(@NotNull BindingTrace trace) { + addAllMyDataTo(trace, null, true); + } + + public void addAllMyDataTo(@NotNull BindingTrace trace, @Nullable Predicate filter, boolean commitDiagnostics) { for (Map.Entry, ?> entry : map) { SlicedMapKey slicedMapKey = entry.getKey(); Object value = entry.getValue(); - //noinspection unchecked - trace.record(slicedMapKey.getSlice(), slicedMapKey.getKey(), value); + WritableSlice slice = slicedMapKey.getSlice(); + if (filter == null || filter.apply(slice)) { + //noinspection unchecked + trace.record(slice, slicedMapKey.getKey(), value); + } } - + + if (!commitDiagnostics) return; + for (Diagnostic diagnostic : diagnostics) { trace.report(diagnostic); } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TemporaryBindingTrace.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TemporaryBindingTrace.java index 3122f54397d..3844bccf074 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TemporaryBindingTrace.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TemporaryBindingTrace.java @@ -16,18 +16,22 @@ package org.jetbrains.jet.lang.resolve; +import com.google.common.base.Predicate; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.jet.util.slicedmap.WritableSlice; + /** * @author abreslav */ public class TemporaryBindingTrace extends DelegatingBindingTrace { - public static TemporaryBindingTrace create(BindingTrace trace) { + public static TemporaryBindingTrace create(@NotNull BindingTrace trace) { return new TemporaryBindingTrace(trace); } protected final BindingTrace trace; - protected TemporaryBindingTrace(BindingTrace trace) { + protected TemporaryBindingTrace(@NotNull BindingTrace trace) { super(trace.getBindingContext()); this.trace = trace; } @@ -36,4 +40,9 @@ public class TemporaryBindingTrace extends DelegatingBindingTrace { addAllMyDataTo(trace); clear(); } + + public void commit(@NotNull Predicate filter, boolean commitDiagnostics) { + addAllMyDataTo(trace, filter, commitDiagnostics); + clear(); + } }