mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-03-22 15:19:59 +07:00
add knownIssue section for top issues
GitOrigin-RevId: cb8f2ac42f237cd8010959cb73f8aedadad3cfec
This commit is contained in:
committed by
intellij-monorepo-bot
parent
5ff29dff81
commit
f559bbec12
@@ -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;
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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? {
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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),
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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())
|
||||
|
||||
Reference in New Issue
Block a user