IDEA-87779 My code is deleted on the fly if 'Add unambiguous imports on the fly' option is enabled

This commit is contained in:
Alexey Kudravtsev
2012-07-16 11:07:24 +04:00
parent 28077bde7f
commit 6129fef03d
2 changed files with 23 additions and 1 deletions
@@ -429,4 +429,24 @@ public class ImportHelperTest extends DaemonAnalyzerTestCase {
}
}
public void testAutoImportDoNotBreakCode() throws Throwable {
@NonNls String text = "package x; class S {{ S.<caret>\n Runnable r; }}";
configureByText(StdFileTypes.JAVA, text);
boolean old = CodeInsightSettings.getInstance().ADD_UNAMBIGIOUS_IMPORTS_ON_THE_FLY;
boolean opt = CodeInsightSettings.getInstance().OPTIMIZE_IMPORTS_ON_THE_FLY;
CodeInsightSettings.getInstance().ADD_UNAMBIGIOUS_IMPORTS_ON_THE_FLY = true;
CodeInsightSettings.getInstance().OPTIMIZE_IMPORTS_ON_THE_FLY = true;
DaemonCodeAnalyzerSettings.getInstance().setImportHintEnabled(true);
try {
List<HighlightInfo> errs = highlightErrors();
assertEquals(1, errs.size());
}
finally {
CodeInsightSettings.getInstance().ADD_UNAMBIGIOUS_IMPORTS_ON_THE_FLY = old;
CodeInsightSettings.getInstance().OPTIMIZE_IMPORTS_ON_THE_FLY = opt;
}
}
}
@@ -39,6 +39,7 @@ import com.intellij.openapi.util.Pair;
import com.intellij.openapi.util.TextRange;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiReference;
import com.intellij.util.Processor;
import org.jetbrains.annotations.NotNull;
@@ -102,7 +103,8 @@ public class ShowAutoImportPass extends TextEditorHighlightingPass {
if (!info.hasHint() || info.getSeverity() != HighlightSeverity.ERROR) {
return true;
}
if (TextRange.create(info.getActualStartOffset(), info.getActualEndOffset()).containsOffset(caretOffset)) return true;
PsiReference reference = myFile.findReferenceAt(info.getActualStartOffset());
if (reference != null && reference.getElement().getTextRange().containsOffset(caretOffset)) return true;
infos.add(info);
return true;
}