Implement modificationTracker for CompositeDiagnostics
#KT-5981 Fixed
This commit is contained in:
@@ -21,6 +21,7 @@ import org.jetbrains.jet.util.slicedmap.WritableSlice
|
|||||||
import com.google.common.collect.ImmutableMap
|
import com.google.common.collect.ImmutableMap
|
||||||
import org.jetbrains.jet.lang.diagnostics.Diagnostic
|
import org.jetbrains.jet.lang.diagnostics.Diagnostic
|
||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
|
import com.intellij.openapi.util.ModificationTracker
|
||||||
|
|
||||||
public class CompositeBindingContext private (
|
public class CompositeBindingContext private (
|
||||||
private val delegates: List<BindingContext>
|
private val delegates: List<BindingContext>
|
||||||
@@ -57,9 +58,14 @@ public class CompositeBindingContext private (
|
|||||||
private class CompositeDiagnostics(
|
private class CompositeDiagnostics(
|
||||||
private val delegates: List<Diagnostics>
|
private val delegates: List<Diagnostics>
|
||||||
) : Diagnostics {
|
) : Diagnostics {
|
||||||
|
|
||||||
override fun iterator(): Iterator<Diagnostic> {
|
override fun iterator(): Iterator<Diagnostic> {
|
||||||
val emptyStream = listOf<Diagnostic>().stream()
|
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> {
|
override fun all(): Collection<Diagnostic> {
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ import com.intellij.openapi.util.ModificationTracker
|
|||||||
|
|
||||||
public trait Diagnostics : Iterable<Diagnostic> {
|
public trait Diagnostics : Iterable<Diagnostic> {
|
||||||
//should not be called on readonly views
|
//should not be called on readonly views
|
||||||
|
//any Diagnostics object returned by BindingContext#getDiagnostics() should implement this property
|
||||||
public val modificationTracker: ModificationTracker
|
public val modificationTracker: ModificationTracker
|
||||||
get() = throw IllegalStateException("Trying to obtain modification tracker for Diagnostics object of class $javaClass")
|
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() {
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user