diff --git a/java/java-impl/src/com/intellij/codeInsight/lookup/PsiTypeLookupItem.java b/java/java-impl/src/com/intellij/codeInsight/lookup/PsiTypeLookupItem.java index 1ba18d7f49ce..049ccc3cdf66 100644 --- a/java/java-impl/src/com/intellij/codeInsight/lookup/PsiTypeLookupItem.java +++ b/java/java-impl/src/com/intellij/codeInsight/lookup/PsiTypeLookupItem.java @@ -16,11 +16,15 @@ package com.intellij.codeInsight.lookup; import com.intellij.codeInsight.completion.*; +import com.intellij.diagnostic.LogMessageEx; +import com.intellij.diagnostic.errordialog.Attachment; +import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.editor.ScrollType; import com.intellij.openapi.util.ClassConditionKey; import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.*; +import com.intellij.psi.impl.DebugUtil; import com.intellij.psi.impl.source.PostprocessReformattingAspect; import com.intellij.psi.impl.source.PsiClassReferenceType; import com.intellij.psi.util.PsiUtil; @@ -35,6 +39,7 @@ import java.util.Set; * @author peter */ public class PsiTypeLookupItem extends LookupItem { + private static final Logger LOG = Logger.getInstance("#com.intellij.codeInsight.lookup.PsiTypeLookupItem"); public static final ClassConditionKey CLASS_CONDITION_KEY = ClassConditionKey.create(PsiTypeLookupItem.class); private final boolean myDiamond; private final int myBracketsCount; @@ -234,6 +239,14 @@ public class PsiTypeLookupItem extends LookupItem { if (aClass.getQualifiedName() == null) return; PsiFile file = context.getFile(); int newTail = JavaCompletionUtil.insertClassReference(aClass, file, context.getStartOffset(), context.getTailOffset()); + if (newTail > context.getDocument().getTextLength() || newTail < 0) { + LOG.error(LogMessageEx.createEvent("Invalid offset after insertion ", + "offset=" + newTail + "\n" + + "document=" + context.getDocument() + "\n" + + DebugUtil.currentStackTrace(), + new Attachment(context.getFile().getViewProvider().getVirtualFile()))); + + } context.setTailOffset(newTail); JavaCompletionUtil.shortenReference(file, context.getStartOffset()); PostprocessReformattingAspect.getInstance(context.getProject()).doPostponedFormatting();