diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/JavaGenerateMemberCompletionContributor.java b/java/java-impl/src/com/intellij/codeInsight/completion/JavaGenerateMemberCompletionContributor.java index 8ae9622f3440..e636ab4fc9b4 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaGenerateMemberCompletionContributor.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaGenerateMemberCompletionContributor.java @@ -18,6 +18,7 @@ package com.intellij.codeInsight.completion; import com.intellij.codeInsight.generation.*; import com.intellij.codeInsight.lookup.LookupElement; import com.intellij.codeInsight.lookup.LookupElementBuilder; +import com.intellij.codeInspection.ex.GlobalInspectionContextBase; import com.intellij.icons.AllIcons; import com.intellij.openapi.util.Iconable; import com.intellij.openapi.util.Key; @@ -30,10 +31,7 @@ import com.intellij.util.VisibilityUtil; import com.intellij.util.containers.ContainerUtil; import javax.swing.*; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; -import java.util.Set; +import java.util.*; import static com.intellij.patterns.PlatformPatterns.psiElement; @@ -137,6 +135,17 @@ public class JavaGenerateMemberCompletionContributor { List> newInfos = GenerateMembersUtil .insertMembersAtOffset(context.getFile(), context.getStartOffset(), infos); if (!newInfos.isEmpty()) { + final List elements = new ArrayList(); + for (GenerationInfo member : newInfos) { + if (!(member instanceof TemplateGenerationInfo)) { + final PsiMember psiMember = member.getPsiMember(); + if (psiMember != null) { + elements.add(psiMember); + } + } + } + + GlobalInspectionContextBase.cleanupElements(context.getProject(), null, elements.toArray(new PsiElement[elements.size()])); newInfos.get(0).positionCaret(context.getEditor(), true); } } diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionTest.groovy b/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionTest.groovy index 3bf3f6fbe428..dafb0ea9445b 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionTest.groovy +++ b/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionTest.groovy @@ -27,6 +27,7 @@ import com.intellij.psi.PsiDocumentManager import com.intellij.psi.PsiMethod import com.intellij.psi.codeStyle.CodeStyleSettingsManager import com.intellij.psi.codeStyle.CommonCodeStyleSettings +import com.siyeh.ig.style.UnqualifiedFieldAccessInspection public class NormalCompletionTest extends LightFixtureCompletionTestCase { @Override @@ -1484,5 +1485,21 @@ class Bar { myFixture.assertPreferredCompletionItems(0, "xcreateZoo", "xcreateElephant"); } + public void "test code cleanup during completion generation"() { + myFixture.configureByText "a.java", "class Foo {int i; ge}" + def inspection = new UnqualifiedFieldAccessInspection() + try { + myFixture.enableInspections(inspection) + myFixture.complete(CompletionType.BASIC) + myFixture.checkResult '''class Foo {int i; + public int getI() { + return this.i; + } +}''' + } + finally { + myFixture.disableInspections(inspection) + } + } } diff --git a/platform/analysis-impl/src/com/intellij/codeInspection/ex/GlobalInspectionContextBase.java b/platform/analysis-impl/src/com/intellij/codeInspection/ex/GlobalInspectionContextBase.java index 4372a5944a2f..b284780ae278 100644 --- a/platform/analysis-impl/src/com/intellij/codeInspection/ex/GlobalInspectionContextBase.java +++ b/platform/analysis-impl/src/com/intellij/codeInspection/ex/GlobalInspectionContextBase.java @@ -438,7 +438,7 @@ public class GlobalInspectionContextBase extends UserDataHolderBase implements G }; Application application = ApplicationManager.getApplication(); - if (application.isWriteAccessAllowed()) { + if (application.isWriteAccessAllowed() && !application.isUnitTestMode()) { application.invokeLater(cleanupRunnable); } else {