don't drop all caches on second completion invocation in the same place after the copy has already been reused

This commit is contained in:
peter
2013-11-27 17:58:46 +01:00
parent c19e16300f
commit 25eb9fc13d
2 changed files with 20 additions and 0 deletions
@@ -20,6 +20,7 @@ import com.intellij.openapi.vfs.LocalFileSystem
import com.intellij.openapi.vfs.VirtualFile
import com.intellij.psi.JavaPsiFacade
import com.intellij.psi.PsiClass
import com.intellij.psi.PsiDocumentManager
import com.intellij.psi.PsiManager
import com.intellij.psi.search.GlobalSearchScope
import com.intellij.psi.util.PsiTreeUtil
@@ -150,4 +151,22 @@ public class Test {
assert oldCount == PsiManager.getInstance(project).modificationTracker.javaStructureModificationCount
}
public void testNoJavaStructureModificationOnSecondInvocationAfterTyping() {
myFixture.configureByText 'a.java', 'class Foo { Xxxxx<caret> }'
def tracker = PsiManager.getInstance(project).modificationTracker
def oldCount = tracker.javaStructureModificationCount
assert !myFixture.completeBasic()
assert oldCount == tracker.javaStructureModificationCount
myFixture.type 'x'
PsiDocumentManager.getInstance(project).commitAllDocuments()
assert oldCount != tracker.javaStructureModificationCount
oldCount = tracker.javaStructureModificationCount
assert !myFixture.completeBasic()
assert !myFixture.completeBasic()
assert oldCount == tracker.javaStructureModificationCount
}
}
@@ -780,6 +780,7 @@ public class CodeCompletionHandlerBase {
}
final Document document = cached.second;
assert document != null;
file.putUserData(FILE_COPY_KEY, new SoftReference<Trinity<PsiFile,Document, Long>>(Trinity.create(copy, document, combinedOffsets)));
document.setText(file.getText());
return copy;
}