code cleanup also for code generation on completion

This commit is contained in:
Anna Kozlova
2015-01-14 13:25:02 +01:00
parent 0015f09cc1
commit f90ba61bcf
3 changed files with 31 additions and 5 deletions
@@ -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<PsiGenerationInfo<PsiMethod>> newInfos = GenerateMembersUtil
.insertMembersAtOffset(context.getFile(), context.getStartOffset(), infos);
if (!newInfos.isEmpty()) {
final List<PsiElement> elements = new ArrayList<PsiElement>();
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);
}
}
@@ -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<caret>}"
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)
}
}
}
@@ -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 {