Implement modificationTracker for CompositeDiagnostics

#KT-5981 Fixed
This commit is contained in:
Pavel V. Talanov
2014-10-10 16:35:42 +04:00
parent 75853e3aad
commit e7cd4bf6cf
3 changed files with 13 additions and 1 deletions
@@ -21,6 +21,7 @@ import org.jetbrains.jet.util.slicedmap.WritableSlice
import com.google.common.collect.ImmutableMap
import org.jetbrains.jet.lang.diagnostics.Diagnostic
import com.intellij.psi.PsiElement
import com.intellij.openapi.util.ModificationTracker
public class CompositeBindingContext private (
private val delegates: List<BindingContext>
@@ -57,9 +58,14 @@ public class CompositeBindingContext private (
private class CompositeDiagnostics(
private val delegates: List<Diagnostics>
) : Diagnostics {
override fun iterator(): Iterator<Diagnostic> {
val emptyStream = listOf<Diagnostic>().stream()
return delegates.fold(emptyStream, { r, t -> r + t.stream()}).iterator()
return delegates.fold(emptyStream, { r, t -> r + t.stream() }).iterator()
}
override val modificationTracker = object : ModificationTracker {
override fun getModificationCount() = delegates.fold(0L, { r, t -> r + t.modificationTracker.getModificationCount() })
}
override fun all(): Collection<Diagnostic> {
@@ -22,6 +22,7 @@ import com.intellij.openapi.util.ModificationTracker
public trait Diagnostics : Iterable<Diagnostic> {
//should not be called on readonly views
//any Diagnostics object returned by BindingContext#getDiagnostics() should implement this property
public val modificationTracker: ModificationTracker
get() = throw IllegalStateException("Trying to obtain modification tracker for Diagnostics object of class $javaClass")
@@ -0,0 +1,5 @@
package simple
// test more than one file for package in JetPositionManager:prepareTypeMapper
fun foo() {
}