add knownIssue section for top issues

GitOrigin-RevId: cb8f2ac42f237cd8010959cb73f8aedadad3cfec
This commit is contained in:
Gregory.Shrago
2024-09-24 02:43:33 +04:00
committed by intellij-monorepo-bot
parent 5ff29dff81
commit f559bbec12
12 changed files with 98 additions and 55 deletions

View File

@@ -2,11 +2,13 @@
package com.intellij.openapi.editor;
import com.intellij.lang.LanguageExtension;
import com.intellij.openapi.application.AccessToken;
import com.intellij.openapi.extensions.ExtensionPointName;
import com.intellij.openapi.project.Project;
import com.intellij.psi.PsiDocumentManager;
import com.intellij.psi.PsiFile;
import com.intellij.util.KeyedLazyInstance;
import com.intellij.util.SlowOperations;
import org.jetbrains.annotations.NotNull;
/**
@@ -33,9 +35,11 @@ public final class LanguageLineWrapPositionStrategy extends LanguageExtension<Li
LineWrapPositionStrategy result = getDefaultImplementation();
Project project = editor.getProject();
if (project != null && !project.isDisposed()) {
PsiFile psiFile = PsiDocumentManager.getInstance(project).getPsiFile(editor.getDocument());
if (psiFile != null) {
result = INSTANCE.forLanguage(psiFile.getLanguage());
try (AccessToken ignore = SlowOperations.knownIssue("IJPL-162826")) {
PsiFile psiFile = PsiDocumentManager.getInstance(project).getPsiFile(editor.getDocument());
if (psiFile != null) {
result = INSTANCE.forLanguage(psiFile.getLanguage());
}
}
}
return result;

View File

@@ -17,6 +17,7 @@ import com.intellij.openapi.project.DumbAware
import com.intellij.openapi.project.Project
import com.intellij.openapi.vfs.VirtualFile
import com.intellij.psi.PsiDocumentManager
import com.intellij.util.SlowOperations
private class HighlightingReaderModeProvider : ReaderModeProvider {
override fun applyModeChanged(project: Project, editor: Editor, readerMode: Boolean, fileIsOpenAlready: Boolean) {
@@ -94,7 +95,9 @@ private class VisualFormattingLayerReaderModeProvider : ReaderModeProvider {
VisualFormattingLayerService.disableForEditor(editor)
}
if (oldSettings != settings) {
val file = PsiDocumentManager.getInstance(project).getCachedPsiFile(editor.document)
val file = SlowOperations.knownIssue("IJPL-162825").use {
PsiDocumentManager.getInstance(project).getCachedPsiFile(editor.document)
}
if (file != null) {
DaemonCodeAnalyzer.getInstance(project).restart(file)
}

View File

@@ -130,9 +130,9 @@ public final class ShowAutoImportPass extends TextEditorHighlightingPass {
ThreadingAssertions.assertEventDispatchThread();
try (AccessToken ignore = SlowOperations.knownIssue("IDEA-335057, EA-843299")) {
if (!mayAutoImportNow(myFile, true, ThreeState.UNSURE)) return;
}
for (BooleanSupplier autoImportAction : autoImportActions) {
autoImportAction.getAsBoolean();
for (BooleanSupplier autoImportAction : autoImportActions) {
autoImportAction.getAsBoolean();
}
}
}

View File

@@ -13,6 +13,7 @@ import com.intellij.codeWithMe.ClientId;
import com.intellij.ide.IdeTooltip;
import com.intellij.injected.editor.EditorWindow;
import com.intellij.lang.parameterInfo.ParameterInfoHandler;
import com.intellij.openapi.application.AccessToken;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.application.ReadAction;
import com.intellij.openapi.application.WriteIntentReadAction;
@@ -35,6 +36,7 @@ import com.intellij.ui.ExperimentalUI;
import com.intellij.ui.HintHint;
import com.intellij.ui.LightweightHint;
import com.intellij.ui.ScreenUtil;
import com.intellij.util.SlowOperations;
import com.intellij.util.indexing.DumbModeAccessType;
import com.intellij.util.text.CharArrayUtil;
import com.intellij.util.ui.JBUI;
@@ -294,9 +296,16 @@ public final class ParameterInfoController extends ParameterInfoControllerBase {
})
.withDocumentsCommitted(myProject)
.expireWhen(
() -> !myKeepOnHintHidden && !myHint.isVisible() && myLateShowHintCallback == null && !ApplicationManager.getApplication().isHeadlessEnvironment() ||
getCurrentOffset() != context.getOffset() ||
!elementForUpdating.isValid())
() -> {
try (AccessToken ignore = SlowOperations.knownIssue("IJPL-162829")) {
return !myKeepOnHintHidden &&
!myHint.isVisible() &&
myLateShowHintCallback == null &&
!ApplicationManager.getApplication().isHeadlessEnvironment() ||
getCurrentOffset() != context.getOffset() ||
!elementForUpdating.isValid();
}
})
.expireWith(this),
element -> {
if (element != null && continuation != null) {

View File

@@ -15,6 +15,7 @@ import com.intellij.openapi.editor.impl.EditorImpl
import com.intellij.openapi.editor.markup.TextAttributes
import com.intellij.openapi.util.NlsContexts
import com.intellij.ui.LightweightHint
import com.intellij.util.SlowOperations
import com.intellij.util.concurrency.annotations.RequiresEdt
import com.intellij.util.containers.enumMapOf
import com.intellij.util.ui.GraphicsUtil
@@ -75,7 +76,9 @@ class InlayPresentationList(
fun handleClick(e: EditorMouseEvent, pointInsideInlay: Point, fontMetricsStorage: InlayTextMetricsStorage, controlDown: Boolean) {
val entry = findEntryByPoint(fontMetricsStorage, pointInsideInlay) ?: return
entry.handleClick(e, this, controlDown)
SlowOperations.startSection(SlowOperations.ACTION_PERFORM).use {
entry.handleClick(e, this, controlDown)
}
}
private fun findEntryByPoint(fontMetricsStorage: InlayTextMetricsStorage, pointInsideInlay: Point): InlayPresentationEntry? {

View File

@@ -5,6 +5,7 @@ import com.intellij.codeInsight.generation.*;
import com.intellij.icons.AllIcons;
import com.intellij.ide.IdeBundle;
import com.intellij.openapi.actionSystem.*;
import com.intellij.openapi.application.AccessToken;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.editor.PlatformEditorBundle;
import com.intellij.openapi.project.DumbAware;
@@ -22,6 +23,7 @@ import com.intellij.psi.PsiFile;
import com.intellij.ui.*;
import com.intellij.ui.treeStructure.Tree;
import com.intellij.util.ArrayUtil;
import com.intellij.util.SlowOperations;
import com.intellij.util.containers.ContainerUtil;
import com.intellij.util.containers.FactoryMap;
import com.intellij.util.ui.JBInsets;
@@ -150,7 +152,9 @@ public class MemberChooser<T extends ClassMember> extends DialogWrapper implemen
myContainerNodes.clear();
ApplicationManager.getApplication().runReadAction(() -> {
myTreeModel = buildModel();
try (AccessToken ignore = SlowOperations.knownIssue("IJPL-162824")) {
myTreeModel = buildModel();
}
});
myTree.setModel(myTreeModel);

View File

@@ -99,45 +99,47 @@ public class NavigationItemListCellRenderer extends JPanel implements ListCellRe
append(LangBundle.message("label.invalid"), SimpleTextAttributes.ERROR_ATTRIBUTES);
}
else if (value instanceof NavigationItem item) {
ItemPresentation presentation = item.getPresentation();
assert presentation != null: "PSI elements displayed in choose by name lists must return a non-null value from getPresentation(): element " +
item + ", class " + item.getClass().getName();
String name = presentation.getPresentableText();
assert name != null: "PSI elements displayed in choose by name lists must return a non-null value from getPresentation().getPresentableName: element " +
item + ", class " + item.getClass().getName();
Color color = list.getForeground();
boolean isProblemFile;
if (item instanceof PsiElement) {
Project project = ((PsiElement)item).getProject();
VirtualFile virtualFile = PsiUtilCore.getVirtualFile((PsiElement)item);
isProblemFile = virtualFile != null && WolfTheProblemSolver.getInstance(project).isProblemFile(virtualFile);
}
else {
isProblemFile = false;
}
PsiElement psiElement = PSIRenderingUtils.getPsiElement(item);
String name;
Icon icon;
ItemPresentation presentation;
TextAttributes textAttributes;
boolean isProblemFile = false;
try (AccessToken ignore = SlowOperations.knownIssue("IJPL-162822")) {
presentation = item.getPresentation();
assert presentation != null :
"PSI elements displayed in choose by name lists must return a non-null value from getPresentation(): element " +
item +
", class " +
item.getClass().getName();
name = presentation.getPresentableText();
assert name != null :
"PSI elements displayed in choose by name lists must return a non-null value from getPresentation().getPresentableName: element " +
item +
", class " +
item.getClass().getName();
if (psiElement != null && psiElement.isValid()) {
Project project = psiElement.getProject();
PsiElement psiElement = PSIRenderingUtils.getPsiElement(item);
if (psiElement != null && psiElement.isValid()) {
Project project = psiElement.getProject();
VirtualFile virtualFile = PsiUtilCore.getVirtualFile(psiElement);
isProblemFile = virtualFile != null && WolfTheProblemSolver.getInstance(project).isProblemFile(virtualFile);
VirtualFile virtualFile = PsiUtilCore.getVirtualFile(psiElement);
isProblemFile = virtualFile != null && WolfTheProblemSolver.getInstance(project).isProblemFile(virtualFile);
try (AccessToken ignore = SlowOperations.knownIssue("IDEA-333526, EA-659478")) {
Color fileColor = virtualFile == null ? null : getFileBackgroundColor(project, virtualFile);
if (fileColor != null) {
bgColor = fileColor;
}
}
FileStatus status = NavigationItemFileStatus.get(item);
if (status != FileStatus.NOT_CHANGED) {
color = status.getColor();
}
textAttributes = NodeRenderer.getSimpleTextAttributes(presentation).toTextAttributes();
icon = presentation.getIcon(false);
}
FileStatus status = NavigationItemFileStatus.get(item);
if (status != FileStatus.NOT_CHANGED) {
color = status.getColor();
}
final TextAttributes textAttributes = NodeRenderer.getSimpleTextAttributes(presentation).toTextAttributes();
if (isProblemFile) {
textAttributes.setEffectType(EffectType.WAVE_UNDERSCORE);
textAttributes.setEffectColor(JBColor.red);
@@ -145,7 +147,7 @@ public class NavigationItemListCellRenderer extends JPanel implements ListCellRe
textAttributes.setForegroundColor(color);
SimpleTextAttributes nameAttributes = SimpleTextAttributes.fromTextAttributes(textAttributes);
SpeedSearchUtil.appendColoredFragmentForMatcher(name, this, nameAttributes, myMatcher, bgColor, selected);
setIcon(presentation.getIcon(false));
setIcon(icon);
if (myRenderLocation) {
String containerText = presentation.getLocationString();

View File

@@ -4,6 +4,7 @@ package com.intellij.ide.util.treeView
import com.intellij.ide.projectView.PresentationData
import com.intellij.ide.util.treeView.TreeState.CachedPresentationDataImpl
import com.intellij.ui.treeStructure.CachingTreePath
import com.intellij.util.SlowOperations
import com.intellij.util.containers.nullize
import com.intellij.util.ui.tree.TreeUtil
import org.jetbrains.annotations.ApiStatus.Internal
@@ -49,7 +50,9 @@ class CachedTreePresentationData(
val presentation = userObject.presentation
val children = mutableListOf<CachedTreePresentationData>()
val iconData = getIconData(presentation.getIcon(false))
val extraAttrs = (userObject as? TreeNodeWithCacheableAttributes)?.getCacheableAttributes()
val extraAttrs = SlowOperations.knownIssue("IJPL-162819").use {
(userObject as? TreeNodeWithCacheableAttributes)?.getCacheableAttributes()
}
val isLeaf = model.isLeaf(node)
val result = CachedTreePresentationData(
TreeState.PathElement(TreeState.calcId(userObject), TreeState.calcType(userObject), 0, null),

View File

@@ -36,6 +36,7 @@ import com.intellij.platform.PlatformProjectOpenProcessor
import com.intellij.platform.ide.progress.ModalTaskOwner
import com.intellij.platform.ide.progress.runWithModalProgressBlocking
import com.intellij.projectImport.ProjectOpenProcessor.Companion.getImportProvider
import com.intellij.util.SlowOperations
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
import java.io.File
@@ -149,7 +150,9 @@ private class ProjectOrFileChooserDescriptor : OpenProjectFileChooserDescriptor(
override fun isFileSelectable(file: VirtualFile?): Boolean = when {
file == null -> false
file.isDirectory -> super.isFileSelectable(file)
file.isDirectory -> SlowOperations.knownIssue("IJPL-162827").use {
super.isFileSelectable(file)
}
else -> myStandardDescriptor.isFileSelectable(file)
}

View File

@@ -52,6 +52,7 @@ import com.intellij.usages.UsageContextPanel
import com.intellij.usages.UsageView
import com.intellij.usages.UsageViewPresentation
import com.intellij.usages.similarity.clustering.ClusteringSearchSession
import com.intellij.util.SlowOperations
import com.intellij.util.concurrency.NonUrgentExecutor
import com.intellij.util.concurrency.ThreadingAssertions
import com.intellij.util.concurrency.annotations.RequiresBackgroundThread
@@ -167,9 +168,10 @@ open class UsagePreviewPanel @JvmOverloads constructor(project: Project,
if (infos != myCachedSelectedUsageInfos // avoid moving viewport
|| !UsageViewPresentation.arePatternsEqual(myCachedSearchPattern, myPresentation.searchPattern)
|| myCachedReplaceString != myPresentation.replaceString || myCachedCaseSensitive != myPresentation.isCaseSensitive) {
//maybe readaction
WriteIntentReadAction.run {
highlight(infos, myEditor!!, project, myShowTooltipBalloon, HighlighterLayer.ADDITIONAL_SYNTAX)
SlowOperations.knownIssue("IJPL-162820").use {
ReadAction.run<RuntimeException> {
highlight(infos, myEditor!!, project, myShowTooltipBalloon, HighlighterLayer.ADDITIONAL_SYNTAX)
}
}
myCachedSelectedUsageInfos = infos
myCachedSearchPattern = myPresentation.searchPattern

View File

@@ -10,6 +10,7 @@ import com.intellij.execution.junit.JUnitConfiguration;
import com.intellij.execution.junit.JUnitUtil;
import com.intellij.execution.junit.TestObject;
import com.intellij.execution.testDiscovery.TestDiscoveryExtension;
import com.intellij.openapi.application.AccessToken;
import com.intellij.openapi.application.ModalityState;
import com.intellij.openapi.application.ReadAction;
import com.intellij.openapi.command.WriteCommandAction;
@@ -25,6 +26,7 @@ import com.intellij.psi.JavaPsiFacade;
import com.intellij.psi.PsiClass;
import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.rt.execution.junit.RepeatCount;
import com.intellij.util.SlowOperations;
import com.intellij.util.concurrency.AppExecutorUtil;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
@@ -98,7 +100,9 @@ public class JUnitConfigurationModel {
public void apply(final Module module, final JUnitConfiguration configuration, @Nullable ClassEditorField classField) {
final boolean shouldUpdateName = configuration.isGeneratedName();
applyTo(configuration.getPersistentData(), module, classField);
try (AccessToken ignore = SlowOperations.knownIssue("IDEA-359592")) {
applyTo(configuration.getPersistentData(), module, classField);
}
if (shouldUpdateName && !JavaExecutionUtil.isNewName(configuration.getName())) {
configuration.setGeneratedName();
}

View File

@@ -13,8 +13,8 @@ import com.intellij.openapi.ui.popup.JBPopupFactory
import com.intellij.openapi.ui.popup.ListPopup
import com.intellij.openapi.util.Condition
import com.intellij.openapi.util.NlsSafe
import com.intellij.openapi.util.registry.Registry
import com.intellij.openapi.wm.ToolWindowManager
import com.intellij.util.SlowOperations
import com.intellij.util.text.trimMiddle
import com.intellij.util.ui.SwingHelper
import com.jetbrains.python.PyBundle
@@ -58,17 +58,19 @@ class PySdkPopupFactory(val module: Module) {
val group = DefaultActionGroup()
val interpreterList = PyConfigurableInterpreterList.getInstance(module.project)
val moduleSdksByTypes = groupModuleSdksByTypes(interpreterList.getAllPythonSdks(module.project, module), module) {
!it.sdkSeemsValid ||
PythonSdkType.hasInvalidRemoteCredentials(it) ||
PythonSdkType.isIncompleteRemote(it) ||
!LanguageLevel.SUPPORTED_LEVELS.contains(PythonSdkType.getLanguageLevelForSdk(it))
val moduleSdksByTypes = SlowOperations.knownIssue("PY-76167").use {
groupModuleSdksByTypes(interpreterList.getAllPythonSdks(module.project, module), module) {
!it.sdkSeemsValid ||
PythonSdkType.hasInvalidRemoteCredentials(it) ||
PythonSdkType.isIncompleteRemote(it) ||
!LanguageLevel.SUPPORTED_LEVELS.contains(PythonSdkType.getLanguageLevelForSdk(it))
}
}
val currentSdk = module.pythonSdk
val model = interpreterList.model
val targetModuleSitsOn = PythonInterpreterTargetEnvironmentFactory.getTargetModuleResidesOn(module)
PyRenderedSdkType.values().forEachIndexed { index, type ->
PyRenderedSdkType.entries.forEachIndexed { index, type ->
if (type in moduleSdksByTypes) {
if (index != 0) group.addSeparator()
group.addAll(moduleSdksByTypes
@@ -84,7 +86,11 @@ class PySdkPopupFactory(val module: Module) {
if (moduleSdksByTypes.isNotEmpty()) group.addSeparator()
val addNewInterpreterPopupGroup = DefaultActionGroup(PyBundle.message("python.sdk.action.add.new.interpreter.text"), true)
addNewInterpreterPopupGroup.addAll(collectAddInterpreterActions(ModuleOrProject.ModuleAndProject(module)) { switchToSdk(module, it, currentSdk) })
addNewInterpreterPopupGroup.addAll(collectAddInterpreterActions(ModuleOrProject.ModuleAndProject(module)) { sdk ->
SlowOperations.knownIssue("PY-76167").use {
switchToSdk(module, sdk, currentSdk)
}
})
group.add(addNewInterpreterPopupGroup)
group.addSeparator()
group.add(InterpreterSettingsAction())