mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-03-22 06:50:54 +07:00
[xml] WEB-72084 Use information from InjectedLanguageManager to adjust the inspection severity level.
(cherry picked from commit 5bc575f71bf20511808ab1227927a71accd9a084) IJ-CR-160968 GitOrigin-RevId: f595ede4bb8b5b57bd92917b0c18f138e76ee6e1
This commit is contained in:
committed by
intellij-monorepo-bot
parent
42459505b1
commit
3860bc71fe
@@ -47,6 +47,7 @@ internal open class CodeFenceInjector : MultiHostInjector {
|
||||
}
|
||||
registrar.startInjecting(language)
|
||||
injectAsOnePlace(host, registrar, language)
|
||||
registrar.makeInspectionsLenient(true)
|
||||
registrar.doneInjecting()
|
||||
}
|
||||
|
||||
|
||||
@@ -253,11 +253,6 @@ public class XmlHighlightVisitor extends XmlElementVisitor implements HighlightV
|
||||
}
|
||||
|
||||
HighlightInfoType type = getTagProblemInfoType(tag);
|
||||
if (InjectedLanguageManager.getInstance(tag.getProject()).getInjectionHost(tag) != null) {
|
||||
// disabled in injected fragments
|
||||
return;
|
||||
}
|
||||
|
||||
addElementsForTagWithManyQuickFixes(tag, XmlAnalysisBundle.message("xml.inspections.element.is.not.allowed.here", name), type);
|
||||
return;
|
||||
}
|
||||
@@ -296,7 +291,9 @@ public class XmlHighlightVisitor extends XmlElementVisitor implements HighlightV
|
||||
}
|
||||
|
||||
public static boolean isInjectedWithoutValidation(PsiElement element) {
|
||||
return InjectedLanguageManager.FRANKENSTEIN_INJECTION.get(element.getContainingFile()) == Boolean.TRUE;
|
||||
InjectedLanguageManager injectedLanguageManager = InjectedLanguageManager.getInstance(element.getProject());
|
||||
return injectedLanguageManager.isFrankensteinInjection(element)
|
||||
|| injectedLanguageManager.shouldInspectionsBeLenient(element);
|
||||
}
|
||||
|
||||
public static boolean skipValidation(PsiElement context) {
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
package com.intellij.codeInspection.htmlInspections;
|
||||
|
||||
import com.intellij.codeInsight.daemon.impl.analysis.RemoveAttributeIntentionFix;
|
||||
import com.intellij.codeInsight.daemon.impl.analysis.XmlHighlightVisitor;
|
||||
import com.intellij.codeInspection.LocalQuickFix;
|
||||
import com.intellij.codeInspection.ProblemHighlightType;
|
||||
import com.intellij.codeInspection.ProblemsHolder;
|
||||
@@ -115,6 +116,10 @@ public class HtmlUnknownAttributeInspectionBase extends HtmlUnknownElementInspec
|
||||
highlightType = providerHighlightType;
|
||||
}
|
||||
}
|
||||
if (XmlHighlightVisitor.isInjectedWithoutValidation(tag)
|
||||
&& ProblemHighlightType.WEAK_WARNING.ordinal() < highlightType.ordinal()) {
|
||||
highlightType = ProblemHighlightType.WEAK_WARNING;
|
||||
}
|
||||
return highlightType;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,7 +5,6 @@ import com.intellij.codeInsight.daemon.impl.analysis.XmlHighlightingAwareElement
|
||||
import com.intellij.codeInspection.*;
|
||||
import com.intellij.codeInspection.util.InspectionMessage;
|
||||
import com.intellij.html.impl.providers.HtmlAttributeValueProvider;
|
||||
import com.intellij.lang.injection.InjectedLanguageManager;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.util.Key;
|
||||
import com.intellij.openapi.util.NlsSafe;
|
||||
@@ -99,21 +98,17 @@ public class RequiredAttributesInspectionBase extends HtmlLocalInspectionTool im
|
||||
if (!hasAttribute(tag, attrName) &&
|
||||
!XmlExtension.getExtension(tag.getContainingFile()).isRequiredAttributeImplicitlyPresent(tag, attrName)) {
|
||||
|
||||
if (InjectedLanguageManager.getInstance(tag.getProject()).getInjectionHost(tag) == null) {
|
||||
// disabled in injected fragments
|
||||
|
||||
LocalQuickFix insertRequiredAttributeIntention =
|
||||
isOnTheFly ? XmlQuickFixFactory.getInstance().insertRequiredAttributeFix(tag, attrName) : null;
|
||||
reportOneTagProblem(
|
||||
tag,
|
||||
attrName,
|
||||
XmlAnalysisBundle.message("xml.inspections.element.doesnt.have.required.attribute", name, attrName),
|
||||
insertRequiredAttributeIntention,
|
||||
holder,
|
||||
getIntentionAction(attrName),
|
||||
isOnTheFly
|
||||
);
|
||||
}
|
||||
LocalQuickFix insertRequiredAttributeIntention =
|
||||
isOnTheFly ? XmlQuickFixFactory.getInstance().insertRequiredAttributeFix(tag, attrName) : null;
|
||||
reportOneTagProblem(
|
||||
tag,
|
||||
attrName,
|
||||
XmlAnalysisBundle.message("xml.inspections.element.doesnt.have.required.attribute", name, attrName),
|
||||
insertRequiredAttributeIntention,
|
||||
holder,
|
||||
getIntentionAction(attrName),
|
||||
isOnTheFly
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,11 +2,11 @@
|
||||
|
||||
package com.intellij.xml.util;
|
||||
|
||||
import com.intellij.codeInsight.daemon.impl.analysis.XmlHighlightVisitor;
|
||||
import com.intellij.codeInspection.LocalQuickFix;
|
||||
import com.intellij.codeInspection.ProblemsHolder;
|
||||
import com.intellij.codeInspection.XmlSuppressableInspectionTool;
|
||||
import com.intellij.lang.ASTNode;
|
||||
import com.intellij.lang.injection.InjectedLanguageManager;
|
||||
import com.intellij.lang.xml.XMLLanguage;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.psi.PsiElementVisitor;
|
||||
@@ -21,19 +21,13 @@ import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public final class CheckTagEmptyBodyInspection extends XmlSuppressableInspectionTool {
|
||||
private final boolean enableInInjectedCode;
|
||||
|
||||
public CheckTagEmptyBodyInspection() {
|
||||
this(false);
|
||||
}
|
||||
|
||||
public CheckTagEmptyBodyInspection(boolean enableInInjectedCode) {
|
||||
this.enableInInjectedCode = enableInInjectedCode;
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull PsiElementVisitor buildVisitor(@NotNull ProblemsHolder holder, boolean isOnTheFly) {
|
||||
if (!enableInInjectedCode && InjectedLanguageManager.getInstance(holder.getProject()).isInjectedFragment(holder.getFile())) {
|
||||
if (XmlHighlightVisitor.isInjectedWithoutValidation(holder.getFile())) {
|
||||
// not inside injected code
|
||||
return PsiElementVisitor.EMPTY_VISITOR;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user