diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/completion/HeavyNormalCompletionTest.groovy b/java/java-tests/testSrc/com/intellij/codeInsight/completion/HeavyNormalCompletionTest.groovy index b9620a18b0ab..45a3f818df3f 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/completion/HeavyNormalCompletionTest.groovy +++ b/java/java-tests/testSrc/com/intellij/codeInsight/completion/HeavyNormalCompletionTest.groovy @@ -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 }' + + 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 + } + } diff --git a/platform/lang-impl/src/com/intellij/codeInsight/completion/CodeCompletionHandlerBase.java b/platform/lang-impl/src/com/intellij/codeInsight/completion/CodeCompletionHandlerBase.java index c4ff55b2972a..57b73230a86a 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/completion/CodeCompletionHandlerBase.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/completion/CodeCompletionHandlerBase.java @@ -780,6 +780,7 @@ public class CodeCompletionHandlerBase { } final Document document = cached.second; assert document != null; + file.putUserData(FILE_COPY_KEY, new SoftReference>(Trinity.create(copy, document, combinedOffsets))); document.setText(file.getText()); return copy; }