mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
diagnose unexpected character in chained completion (EA-37306)
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
package com.intellij.diagnostic.errordialog;
|
||||
|
||||
import com.intellij.openapi.editor.Document;
|
||||
import com.intellij.openapi.fileEditor.FileDocumentManager;
|
||||
import com.intellij.openapi.fileEditor.impl.LoadTextUtil;
|
||||
import com.intellij.openapi.util.io.FileUtil;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.Base64Converter;
|
||||
@@ -27,6 +28,13 @@ public class Attachment {
|
||||
myBytes = getBytes(content);
|
||||
}
|
||||
|
||||
public Attachment(Document document) {
|
||||
VirtualFile file = FileDocumentManager.getInstance().getFile(document);
|
||||
myPath = file != null ? file.getPath() : "unknown.txt";
|
||||
myDisplayText = document.getText();
|
||||
myBytes = getBytes(myDisplayText);
|
||||
}
|
||||
|
||||
public Attachment(@NotNull VirtualFile file) {
|
||||
myPath = file.getPresentableUrl();
|
||||
myBytes = getBytes(file);
|
||||
|
||||
Reference in New Issue
Block a user