diagnose unexpected character in chained completion (EA-37306)

This commit is contained in:
peter
2012-07-25 16:57:59 +02:00
parent 3b293fb1b8
commit 53ce72fc8c
3 changed files with 23 additions and 3 deletions
@@ -19,12 +19,16 @@ import com.intellij.codeInsight.lookup.LookupElement;
import com.intellij.codeInsight.lookup.LookupElementDecorator;
import com.intellij.codeInsight.lookup.LookupElementPresentation;
import com.intellij.codeInsight.lookup.TypedLookupItem;
import com.intellij.diagnostic.LogMessageEx;
import com.intellij.diagnostic.errordialog.Attachment;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.editor.Document;
import com.intellij.openapi.util.ClassConditionKey;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.psi.*;
import com.intellij.psi.codeStyle.CodeStyleManager;
import com.intellij.psi.codeStyle.CodeStyleSettingsManager;
import com.intellij.psi.impl.DebugUtil;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.util.text.CharArrayUtil;
import gnu.trove.THashSet;
@@ -37,6 +41,7 @@ import java.util.Set;
* @author peter
*/
public class JavaChainLookupElement extends LookupElementDecorator<LookupElement> implements TypedLookupItem {
private static final Logger LOG = Logger.getInstance("#com.intellij.codeInsight.completion.JavaChainLookupElement");
public static final ClassConditionKey<JavaChainLookupElement> CLASS_CONDITION_KEY = ClassConditionKey.create(JavaChainLookupElement.class);
private final LookupElement myQualifier;
@@ -112,7 +117,14 @@ public class JavaChainLookupElement extends LookupElementDecorator<LookupElement
}
final char atTail = document.getCharsSequence().charAt(context.getTailOffset() - 1);
assert atTail == ';' : atTail;
if (atTail != ';') {
LOG.error(LogMessageEx.createEvent("Unexpected character",
"atTail=" + atTail + "\n" +
"offset=" + context.getTailOffset() + "\n" +
DebugUtil.currentStackTrace(),
new Attachment(context.getDocument())));
}
document.replaceString(context.getTailOffset() - 1, context.getTailOffset(), ".");
CompletionUtil.emulateInsertion(getDelegate(), context.getTailOffset(), context);
@@ -244,7 +244,7 @@ public class PsiTypeLookupItem extends LookupItem {
"offset=" + newTail + "\n" +
"document=" + context.getDocument() + "\n" +
DebugUtil.currentStackTrace(),
new Attachment(context.getFile().getViewProvider().getVirtualFile())));
new Attachment(context.getDocument())));
}
context.setTailOffset(newTail);