From e7cd4bf6cf45f716bd42429fa796c66a84b40529 Mon Sep 17 00:00:00 2001 From: "Pavel V. Talanov" Date: Fri, 10 Oct 2014 16:35:42 +0400 Subject: [PATCH] Implement modificationTracker for CompositeDiagnostics #KT-5981 Fixed --- .../jetbrains/jet/lang/resolve/CompositeBindingContext.kt | 8 +++++++- .../src/org/jetbrains/jet/lang/resolve/Diagnostics.kt | 1 + idea/testData/debugger/tinyApp/src/forTests/simple.kt | 5 +++++ 3 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 idea/testData/debugger/tinyApp/src/forTests/simple.kt diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/CompositeBindingContext.kt b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/CompositeBindingContext.kt index 333c1996cca..9f2027d267b 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/CompositeBindingContext.kt +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/CompositeBindingContext.kt @@ -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 @@ -57,9 +58,14 @@ public class CompositeBindingContext private ( private class CompositeDiagnostics( private val delegates: List ) : Diagnostics { + override fun iterator(): Iterator { val emptyStream = listOf().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 { diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/Diagnostics.kt b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/Diagnostics.kt index 600c8001933..b0ed1915352 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/Diagnostics.kt +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/Diagnostics.kt @@ -22,6 +22,7 @@ import com.intellij.openapi.util.ModificationTracker public trait Diagnostics : Iterable { //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") diff --git a/idea/testData/debugger/tinyApp/src/forTests/simple.kt b/idea/testData/debugger/tinyApp/src/forTests/simple.kt new file mode 100644 index 00000000000..64c3860e09e --- /dev/null +++ b/idea/testData/debugger/tinyApp/src/forTests/simple.kt @@ -0,0 +1,5 @@ +package simple + +// test more than one file for package in JetPositionManager:prepareTypeMapper +fun foo() { +}