diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/ObservableBindingTrace.java b/compiler/frontend/src/org/jetbrains/kotlin/resolve/ObservableBindingTrace.java index d0c449327a6..9077340079e 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/ObservableBindingTrace.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/ObservableBindingTrace.java @@ -97,4 +97,9 @@ public class ObservableBindingTrace implements BindingTrace { public boolean wantsDiagnostics() { return originalTrace.wantsDiagnostics(); } + + @Override + public String toString() { + return "ObservableTrace over " + originalTrace.toString(); + } } diff --git a/compiler/frontend/src/org/jetbrains/kotlin/storage/LockBasedLazyResolveStorageManager.kt b/compiler/frontend/src/org/jetbrains/kotlin/storage/LockBasedLazyResolveStorageManager.kt index 5792629cf97..cf1aa29901e 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/storage/LockBasedLazyResolveStorageManager.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/storage/LockBasedLazyResolveStorageManager.kt @@ -84,5 +84,9 @@ class LockBasedLazyResolveStorageManager(private val storageManager: StorageMana } override fun wantsDiagnostics() = trace.wantsDiagnostics() + + override fun toString(): String { + return "Lock-protected trace of LockBasedLazyResolveStorageManager $storageManager" + } } } diff --git a/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/ExpressionTypingServices.java b/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/ExpressionTypingServices.java index 01f721c29d2..0342abe4db1 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/ExpressionTypingServices.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/ExpressionTypingServices.java @@ -258,12 +258,7 @@ public class ExpressionTypingServices { boolean isFirstStatement = true; for (Iterator iterator = block.iterator(); iterator.hasNext(); ) { // Use filtering trace to keep effect system cache only for one statement - AbstractFilteringTrace traceForSingleStatement = new AbstractFilteringTrace(context.trace, "trace for single statement") { - @Override - protected boolean shouldBeHiddenFromParent(@NotNull WritableSlice slice, K key) { - return slice == BindingContext.EXPRESSION_EFFECTS; - } - }; + AbstractFilteringTrace traceForSingleStatement = new EffectsFilteringTrace(context.trace); newContext = newContext.replaceBindingTrace(traceForSingleStatement); @@ -375,4 +370,14 @@ public class ExpressionTypingServices { return result; } + private static class EffectsFilteringTrace extends AbstractFilteringTrace { + public EffectsFilteringTrace(BindingTrace parentTrace) { + super(parentTrace, "Effects filtering trace"); + } + + @Override + protected boolean shouldBeHiddenFromParent(@NotNull WritableSlice slice, K key) { + return slice == BindingContext.EXPRESSION_EFFECTS; + } + } }