don't perform expensive PsiAnchor and smart pointer sanity checks during performance tests

This commit is contained in:
peter
2019-02-21 22:05:50 +01:00
parent 88b9742db6
commit cb08218cfd
2 changed files with 8 additions and 3 deletions
@@ -21,6 +21,7 @@ import com.intellij.injected.editor.VirtualFileWindow;
import com.intellij.lang.Language;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.application.ReadAction;
import com.intellij.openapi.application.impl.ApplicationInfoImpl;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.editor.Document;
import com.intellij.openapi.fileEditor.FileDocumentManager;
@@ -62,8 +63,11 @@ public abstract class PsiAnchor {
PsiUtilCore.ensureValid(element);
PsiAnchor anchor = doCreateAnchor(element);
if (ApplicationManager.getApplication().isUnitTestMode() && !element.equals(anchor.retrieve())) {
LOG.error("Cannot restore element " + element + " of " + element.getClass() + " from anchor " + anchor);
if (ApplicationManager.getApplication().isUnitTestMode() && !ApplicationInfoImpl.isInStressTest()) {
PsiElement restored = anchor.retrieve();
if (!element.equals(restored)) {
LOG.error("Cannot restore element " + element + " of " + element.getClass() + " from anchor " + anchor + ", getting " + restored + " instead");
}
}
return anchor;
}
@@ -19,6 +19,7 @@ package com.intellij.psi.impl.smartPointers;
import com.intellij.lang.LanguageUtil;
import com.intellij.lang.injection.InjectedLanguageManager;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.application.impl.ApplicationInfoImpl;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.editor.Document;
import com.intellij.openapi.fileEditor.FileDocumentManager;
@@ -150,7 +151,7 @@ class SmartPsiElementPointerImpl<E extends PsiElement> implements SmartPointerEx
PsiFile containingFile,
boolean forInjected) {
SmartPointerElementInfo elementInfo = doCreateElementInfo(manager.getProject(), element, containingFile, forInjected);
if (ApplicationManager.getApplication().isUnitTestMode()) {
if (ApplicationManager.getApplication().isUnitTestMode() && !ApplicationInfoImpl.isInStressTest()) {
PsiElement restored = elementInfo.restoreElement(manager);
if (!element.equals(restored)) {
// likely cause: PSI having isPhysical==true, but which can't be restored by containing file and range. To fix, make isPhysical return false