[regexp] Regexp plugin quick-fixes converted to ModCommand

GitOrigin-RevId: 9734abefacb311efc2ba9c42008da783e725458e
This commit is contained in:
Tagir Valeev
2023-10-26 10:48:37 +02:00
committed by intellij-monorepo-bot
parent 9a4c97f26e
commit bdf9fbcfd5
15 changed files with 76 additions and 60 deletions

View File

@@ -2,9 +2,9 @@
package org.intellij.lang.regexp.inspection; package org.intellij.lang.regexp.inspection;
import com.intellij.codeInspection.LocalInspectionTool; import com.intellij.codeInspection.LocalInspectionTool;
import com.intellij.codeInspection.LocalQuickFix;
import com.intellij.codeInspection.ProblemDescriptor;
import com.intellij.codeInspection.ProblemsHolder; import com.intellij.codeInspection.ProblemsHolder;
import com.intellij.modcommand.ModPsiUpdater;
import com.intellij.modcommand.PsiUpdateModCommandQuickFix;
import com.intellij.openapi.project.Project; import com.intellij.openapi.project.Project;
import com.intellij.psi.PsiElement; import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiElementVisitor; import com.intellij.psi.PsiElementVisitor;
@@ -70,8 +70,7 @@ public class DuplicateAlternationBranchInspection extends LocalInspectionTool {
} }
} }
private static class DuplicateAlternationBranchFix implements LocalQuickFix { private static class DuplicateAlternationBranchFix extends PsiUpdateModCommandQuickFix {
@Nls @Nls
@NotNull @NotNull
@Override @Override
@@ -80,8 +79,7 @@ public class DuplicateAlternationBranchInspection extends LocalInspectionTool {
} }
@Override @Override
public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor descriptor) { protected void applyFix(@NotNull Project project, @NotNull PsiElement element, @NotNull ModPsiUpdater updater) {
final PsiElement element = descriptor.getPsiElement();
if (!(element instanceof RegExpBranch)) { if (!(element instanceof RegExpBranch)) {
return; return;
} }

View File

@@ -2,10 +2,12 @@
package org.intellij.lang.regexp.inspection; package org.intellij.lang.regexp.inspection;
import com.intellij.codeInspection.LocalInspectionTool; import com.intellij.codeInspection.LocalInspectionTool;
import com.intellij.codeInspection.LocalQuickFix;
import com.intellij.codeInspection.ProblemDescriptor; import com.intellij.codeInspection.ProblemDescriptor;
import com.intellij.codeInspection.ProblemsHolder; import com.intellij.codeInspection.ProblemsHolder;
import com.intellij.modcommand.ModPsiUpdater;
import com.intellij.modcommand.PsiUpdateModCommandQuickFix;
import com.intellij.openapi.project.Project; import com.intellij.openapi.project.Project;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiElementVisitor; import com.intellij.psi.PsiElementVisitor;
import com.intellij.psi.PsiFile; import com.intellij.psi.PsiFile;
import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil;
@@ -65,7 +67,7 @@ public class DuplicateCharacterInClassInspection extends LocalInspectionTool {
} }
} }
private static final class DuplicateCharacterInClassFix implements LocalQuickFix { private static final class DuplicateCharacterInClassFix extends PsiUpdateModCommandQuickFix {
private final String myText; private final String myText;
@@ -84,8 +86,8 @@ public class DuplicateCharacterInClassInspection extends LocalInspectionTool {
} }
@Override @Override
public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor descriptor) { protected void applyFix(@NotNull Project project, @NotNull PsiElement element, @NotNull ModPsiUpdater updater) {
descriptor.getPsiElement().delete(); element.delete();
} }
} }
} }

View File

@@ -2,6 +2,8 @@
package org.intellij.lang.regexp.inspection; package org.intellij.lang.regexp.inspection;
import com.intellij.codeInspection.*; import com.intellij.codeInspection.*;
import com.intellij.modcommand.ModPsiUpdater;
import com.intellij.modcommand.PsiUpdateModCommandQuickFix;
import com.intellij.openapi.project.Project; import com.intellij.openapi.project.Project;
import com.intellij.psi.PsiElement; import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiElementVisitor; import com.intellij.psi.PsiElementVisitor;
@@ -58,8 +60,7 @@ public class EmptyAlternationBranchInspection extends LocalInspectionTool {
} }
} }
private static class EmptyAlternationBranchFix implements LocalQuickFix { private static class EmptyAlternationBranchFix extends PsiUpdateModCommandQuickFix {
@Nls @Nls
@NotNull @NotNull
@Override @Override
@@ -68,8 +69,7 @@ public class EmptyAlternationBranchInspection extends LocalInspectionTool {
} }
@Override @Override
public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor descriptor) { protected void applyFix(@NotNull Project project, @NotNull PsiElement element, @NotNull ModPsiUpdater updater) {
final PsiElement element = descriptor.getPsiElement();
if (!(element.getParent() instanceof RegExpPattern)) return; if (!(element.getParent() instanceof RegExpPattern)) return;
element.getNextSibling().delete(); element.getNextSibling().delete();
element.delete(); element.delete();

View File

@@ -3,6 +3,8 @@ package org.intellij.lang.regexp.inspection;
import com.intellij.codeInspection.*; import com.intellij.codeInspection.*;
import com.intellij.lang.ASTNode; import com.intellij.lang.ASTNode;
import com.intellij.modcommand.ModPsiUpdater;
import com.intellij.modcommand.PsiUpdateModCommandQuickFix;
import com.intellij.openapi.project.Project; import com.intellij.openapi.project.Project;
import com.intellij.psi.PsiElement; import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiElementVisitor; import com.intellij.psi.PsiElementVisitor;
@@ -53,7 +55,7 @@ public class EscapedMetaCharacterInspection extends LocalInspectionTool {
} }
} }
private static class EscapedMetaCharacterFix implements LocalQuickFix { private static class EscapedMetaCharacterFix extends PsiUpdateModCommandQuickFix {
private final char myC; private final char myC;
@@ -76,8 +78,7 @@ public class EscapedMetaCharacterInspection extends LocalInspectionTool {
} }
@Override @Override
public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor descriptor) { protected void applyFix(@NotNull Project project, @NotNull PsiElement element, @NotNull ModPsiUpdater updater) {
final PsiElement element = descriptor.getPsiElement();
if (!(element instanceof RegExpChar)) { if (!(element instanceof RegExpChar)) {
return; return;
} }

View File

@@ -2,6 +2,8 @@
package org.intellij.lang.regexp.inspection; package org.intellij.lang.regexp.inspection;
import com.intellij.codeInspection.*; import com.intellij.codeInspection.*;
import com.intellij.modcommand.ModPsiUpdater;
import com.intellij.modcommand.PsiUpdateModCommandQuickFix;
import com.intellij.openapi.project.Project; import com.intellij.openapi.project.Project;
import com.intellij.psi.PsiElement; import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiElementVisitor; import com.intellij.psi.PsiElementVisitor;
@@ -46,7 +48,7 @@ public class OctalEscapeInspection extends LocalInspectionTool {
return (hex.length() == 1 ? "\\x0" : "\\x") + hex; return (hex.length() == 1 ? "\\x0" : "\\x") + hex;
} }
private static class ReplaceWithHexEscapeFix implements LocalQuickFix { private static class ReplaceWithHexEscapeFix extends PsiUpdateModCommandQuickFix {
private final String myHex; private final String myHex;
ReplaceWithHexEscapeFix(String hex) { ReplaceWithHexEscapeFix(String hex) {
@@ -68,12 +70,11 @@ public class OctalEscapeInspection extends LocalInspectionTool {
} }
@Override @Override
public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor descriptor) { protected void applyFix(@NotNull Project project, @NotNull PsiElement element, @NotNull ModPsiUpdater updater) {
final PsiElement element = descriptor.getPsiElement(); if (!(element instanceof RegExpChar regExpChar)) {
if (!(element instanceof RegExpChar)) {
return; return;
} }
RegExpReplacementUtil.replaceInContext(element, buildReplacementText((RegExpChar)element)); RegExpReplacementUtil.replaceInContext(element, buildReplacementText(regExpChar));
} }
} }
} }

View File

@@ -2,10 +2,10 @@
package org.intellij.lang.regexp.inspection; package org.intellij.lang.regexp.inspection;
import com.intellij.codeInspection.LocalInspectionTool; import com.intellij.codeInspection.LocalInspectionTool;
import com.intellij.codeInspection.LocalQuickFix;
import com.intellij.codeInspection.ProblemDescriptor;
import com.intellij.codeInspection.ProblemsHolder; import com.intellij.codeInspection.ProblemsHolder;
import com.intellij.codeInspection.util.IntentionFamilyName; import com.intellij.codeInspection.util.IntentionFamilyName;
import com.intellij.modcommand.ModPsiUpdater;
import com.intellij.modcommand.PsiUpdateModCommandQuickFix;
import com.intellij.openapi.project.Project; import com.intellij.openapi.project.Project;
import com.intellij.psi.PsiElement; import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiElementVisitor; import com.intellij.psi.PsiElementVisitor;
@@ -60,7 +60,7 @@ public class RedundantNestedCharacterClassInspection extends LocalInspectionTool
} }
} }
private static class RedundantNestedCharacterClassFix implements LocalQuickFix { private static class RedundantNestedCharacterClassFix extends PsiUpdateModCommandQuickFix {
@Override @Override
public @IntentionFamilyName @NotNull String getFamilyName() { public @IntentionFamilyName @NotNull String getFamilyName() {
@@ -68,8 +68,8 @@ public class RedundantNestedCharacterClassInspection extends LocalInspectionTool
} }
@Override @Override
public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor descriptor) { protected void applyFix(@NotNull Project project, @NotNull PsiElement element, @NotNull ModPsiUpdater updater) {
final PsiElement element = descriptor.getPsiElement().getParent(); element = element.getParent();
if (element instanceof RegExpClass regExpClass) { if (element instanceof RegExpClass regExpClass) {
final RegExpClassElement[] elements = regExpClass.getElements(); final RegExpClassElement[] elements = regExpClass.getElements();
final PsiElement parent = regExpClass.getParent(); final PsiElement parent = regExpClass.getParent();

View File

@@ -2,9 +2,9 @@
package org.intellij.lang.regexp.inspection; package org.intellij.lang.regexp.inspection;
import com.intellij.codeInspection.LocalInspectionTool; import com.intellij.codeInspection.LocalInspectionTool;
import com.intellij.codeInspection.LocalQuickFix;
import com.intellij.codeInspection.ProblemDescriptor;
import com.intellij.codeInspection.ProblemsHolder; import com.intellij.codeInspection.ProblemsHolder;
import com.intellij.modcommand.ModPsiUpdater;
import com.intellij.modcommand.PsiUpdateModCommandQuickFix;
import com.intellij.openapi.project.Project; import com.intellij.openapi.project.Project;
import com.intellij.psi.PsiElement; import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiElementVisitor; import com.intellij.psi.PsiElementVisitor;
@@ -66,7 +66,7 @@ public class RegExpRedundantClassElementInspection extends LocalInspectionTool {
return classElement instanceof RegExpSimpleClass && ((RegExpSimpleClass)classElement).getKind().equals(NON_WORD); return classElement instanceof RegExpSimpleClass && ((RegExpSimpleClass)classElement).getKind().equals(NON_WORD);
} }
private static class RemoveRedundantClassElement implements LocalQuickFix { private static class RemoveRedundantClassElement extends PsiUpdateModCommandQuickFix {
private final String myClassElementText; private final String myClassElementText;
private RemoveRedundantClassElement(String text) { myClassElementText = text; } private RemoveRedundantClassElement(String text) { myClassElementText = text; }
@@ -82,9 +82,7 @@ public class RegExpRedundantClassElementInspection extends LocalInspectionTool {
} }
@Override @Override
public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor descriptor) { protected void applyFix(@NotNull Project project, @NotNull PsiElement element, @NotNull ModPsiUpdater updater) {
PsiElement element = descriptor.getPsiElement();
if (element == null) return;
element.delete(); element.delete();
} }
} }

View File

@@ -8,6 +8,8 @@ import com.intellij.codeInspection.ProblemsHolder;
import com.intellij.codeInspection.options.OptPane; import com.intellij.codeInspection.options.OptPane;
import com.intellij.codeInspection.ui.SingleCheckboxOptionsPanel; import com.intellij.codeInspection.ui.SingleCheckboxOptionsPanel;
import com.intellij.lang.ASTNode; import com.intellij.lang.ASTNode;
import com.intellij.modcommand.ModPsiUpdater;
import com.intellij.modcommand.PsiUpdateModCommandQuickFix;
import com.intellij.openapi.project.Project; import com.intellij.openapi.project.Project;
import com.intellij.psi.PsiElement; import com.intellij.psi.PsiElement;
import org.intellij.lang.regexp.RegExpBundle; import org.intellij.lang.regexp.RegExpBundle;
@@ -72,7 +74,7 @@ public class RegExpRedundantEscapeInspection extends LocalInspectionTool {
} }
} }
private static class RemoveRedundantEscapeFix implements LocalQuickFix { private static class RemoveRedundantEscapeFix extends PsiUpdateModCommandQuickFix {
@Nls @Nls
@NotNull @NotNull
@@ -82,12 +84,11 @@ public class RegExpRedundantEscapeInspection extends LocalInspectionTool {
} }
@Override @Override
public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor descriptor) { protected void applyFix(@NotNull Project project, @NotNull PsiElement element, @NotNull ModPsiUpdater updater) {
final PsiElement element = descriptor.getPsiElement(); if (!(element instanceof RegExpChar regExpChar)) {
if (!(element instanceof RegExpChar)) {
return; return;
} }
RegExpReplacementUtil.replaceInContext(element, replacement((RegExpChar)element)); RegExpReplacementUtil.replaceInContext(element, replacement(regExpChar));
} }
@NotNull @NotNull

View File

@@ -3,6 +3,9 @@ package org.intellij.lang.regexp.inspection;
import com.intellij.codeInspection.*; import com.intellij.codeInspection.*;
import com.intellij.lang.ASTNode; import com.intellij.lang.ASTNode;
import com.intellij.modcommand.ModCommand;
import com.intellij.modcommand.ModCommandQuickFix;
import com.intellij.modcommand.PsiUpdateModCommandQuickFix;
import com.intellij.openapi.project.Project; import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.TextRange; import com.intellij.openapi.util.TextRange;
import com.intellij.psi.PsiElement; import com.intellij.psi.PsiElement;
@@ -166,7 +169,7 @@ public class RegExpSimplifiableInspection extends LocalInspectionTool {
}; };
} }
private static class RegExpSimplifiableFix implements LocalQuickFix { private static class RegExpSimplifiableFix extends ModCommandQuickFix {
private final String myExpression; private final String myExpression;
private final boolean myDelete; private final boolean myDelete;
@@ -192,12 +195,13 @@ public class RegExpSimplifiableInspection extends LocalInspectionTool {
} }
@Override @Override
public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor descriptor) { public @NotNull ModCommand perform(@NotNull Project project, @NotNull ProblemDescriptor descriptor) {
final PsiElement element = descriptor.getPsiElement(); final PsiElement element = descriptor.getPsiElement();
if (!(element instanceof RegExpElement)) { if (!(element instanceof RegExpElement)) {
return; return ModCommand.nop();
} }
RegExpReplacementUtil.replaceInContext(element, myDelete ? "" : myExpression, descriptor.getTextRangeInElement()); return ModCommand.psiUpdate(element, e ->
RegExpReplacementUtil.replaceInContext(e, myDelete ? "" : myExpression, descriptor.getTextRangeInElement()));
} }
} }
} }

View File

@@ -3,6 +3,8 @@ package org.intellij.lang.regexp.inspection;
import com.intellij.codeInspection.*; import com.intellij.codeInspection.*;
import com.intellij.lang.injection.InjectedLanguageManager; import com.intellij.lang.injection.InjectedLanguageManager;
import com.intellij.modcommand.ModCommand;
import com.intellij.modcommand.ModCommandQuickFix;
import com.intellij.openapi.project.Project; import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.TextRange; import com.intellij.openapi.util.TextRange;
import com.intellij.psi.PsiElement; import com.intellij.psi.PsiElement;
@@ -86,7 +88,7 @@ public class RepeatedSpaceInspection extends LocalInspectionTool {
} }
} }
private static class RepeatedSpaceFix implements LocalQuickFix { private static class RepeatedSpaceFix extends ModCommandQuickFix {
private final int myCount; private final int myCount;
RepeatedSpaceFix(int count) { RepeatedSpaceFix(int count) {
@@ -108,10 +110,10 @@ public class RepeatedSpaceInspection extends LocalInspectionTool {
} }
@Override @Override
public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor descriptor) { public @NotNull ModCommand perform(@NotNull Project project, @NotNull ProblemDescriptor descriptor) {
final PsiElement element = descriptor.getPsiElement(); final PsiElement element = descriptor.getPsiElement();
if (!(element instanceof RegExpBranch)) { if (!(element instanceof RegExpBranch)) {
return; return ModCommand.nop();
} }
final InjectedLanguageManager injectedLanguageManager = InjectedLanguageManager.getInstance(element.getProject()); final InjectedLanguageManager injectedLanguageManager = InjectedLanguageManager.getInstance(element.getProject());
final TextRange range = descriptor.getTextRangeInElement(); final TextRange range = descriptor.getTextRangeInElement();
@@ -128,7 +130,7 @@ public class RepeatedSpaceInspection extends LocalInspectionTool {
} }
child = child.getNextSibling(); child = child.getNextSibling();
} }
RegExpReplacementUtil.replaceInContext(element, text.toString()); return ModCommand.psiUpdate(element, e -> RegExpReplacementUtil.replaceInContext(e, text.toString()));
} }
} }
} }

View File

@@ -2,6 +2,8 @@
package org.intellij.lang.regexp.inspection; package org.intellij.lang.regexp.inspection;
import com.intellij.codeInspection.*; import com.intellij.codeInspection.*;
import com.intellij.modcommand.ModPsiUpdater;
import com.intellij.modcommand.PsiUpdateModCommandQuickFix;
import com.intellij.openapi.project.Project; import com.intellij.openapi.project.Project;
import com.intellij.psi.PsiElement; import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiElementVisitor; import com.intellij.psi.PsiElementVisitor;
@@ -51,7 +53,7 @@ public class SingleCharAlternationInspection extends LocalInspectionTool {
return atoms.length == 1 && atoms[0] instanceof RegExpChar; return atoms.length == 1 && atoms[0] instanceof RegExpChar;
} }
private static class SingleCharAlternationFix implements LocalQuickFix { private static class SingleCharAlternationFix extends PsiUpdateModCommandQuickFix {
private final String myText; private final String myText;
@@ -74,14 +76,13 @@ public class SingleCharAlternationInspection extends LocalInspectionTool {
} }
@Override @Override
public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor descriptor) { protected void applyFix(@NotNull Project project, @NotNull PsiElement element, @NotNull ModPsiUpdater updater) {
final PsiElement element = descriptor.getPsiElement();
if (!(element instanceof RegExpPattern pattern)) { if (!(element instanceof RegExpPattern pattern)) {
return; return;
} }
final PsiElement parent = pattern.getParent(); final PsiElement parent = pattern.getParent();
final PsiElement victim = final PsiElement victim =
(parent instanceof RegExpGroup && ((RegExpGroup)parent).getType() == RegExpGroup.Type.NON_CAPTURING) ? parent : pattern; (parent instanceof RegExpGroup group && group.getType() == RegExpGroup.Type.NON_CAPTURING) ? parent : pattern;
final String replacementText = buildReplacementText(pattern); final String replacementText = buildReplacementText(pattern);
if (replacementText == null) { if (replacementText == null) {
return; return;

View File

@@ -6,6 +6,8 @@ import com.intellij.codeInspection.LocalQuickFix;
import com.intellij.codeInspection.ProblemDescriptor; import com.intellij.codeInspection.ProblemDescriptor;
import com.intellij.codeInspection.ProblemsHolder; import com.intellij.codeInspection.ProblemsHolder;
import com.intellij.codeInspection.util.IntentionFamilyName; import com.intellij.codeInspection.util.IntentionFamilyName;
import com.intellij.modcommand.ModPsiUpdater;
import com.intellij.modcommand.PsiUpdateModCommandQuickFix;
import com.intellij.openapi.project.Project; import com.intellij.openapi.project.Project;
import com.intellij.psi.PsiElement; import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiElementVisitor; import com.intellij.psi.PsiElementVisitor;
@@ -78,15 +80,15 @@ public class UnnecessaryNonCapturingGroupInspection extends LocalInspectionTool
return atoms.length != 1 ? null : atoms[0]; return atoms.length != 1 ? null : atoms[0];
} }
private static class UnnecessaryNonCapturingGroupFix implements LocalQuickFix { private static class UnnecessaryNonCapturingGroupFix extends PsiUpdateModCommandQuickFix {
@Override @Override
public @IntentionFamilyName @NotNull String getFamilyName() { public @IntentionFamilyName @NotNull String getFamilyName() {
return RegExpBundle.message("inspection.quick.fix.remove.unnecessary.non.capturing.group"); return RegExpBundle.message("inspection.quick.fix.remove.unnecessary.non.capturing.group");
} }
@Override @Override
public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor descriptor) { protected void applyFix(@NotNull Project project, @NotNull PsiElement element, @NotNull ModPsiUpdater updater) {
final PsiElement element = descriptor.getPsiElement().getParent(); element = element.getParent();
if (!(element instanceof RegExpGroup group)) { if (!(element instanceof RegExpGroup group)) {
return; return;
} }

View File

@@ -8,6 +8,8 @@ import com.intellij.codeInspection.ex.*;
import com.intellij.find.FindManager; import com.intellij.find.FindManager;
import com.intellij.find.FindModel; import com.intellij.find.FindModel;
import com.intellij.find.FindResult; import com.intellij.find.FindResult;
import com.intellij.modcommand.ModPsiUpdater;
import com.intellij.modcommand.PsiUpdateModCommandQuickFix;
import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.application.ModalityState; import com.intellij.openapi.application.ModalityState;
import com.intellij.openapi.editor.Document; import com.intellij.openapi.editor.Document;
@@ -203,7 +205,7 @@ public class CustomRegExpInspection extends LocalInspectionTool implements Dynam
configuration.getProblemDescriptor(), configuration.getSuppressId()); configuration.getProblemDescriptor(), configuration.getSuppressId());
} }
private static class CustomRegExpQuickFix implements LocalQuickFix { private static class CustomRegExpQuickFix extends PsiUpdateModCommandQuickFix {
private final int myStartOffset; private final int myStartOffset;
private final int myEndOffset; private final int myEndOffset;
private final String myReplacement; private final String myReplacement;
@@ -232,8 +234,8 @@ public class CustomRegExpInspection extends LocalInspectionTool implements Dynam
} }
@Override @Override
public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor descriptor) { protected void applyFix(@NotNull Project project, @NotNull PsiElement element, @NotNull ModPsiUpdater updater) {
PsiFile file = descriptor.getPsiElement().getContainingFile(); PsiFile file = element.getContainingFile();
final Document document = file.getViewProvider().getDocument(); final Document document = file.getViewProvider().getDocument();
if (myOriginal.equals(document.getText(TextRange.create(myStartOffset, myEndOffset)))) { if (myOriginal.equals(document.getText(TextRange.create(myStartOffset, myEndOffset)))) {
document.replaceString(myStartOffset, myEndOffset, myReplacement); document.replaceString(myStartOffset, myEndOffset, myReplacement);

View File

@@ -118,7 +118,12 @@ public class IntentionPreviewTest extends LightJavaCodeInsightFixtureTestCase {
}"""); }""");
myFixture.enableInspections(new DuplicateCharacterInClassInspection()); myFixture.enableInspections(new DuplicateCharacterInClassInspection());
IntentionAction action = myFixture.findSingleIntention("Remove duplicate '1' from character class"); IntentionAction action = myFixture.findSingleIntention("Remove duplicate '1' from character class");
assertEquals("[\"123]", myFixture.getIntentionPreviewText(action)); assertEquals("""
import java.util.regex.Pattern;
class Test {
Pattern p = Pattern.compile("[\\"123]");
}""", myFixture.getIntentionPreviewText(action));
} }
public void testBindFieldsFromParameters() { public void testBindFieldsFromParameters() {

View File

@@ -25,7 +25,6 @@ import com.intellij.psi.impl.file.PsiFileImplUtil;
import com.intellij.psi.impl.source.PostprocessReformattingAspect; import com.intellij.psi.impl.source.PostprocessReformattingAspect;
import com.intellij.psi.util.PsiTreeUtil; import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.testFramework.LightVirtualFile; import com.intellij.testFramework.LightVirtualFile;
import com.intellij.util.LocalTimeCounter;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
@@ -204,8 +203,8 @@ final class PsiUpdateImpl {
} }
else { else {
return PsiFileFactory.getInstance(project).createFileFromText( return PsiFileFactory.getInstance(project).createFileFromText(
origFile.getName(), origFile.getFileType(), manager.getUnescapedText(origFile), origFile.getName(), origFile.getLanguage(), manager.getUnescapedText(origFile),
LocalTimeCounter.currentTime(), false); false, true, true, origFile.getVirtualFile());
} }
} }