From 1c8ea0e6f16e6137bb72c063dce20d481a650964 Mon Sep 17 00:00:00 2001 From: peter Date: Wed, 16 Mar 2016 16:18:00 +0100 Subject: [PATCH] ChangeClassParametersIntention.java: start write action explicitly inside a template listener (EA-80311 - assert: DocumentImpl.replaceString) --- .../intentions/ChangeClassParametersIntention.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/java/typeMigration/src/com/intellij/refactoring/typeMigration/intentions/ChangeClassParametersIntention.java b/java/typeMigration/src/com/intellij/refactoring/typeMigration/intentions/ChangeClassParametersIntention.java index 3208ec2b3978..b35f169c3421 100644 --- a/java/typeMigration/src/com/intellij/refactoring/typeMigration/intentions/ChangeClassParametersIntention.java +++ b/java/typeMigration/src/com/intellij/refactoring/typeMigration/intentions/ChangeClassParametersIntention.java @@ -7,6 +7,7 @@ import com.intellij.codeInsight.intention.PsiElementBaseIntentionAction; import com.intellij.codeInsight.intention.impl.TypeExpression; import com.intellij.codeInsight.template.*; import com.intellij.codeInsight.template.impl.TemplateState; +import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.editor.Document; import com.intellij.openapi.editor.Editor; @@ -91,10 +92,12 @@ public class ChangeClassParametersIntention extends PsiElementBaseIntentionActio myNewType = value != null ? value.getText() : ""; final int segmentsCount = state.getSegmentsCount(); final Document document = state.getEditor().getDocument(); - for (int i = 0; i < segmentsCount; i++) { - final TextRange segmentRange = state.getSegmentRange(i); - document.replaceString(segmentRange.getStartOffset(), segmentRange.getEndOffset(), oldTypeText); - } + ApplicationManager.getApplication().runWriteAction(() -> { + for (int i = 0; i < segmentsCount; i++) { + final TextRange segmentRange = state.getSegmentRange(i); + document.replaceString(segmentRange.getStartOffset(), segmentRange.getEndOffset(), oldTypeText); + } + }); } @Override