From 5d19cf105844ebce296d0fdc7419e5c820a820b8 Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Thu, 20 Jul 2023 12:27:30 +0200 Subject: [PATCH] encapsulate AnnotationSessionImpl creation to make it possible to add more info there GitOrigin-RevId: 02b20264bcc3d4a96ca560440730235ea98c772d --- .../openapi/compiler/util/InspectionValidatorWrapper.java | 4 ++-- .../codeInsight/daemon/impl/GeneralHighlightingPass.java | 2 +- .../daemon/impl/analysis}/AnnotationSessionImpl.java | 7 ++++--- .../daemon/impl/analysis/HighlightInfoHolder.java | 1 - .../codeInspection/ExternalAnnotatorInspectionVisitor.java | 4 ++-- .../intellij/codeInsight/daemon/impl/ExternalToolPass.java | 4 ++-- .../testFramework/fixtures/CodeInsightTestUtil.java | 5 +++-- .../src/org/intellij/plugins/xpathView/util/MyPsiUtil.java | 4 ++-- .../xml/highlighting/DomElementAnnotationsManagerImpl.java | 4 ++-- .../com/intellij/util/xml/DomHighlightingLiteTest.java | 6 +++--- 10 files changed, 21 insertions(+), 20 deletions(-) rename platform/analysis-impl/src/com/intellij/{lang/annotation => codeInsight/daemon/impl/analysis}/AnnotationSessionImpl.java (85%) diff --git a/java/compiler/impl/src/com/intellij/openapi/compiler/util/InspectionValidatorWrapper.java b/java/compiler/impl/src/com/intellij/openapi/compiler/util/InspectionValidatorWrapper.java index e9844f165f7b..00f48e4572bf 100644 --- a/java/compiler/impl/src/com/intellij/openapi/compiler/util/InspectionValidatorWrapper.java +++ b/java/compiler/impl/src/com/intellij/openapi/compiler/util/InspectionValidatorWrapper.java @@ -11,7 +11,7 @@ import com.intellij.codeInspection.ex.Tools; import com.intellij.compiler.options.ValidationConfiguration; import com.intellij.lang.ExternalLanguageAnnotators; import com.intellij.lang.annotation.Annotation; -import com.intellij.lang.annotation.AnnotationSessionImpl; +import com.intellij.codeInsight.daemon.impl.analysis.AnnotationSessionImpl; import com.intellij.lang.annotation.ExternalAnnotator; import com.intellij.lang.annotation.HighlightSeverity; import com.intellij.lang.xml.XMLLanguage; @@ -329,7 +329,7 @@ public class InspectionValidatorWrapper implements Validator { private Map runXmlFileSchemaValidation(@NotNull XmlFile xmlFile) { Map problemsMap = new LinkedHashMap<>(); - return AnnotationSessionImpl.withSession(xmlFile, false, holder -> { + return AnnotationSessionImpl.computeWithSession(xmlFile, false, holder -> { List> annotators = ExternalLanguageAnnotators.allForFile(XMLLanguage.INSTANCE, xmlFile); for (ExternalAnnotator annotator : annotators) { processAnnotator(xmlFile, holder, annotator); diff --git a/platform/analysis-impl/src/com/intellij/codeInsight/daemon/impl/GeneralHighlightingPass.java b/platform/analysis-impl/src/com/intellij/codeInsight/daemon/impl/GeneralHighlightingPass.java index 61e86c15ba08..aa2f8e945448 100644 --- a/platform/analysis-impl/src/com/intellij/codeInsight/daemon/impl/GeneralHighlightingPass.java +++ b/platform/analysis-impl/src/com/intellij/codeInsight/daemon/impl/GeneralHighlightingPass.java @@ -10,7 +10,7 @@ import com.intellij.codeInsight.daemon.impl.analysis.HighlightInfoHolder; import com.intellij.codeInsight.daemon.impl.analysis.HighlightingLevelManager; import com.intellij.codeInsight.highlighting.PassRunningAssert; import com.intellij.codeInsight.problems.ProblemImpl; -import com.intellij.lang.annotation.AnnotationSessionImpl; +import com.intellij.codeInsight.daemon.impl.analysis.AnnotationSessionImpl; import com.intellij.lang.annotation.HighlightSeverity; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.diagnostic.Logger; diff --git a/platform/analysis-impl/src/com/intellij/lang/annotation/AnnotationSessionImpl.java b/platform/analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/AnnotationSessionImpl.java similarity index 85% rename from platform/analysis-impl/src/com/intellij/lang/annotation/AnnotationSessionImpl.java rename to platform/analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/AnnotationSessionImpl.java index b2aa4a7c9d55..d1b0e2e21af6 100644 --- a/platform/analysis-impl/src/com/intellij/lang/annotation/AnnotationSessionImpl.java +++ b/platform/analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/AnnotationSessionImpl.java @@ -1,7 +1,8 @@ // Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. -package com.intellij.lang.annotation; +package com.intellij.codeInsight.daemon.impl.analysis; import com.intellij.codeInsight.daemon.impl.AnnotationHolderImpl; +import com.intellij.lang.annotation.AnnotationSession; import com.intellij.openapi.util.Key; import com.intellij.openapi.util.TextRange; import com.intellij.openapi.util.UserDataHolder; @@ -20,7 +21,7 @@ public class AnnotationSessionImpl extends AnnotationSession { private final UserDataHolder myDataHolder = new UserDataHolderBase(); @ApiStatus.Internal - public AnnotationSessionImpl(@NotNull PsiFile file) { + AnnotationSessionImpl(@NotNull PsiFile file) { super(file); } @@ -47,7 +48,7 @@ public class AnnotationSessionImpl extends AnnotationSession { myDataHolder.putUserData(key, value); } - public static T withSession(@NotNull PsiFile psiFile, boolean batchMode, @NotNull Function runnable) { + public static T computeWithSession(@NotNull PsiFile psiFile, boolean batchMode, @NotNull Function runnable) { AnnotationHolderImpl holder = new AnnotationHolderImpl(new AnnotationSessionImpl(psiFile), batchMode); try { return runnable.apply(holder); diff --git a/platform/analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightInfoHolder.java b/platform/analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightInfoHolder.java index 4f4a64c4b5b5..c654f498c932 100644 --- a/platform/analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightInfoHolder.java +++ b/platform/analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightInfoHolder.java @@ -4,7 +4,6 @@ package com.intellij.codeInsight.daemon.impl.analysis; import com.intellij.codeInsight.daemon.impl.HighlightInfo; import com.intellij.codeInsight.daemon.impl.HighlightInfoFilter; import com.intellij.lang.annotation.AnnotationSession; -import com.intellij.lang.annotation.AnnotationSessionImpl; import com.intellij.lang.annotation.HighlightSeverity; import com.intellij.openapi.editor.colors.TextAttributesScheme; import com.intellij.openapi.project.Project; diff --git a/platform/analysis-impl/src/com/intellij/codeInspection/ExternalAnnotatorInspectionVisitor.java b/platform/analysis-impl/src/com/intellij/codeInspection/ExternalAnnotatorInspectionVisitor.java index d14e90d6d53d..b05388b302ac 100644 --- a/platform/analysis-impl/src/com/intellij/codeInspection/ExternalAnnotatorInspectionVisitor.java +++ b/platform/analysis-impl/src/com/intellij/codeInspection/ExternalAnnotatorInspectionVisitor.java @@ -4,7 +4,7 @@ package com.intellij.codeInspection; import com.intellij.codeInsight.intention.IntentionAction; import com.intellij.codeInsight.intention.preview.IntentionPreviewInfo; import com.intellij.codeInsight.intention.preview.IntentionPreviewUtils; -import com.intellij.lang.annotation.AnnotationSessionImpl; +import com.intellij.codeInsight.daemon.impl.analysis.AnnotationSessionImpl; import com.intellij.lang.annotation.ExternalAnnotator; import com.intellij.openapi.application.ReadAction; import com.intellij.openapi.diagnostic.Logger; @@ -53,7 +53,7 @@ public class ExternalAnnotatorInspectionVisitor extends PsiElementVisitor { if (annotationResult == null) { return ProblemDescriptor.EMPTY_ARRAY; } - return ReadAction.compute(() -> AnnotationSessionImpl.withSession(file, true, annotationHolder -> { + return ReadAction.compute(() -> AnnotationSessionImpl.computeWithSession(file, true, annotationHolder -> { annotationHolder.applyExternalAnnotatorWithContext(file, annotator, annotationResult); annotationHolder.assertAllAnnotationsCreated(); return ProblemDescriptorUtil.convertToProblemDescriptors(annotationHolder, file); diff --git a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/ExternalToolPass.java b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/ExternalToolPass.java index 39ff4aefa006..9fd47a8c6ae6 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/ExternalToolPass.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/ExternalToolPass.java @@ -9,7 +9,7 @@ import com.intellij.codeInspection.ex.InspectionProfileWrapper; import com.intellij.diagnostic.PluginException; import com.intellij.lang.ExternalLanguageAnnotators; import com.intellij.lang.LangBundle; -import com.intellij.lang.annotation.AnnotationSessionImpl; +import com.intellij.codeInsight.daemon.impl.analysis.AnnotationSessionImpl; import com.intellij.lang.annotation.ExternalAnnotator; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.application.ReadAction; @@ -141,7 +141,7 @@ public class ExternalToolPass extends ProgressableTextEditorHighlightingPass { } long modificationStampBefore = myDocument.getModificationStamp(); - AnnotationSessionImpl.withSession(myFile, false, annotationHolder -> { + AnnotationSessionImpl.computeWithSession(myFile, false, annotationHolder -> { Update update = new Update(myFile) { @Override public void setRejected() { diff --git a/platform/testFramework/src/com/intellij/testFramework/fixtures/CodeInsightTestUtil.java b/platform/testFramework/src/com/intellij/testFramework/fixtures/CodeInsightTestUtil.java index 565846ad55df..f69317a80ec6 100644 --- a/platform/testFramework/src/com/intellij/testFramework/fixtures/CodeInsightTestUtil.java +++ b/platform/testFramework/src/com/intellij/testFramework/fixtures/CodeInsightTestUtil.java @@ -2,6 +2,7 @@ package com.intellij.testFramework.fixtures; import com.intellij.codeInsight.daemon.impl.*; +import com.intellij.codeInsight.daemon.impl.analysis.AnnotationSessionImpl; import com.intellij.codeInsight.editorActions.smartEnter.SmartEnterProcessor; import com.intellij.codeInsight.editorActions.smartEnter.SmartEnterProcessors; import com.intellij.codeInsight.generation.surroundWith.SurroundWithHandler; @@ -321,7 +322,7 @@ public final class CodeInsightTestUtil { @NotNull Consumer resultChecker) { Out result = annotator.doAnnotate(in); resultChecker.accept(result); - return AnnotationSessionImpl.withSession(psiFile, false, annotationHolder -> { + return AnnotationSessionImpl.computeWithSession(psiFile, false, annotationHolder -> { ApplicationManager.getApplication().runReadAction(() -> annotationHolder.applyExternalAnnotatorWithContext(psiFile, annotator, result)); annotationHolder.assertAllAnnotationsCreated(); return List.copyOf(annotationHolder); @@ -334,7 +335,7 @@ public final class CodeInsightTestUtil { @NotNull public static List testAnnotator(@NotNull Annotator annotator, @NotNull PsiElement @NotNull... elements) { PsiFile psiFile = elements[0].getContainingFile(); - return AnnotationSessionImpl.withSession(psiFile, false, annotationHolder -> { + return AnnotationSessionImpl.computeWithSession(psiFile, false, annotationHolder -> { for (PsiElement element : elements) { annotationHolder.runAnnotatorWithContext(element, annotator); } diff --git a/plugins/xpath/xpath-view/src/org/intellij/plugins/xpathView/util/MyPsiUtil.java b/plugins/xpath/xpath-view/src/org/intellij/plugins/xpathView/util/MyPsiUtil.java index 701f9ec40adf..43822b0ad680 100644 --- a/plugins/xpath/xpath-view/src/org/intellij/plugins/xpathView/util/MyPsiUtil.java +++ b/plugins/xpath/xpath-view/src/org/intellij/plugins/xpathView/util/MyPsiUtil.java @@ -18,7 +18,7 @@ package org.intellij.plugins.xpathView.util; import com.intellij.lang.ASTNode; import com.intellij.lang.LanguageAnnotators; import com.intellij.lang.annotation.Annotation; -import com.intellij.lang.annotation.AnnotationSessionImpl; +import com.intellij.codeInsight.daemon.impl.analysis.AnnotationSessionImpl; import com.intellij.lang.annotation.Annotator; import com.intellij.lang.annotation.HighlightSeverity; import com.intellij.openapi.diagnostic.Logger; @@ -155,7 +155,7 @@ public final class MyPsiUtil { file.accept(new PsiRecursiveElementVisitor() { @Override public void visitElement(@NotNull PsiElement element) { - AnnotationSessionImpl.withSession(file, false, holder -> { + AnnotationSessionImpl.computeWithSession(file, false, holder -> { holder.runAnnotatorWithContext(element, annotator); for (Annotation annotation : holder) { if (annotation.getSeverity() == HighlightSeverity.ERROR) { diff --git a/xml/dom-impl/src/com/intellij/util/xml/highlighting/DomElementAnnotationsManagerImpl.java b/xml/dom-impl/src/com/intellij/util/xml/highlighting/DomElementAnnotationsManagerImpl.java index d96e37afcdcf..ca727868b582 100644 --- a/xml/dom-impl/src/com/intellij/util/xml/highlighting/DomElementAnnotationsManagerImpl.java +++ b/xml/dom-impl/src/com/intellij/util/xml/highlighting/DomElementAnnotationsManagerImpl.java @@ -7,7 +7,7 @@ import com.intellij.codeInspection.InspectionProfile; import com.intellij.codeInspection.InspectionProfileEntry; import com.intellij.codeInspection.ProblemDescriptor; import com.intellij.codeInspection.ex.InspectionToolWrapper; -import com.intellij.lang.annotation.AnnotationSessionImpl; +import com.intellij.codeInsight.daemon.impl.analysis.AnnotationSessionImpl; import com.intellij.lang.annotation.HighlightSeverity; import com.intellij.openapi.Disposable; import com.intellij.openapi.project.Project; @@ -202,7 +202,7 @@ public class DomElementAnnotationsManagerImpl extends DomElementAnnotationsManag return problemHolder.getAllProblems(inspection); } - return AnnotationSessionImpl.withSession(domFileElement.getFile(), false, annotationHolder -> { + return AnnotationSessionImpl.computeWithSession(domFileElement.getFile(), false, annotationHolder -> { DomElementAnnotationHolder holder = new DomElementAnnotationHolderImpl(onTheFly, domFileElement, annotationHolder); inspection.checkFileElement(domFileElement, holder); //noinspection unchecked diff --git a/xml/dom-tests/tests/com/intellij/util/xml/DomHighlightingLiteTest.java b/xml/dom-tests/tests/com/intellij/util/xml/DomHighlightingLiteTest.java index c4041b1db901..cffded06115d 100644 --- a/xml/dom-tests/tests/com/intellij/util/xml/DomHighlightingLiteTest.java +++ b/xml/dom-tests/tests/com/intellij/util/xml/DomHighlightingLiteTest.java @@ -6,7 +6,7 @@ import com.intellij.codeInspection.InspectionManager; import com.intellij.codeInspection.InspectionProfile; import com.intellij.codeInspection.ProblemDescriptor; import com.intellij.codeInspection.ex.LocalInspectionToolWrapper; -import com.intellij.lang.annotation.AnnotationSessionImpl; +import com.intellij.codeInsight.daemon.impl.analysis.AnnotationSessionImpl; import com.intellij.mock.MockInspectionProfile; import com.intellij.openapi.project.Project; import com.intellij.psi.PsiFile; @@ -118,7 +118,7 @@ public class DomHighlightingLiteTest extends DomTestCase { } private DomElementAnnotationHolderImpl createHolder() { - return AnnotationSessionImpl.withSession(myElement.getFile(), false, holder -> new DomElementAnnotationHolderImpl(true, myElement, holder)); + return AnnotationSessionImpl.computeWithSession(myElement.getFile(), false, holder -> new DomElementAnnotationHolderImpl(true, myElement, holder)); } private static DomElementsProblemsHolderImpl assertNotEmptyHolder(final DomElementsProblemsHolder holder1) { @@ -168,7 +168,7 @@ public class DomHighlightingLiteTest extends DomTestCase { } }; final StringBuilder s = new StringBuilder(); - AnnotationSessionImpl.withSession(myElement.getFile(), false, toFill -> { + AnnotationSessionImpl.computeWithSession(myElement.getFile(), false, toFill -> { final MyDomElementsInspection inspection = new MyDomElementsInspection() { @Override