IDEA-82638 Clicking CTRL+ALT+L on 4K lines spring config XML file freezes idea forever

improving file reference performance under web roots
This commit is contained in:
Dmitry Avdeev
2012-03-16 14:10:23 +04:00
parent 2e32c7c5b1
commit a71fdfb969
@@ -65,25 +65,6 @@ public class FileReference implements FileReferenceOwner, PsiPolyVariantReferenc
private static final Logger LOG = Logger.getInstance("#com.intellij.psi.impl.source.resolve.reference.impl.providers.FileReference");
public static final FileReference[] EMPTY = new FileReference[0];
private static final TObjectHashingStrategy<ResolveResult> RESOLVE_RESULT_HASHING_STRATEGY = new TObjectHashingStrategy<ResolveResult>() {
@Override
public int computeHashCode(ResolveResult object) {
PsiFileSystemItem fileSystemItem = (PsiFileSystemItem)object.getElement();
if (fileSystemItem == null) {
return 0;
}
VirtualFile file = fileSystemItem.getVirtualFile();
return file == null ? 0 : file.hashCode();
}
@Override
public boolean equals(ResolveResult o1, ResolveResult o2) {
PsiFileSystemItem element1 = (PsiFileSystemItem)o1.getElement();
PsiFileSystemItem element2 = (PsiFileSystemItem)o2.getElement();
if (element1 == null || element2 == null) return Comparing.equal(element1, element2);
return Comparing.equal(element1.getVirtualFile(), element2.getVirtualFile());
}
};
private static final TObjectHashingStrategy<PsiElement> VARIANTS_HASHING_STRATEGY = new TObjectHashingStrategy<PsiElement>() {
@Override
@@ -158,7 +139,7 @@ public class FileReference implements FileReferenceOwner, PsiPolyVariantReferenc
return new ResolveResult[] { new PsiElementResolveResult(getElement().getContainingFile())};
}
final Collection<PsiFileSystemItem> contexts = getContexts();
final Collection<ResolveResult> result = new THashSet<ResolveResult>(RESOLVE_RESULT_HASHING_STRATEGY);
final Collection<ResolveResult> result = new THashSet<ResolveResult>();
for (final PsiFileSystemItem context : contexts) {
if (context != null) {
innerResolveInContext(referenceText, context, result, caseSensitive);