[core] WEB-72084 Migrate inspections to use new InjectedLanguageManager API.

GitOrigin-RevId: 7d69c938b84f5f77df3d881a2f3d3e4adba0202f
This commit is contained in:
Piotr Tomiak
2025-04-18 14:29:55 +02:00
committed by intellij-monorepo-bot
parent 5d569bb187
commit 874b64c36f
7 changed files with 16 additions and 19 deletions

View File

@@ -3,13 +3,13 @@ package org.intellij.lang.regexp.inspection;
import com.intellij.codeInspection.LocalInspectionTool;
import com.intellij.codeInspection.ProblemsHolder;
import com.intellij.lang.injection.InjectedLanguageManager;
import com.intellij.modcommand.ModPsiUpdater;
import com.intellij.modcommand.PsiUpdateModCommandQuickFix;
import com.intellij.openapi.project.Project;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiElementVisitor;
import com.intellij.psi.PsiFile;
import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil;
import org.intellij.lang.regexp.RegExpBundle;
import org.intellij.lang.regexp.psi.*;
import org.jetbrains.annotations.NotNull;
@@ -38,7 +38,7 @@ public class DuplicateCharacterInClassInspection extends LocalInspectionTool {
@Override
public void visitRegExpClass(RegExpClass regExpClass) {
PsiFile file = regExpClass.getContainingFile();
if (file == null || Boolean.TRUE.equals(file.getUserData(InjectedLanguageUtil.FRANKENSTEIN_INJECTION))) return;
if (file == null || InjectedLanguageManager.getInstance(file.getProject()).isFrankensteinInjection(file)) return;
final HashSet<Object> seen = new HashSet<>();
for (RegExpClassElement element : regExpClass.getElements()) {
checkForDuplicates(element, seen);

View File

@@ -39,7 +39,6 @@ import com.intellij.openapi.util.text.StringUtil;
import com.intellij.psi.*;
import com.intellij.psi.impl.source.PostprocessReformattingAspect;
import com.intellij.psi.impl.source.resolve.FileContextUtil;
import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil;
import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtilBase;
import com.intellij.psi.impl.source.tree.injected.Place;
import com.intellij.psi.impl.source.tree.injected.changesHandler.CommonInjectedFileChangesHandler;
@@ -117,8 +116,10 @@ public final class QuickEditHandler extends UserDataHolderBase implements Dispos
assert myNewFile.getTextLength() == myNewVirtualFile.getContent().length() : "PSI / Virtual file text mismatch";
// suppress possible errors as in injected mode
myNewFile.putUserData(InjectedLanguageUtil.FRANKENSTEIN_INJECTION,
injectedFile.getUserData(InjectedLanguageUtil.FRANKENSTEIN_INJECTION));
myNewFile.putUserData(InjectedLanguageManager.FRANKENSTEIN_INJECTION,
injectedFile.getUserData(InjectedLanguageManager.FRANKENSTEIN_INJECTION));
myNewFile.putUserData(InjectedLanguageManager.LENIENT_INSPECTIONS,
injectedFile.getUserData(InjectedLanguageManager.LENIENT_INSPECTIONS));
PsiLanguageInjectionHost host = InjectedLanguageManager.getInstance(project).getInjectionHost(injectedFile.getViewProvider());
myNewFile.putUserData(FileContextUtil.INJECTED_IN_ELEMENT, SmartPointerManager.getInstance(project).createSmartPsiElementPointer(host));
myNewDocument =

View File

@@ -5,9 +5,9 @@ import com.intellij.codeInsight.daemon.impl.HighlightInfo;
import com.intellij.codeInsight.daemon.impl.HighlightInfoFilter;
import com.intellij.codeInsight.highlighting.HighlightErrorFilter;
import com.intellij.lang.annotation.HighlightSeverity;
import com.intellij.lang.injection.InjectedLanguageManager;
import com.intellij.psi.PsiErrorElement;
import com.intellij.psi.PsiFile;
import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -32,6 +32,6 @@ final class FrankensteinErrorFilter extends HighlightErrorFilter implements High
}
private static boolean isFrankenstein(@Nullable PsiFile file) {
return file != null && Boolean.TRUE.equals(file.getUserData(InjectedLanguageUtil.FRANKENSTEIN_INJECTION));
return file != null && InjectedLanguageManager.getInstance(file.getProject()).isFrankensteinInjection(file);
}
}

View File

@@ -64,7 +64,7 @@ class StringInterpolationInjectionTest : KotlinLightCodeInsightFixtureTestCase()
TestCase.assertEquals(expectedText, containingFile.text)
TestCase.assertFalse(
"Shouldn't be FRANKENSTEIN",
java.lang.Boolean.TRUE == containingFile.getUserData(InjectedLanguageManager.FRANKENSTEIN_INJECTION)
InjectedLanguageManager.getInstance(containingFile.project).isFrankensteinInjection(containingFile)
)
undo(editor)

View File

@@ -11,6 +11,7 @@ import com.intellij.psi.PsiElement
import com.intellij.util.containers.ContainerUtil
import org.intellij.plugins.intelliLang.inject.InjectedLanguage
import org.intellij.plugins.intelliLang.inject.InjectorUtils
import org.intellij.plugins.intelliLang.inject.registerSupport
import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.lexer.KtTokens
import org.jetbrains.kotlin.psi.*
@@ -37,15 +38,10 @@ abstract class KotlinLanguageInjectionPerformerBase : LanguageInjectionPerformer
if (parts.ranges.isEmpty()) return false
InjectorUtils.registerInjection(language, file, parts.ranges, registrar)
InjectorUtils.registerSupport(support, false, context, language)
InjectorUtils.putInjectedFileUserData(
context,
language,
InjectedLanguageManager.FRANKENSTEIN_INJECTION,
if (parts.isUnparsable) true else null
)
InjectorUtils.registerInjection(language, file, parts.ranges, registrar) {
it.registerSupport(support, false)
.frankensteinInjection(parts.isUnparsable)
}
return true
}

View File

@@ -108,7 +108,7 @@ public final class SpellCheckingInspection extends LocalInspectionTool implement
}
PsiFile containingFile = holder.getFile();
if (Boolean.TRUE.equals(containingFile.getUserData(InjectedLanguageManager.FRANKENSTEIN_INJECTION))) {
if (InjectedLanguageManager.getInstance(containingFile.getProject()).isFrankensteinInjection(containingFile)) {
return;
}

View File

@@ -296,7 +296,7 @@ public class XmlHighlightVisitor extends XmlElementVisitor implements HighlightV
}
public static boolean isInjectedWithoutValidation(PsiElement element) {
return InjectedLanguageManager.FRANKENSTEIN_INJECTION.get(element.getContainingFile()) == Boolean.TRUE;
return InjectedLanguageManager.getInstance(element.getProject()).isFrankensteinInjection(element);
}
public static boolean skipValidation(PsiElement context) {