diff --git a/xml/tests/intellij.xml.tests.iml b/xml/tests/intellij.xml.tests.iml
index 5ae47baac647..a5a0aba550a7 100644
--- a/xml/tests/intellij.xml.tests.iml
+++ b/xml/tests/intellij.xml.tests.iml
@@ -21,6 +21,9 @@
+
+
+
diff --git a/xml/tests/src/com/intellij/codeInsight/daemon/quickFix/XmlQuickFixTest.java b/xml/tests/src/com/intellij/codeInsight/daemon/quickFix/XmlQuickFixTest.java
new file mode 100644
index 000000000000..91838e2ee9ba
--- /dev/null
+++ b/xml/tests/src/com/intellij/codeInsight/daemon/quickFix/XmlQuickFixTest.java
@@ -0,0 +1,28 @@
+// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
+package com.intellij.codeInsight.daemon.quickFix;
+
+import com.intellij.codeInsight.daemon.XmlErrorMessages;
+import com.intellij.codeInsight.intention.IntentionAction;
+import com.intellij.codeInsight.intention.impl.ShowIntentionActionsHandler;
+import com.intellij.ide.highlighter.XmlFileType;
+import com.intellij.openapi.fileTypes.PlainTextLanguage;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiLanguageInjectionHost;
+import com.intellij.psi.xml.XmlFile;
+import com.intellij.testFramework.fixtures.LightPlatformCodeInsightFixtureTestCase;
+import org.intellij.plugins.intelliLang.inject.LanguageInjectionSupport;
+import org.intellij.plugins.intelliLang.inject.TemporaryPlacesRegistry;
+
+public class XmlQuickFixTest extends LightPlatformCodeInsightFixtureTestCase {
+
+ public void testEscapeAmpersandInInjected() {
+ XmlFile file = (XmlFile)myFixture.configureByText(XmlFileType.INSTANCE, "\"/>");
+ PsiElement element = file.getRootTag().getAttribute("b").getValueElement();
+ LanguageInjectionSupport support = TemporaryPlacesRegistry.getInstance(getProject()).getLanguageInjectionSupport();
+ assertTrue(support.addInjectionInPlace(PlainTextLanguage.INSTANCE, (PsiLanguageInjectionHost)element));
+ IntentionAction intention = myFixture.getAvailableIntention(XmlErrorMessages.message("escape.ampersand.quickfix"));
+ assertNotNull(intention);
+ ShowIntentionActionsHandler.chooseActionAndInvoke(file, myFixture.getEditor(), intention, "");
+ myFixture.checkResult("");
+ }
+}
diff --git a/xml/xml-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/XmlErrorQuickFixProvider.java b/xml/xml-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/XmlErrorQuickFixProvider.java
index db924dc80cb4..55fce859f367 100644
--- a/xml/xml-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/XmlErrorQuickFixProvider.java
+++ b/xml/xml-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/XmlErrorQuickFixProvider.java
@@ -19,8 +19,11 @@ import com.intellij.codeInsight.daemon.XmlErrorMessages;
import com.intellij.codeInsight.daemon.impl.HighlightInfo;
import com.intellij.codeInsight.daemon.impl.quickfix.QuickFixAction;
import com.intellij.codeInsight.intention.IntentionAction;
+import com.intellij.lang.injection.InjectedLanguageManager;
+import com.intellij.openapi.editor.Document;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.project.Project;
+import com.intellij.psi.PsiDocumentManager;
import com.intellij.psi.PsiErrorElement;
import com.intellij.psi.PsiFile;
import com.intellij.psi.util.PsiTreeUtil;
@@ -61,8 +64,11 @@ public class XmlErrorQuickFixProvider implements ErrorQuickFixProvider {
@Override
public void invoke(@NotNull Project project, Editor editor, PsiFile file) {
+ PsiFile topLevelFile = InjectedLanguageManager.getInstance(project).getTopLevelFile(file);
+ Document document = PsiDocumentManager.getInstance(project).getDocument(topLevelFile);
+ assert document != null;
final int textOffset = element.getTextOffset();
- editor.getDocument().replaceString(textOffset,textOffset + 1,AMP_ENTITY);
+ document.replaceString(textOffset, textOffset + 1, AMP_ENTITY);
}
@Override