IDEA-66899 Completing enum constant defined in the same class (private) will insert full FQN (including parent class name) instead of EnumName.ENUM_VALUE

This commit is contained in:
peter
2011-03-28 17:26:37 +02:00
parent 27e9b343a7
commit 943c822123
4 changed files with 27 additions and 1 deletions
@@ -6,6 +6,7 @@ import com.intellij.codeInsight.completion.CodeCompletionFeatures;
import com.intellij.codeInsight.completion.InsertionContext;
import com.intellij.featureStatistics.FeatureUsageTracker;
import com.intellij.psi.*;
import com.intellij.psi.codeStyle.JavaCodeStyleManager;
import com.intellij.psi.util.PsiTreeUtil;
import org.jetbrains.annotations.NotNull;
@@ -35,6 +36,12 @@ public class VariableLookupItem extends LookupItem<PsiVariable> implements Typed
public void handleInsert(InsertionContext context) {
super.handleInsert(context);
PsiDocumentManager.getInstance(context.getProject()).commitDocument(context.getDocument());
PsiReferenceExpression ref = PsiTreeUtil.findElementOfClassAtOffset(context.getFile(), context.getTailOffset() - 1, PsiReferenceExpression.class, false);
if (ref != null) {
JavaCodeStyleManager.getInstance(context.getProject()).shortenClassReferences(ref);
}
final char completionChar = context.getCompletionChar();
if (completionChar == '=') {
context.setAddCompletionChar(false);
@@ -53,7 +60,6 @@ public class VariableLookupItem extends LookupItem<PsiVariable> implements Typed
}
else if (completionChar == '!' && PsiType.BOOLEAN.isAssignableFrom(getObject().getType())) {
context.setAddCompletionChar(false);
final PsiReferenceExpression ref = PsiTreeUtil.findElementOfClassAtOffset(context.getFile(), context.getTailOffset() - 1, PsiReferenceExpression.class, false);
if (ref != null) {
FeatureUsageTracker.getInstance().triggerFeatureUsed(CodeCompletionFeatures.EXCLAMATION_FINISH);
context.getDocument().insertString(ref.getTextRange().getStartOffset(), "!");
@@ -0,0 +1,9 @@
class Foo {
{
Bar b = FOOOO<caret>
}
enum Bar {
FOOOOOOO
}
}
@@ -0,0 +1,9 @@
class Foo {
{
Bar b = Bar.FOOOOOOO<caret>
}
enum Bar {
FOOOOOOO
}
}
@@ -514,6 +514,8 @@ public class NormalCompletionTest extends LightFixtureCompletionTestCase {
public void testFieldWithCastingCaret() throws Throwable { doTest(); }
public void testInnerEnumConstant() throws Throwable { doTest('\n'); }
public void testMethodReturnType() throws Throwable {
doTest();
}