From 6591f54ad52536ef869dce701ff4d4e344a50abc Mon Sep 17 00:00:00 2001 From: Alexander Kirillin Date: Thu, 25 Apr 2013 20:39:14 +0400 Subject: [PATCH] Added check for read-only files in intention actions --- .../jet/plugin/quickfix/JetIntentionAction.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/idea/src/org/jetbrains/jet/plugin/quickfix/JetIntentionAction.java b/idea/src/org/jetbrains/jet/plugin/quickfix/JetIntentionAction.java index 24a841b5e2b..d05abb298e2 100644 --- a/idea/src/org/jetbrains/jet/plugin/quickfix/JetIntentionAction.java +++ b/idea/src/org/jetbrains/jet/plugin/quickfix/JetIntentionAction.java @@ -16,12 +16,14 @@ package org.jetbrains.jet.plugin.quickfix; +import com.intellij.codeInsight.CodeInsightUtilBase; import com.intellij.codeInsight.intention.IntentionAction; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.project.Project; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import com.intellij.psi.util.PsiTreeUtil; +import com.intellij.util.IncorrectOperationException; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.lang.diagnostics.Diagnostic; @@ -39,6 +41,20 @@ public abstract class JetIntentionAction implements Intent return element.isValid() && file.getManager().isInProject(file) && (file instanceof JetFile); } + //Don't override this method. Use the method below instead. + @Deprecated + @Override + public void invoke(@NotNull Project project, Editor editor, PsiFile file) throws IncorrectOperationException { + if (file instanceof JetFile) { + if (CodeInsightUtilBase.prepareFileForWrite(element.getContainingFile())) { + invoke(project, editor, (JetFile) file); + } + } + } + + protected void invoke(@NotNull Project project, Editor editor, JetFile file) throws IncorrectOperationException { + } + @Override public boolean startInWriteAction() { return true;