diff --git a/src/main/java/org/antlr/intellij/adaptor/parser/ErrorStrategyAdaptor.java b/src/main/java/org/antlr/intellij/adaptor/parser/ErrorStrategyAdaptor.java index a3a51e1..66436c8 100644 --- a/src/main/java/org/antlr/intellij/adaptor/parser/ErrorStrategyAdaptor.java +++ b/src/main/java/org/antlr/intellij/adaptor/parser/ErrorStrategyAdaptor.java @@ -5,6 +5,7 @@ import org.antlr.v4.runtime.Parser; import org.antlr.v4.runtime.Token; import org.antlr.v4.runtime.misc.IntervalSet; +import org.antlr.v4.runtime.tree.ErrorNode; /** Adapt ANTLR's DefaultErrorStrategy so that we add error nodes * for EOF if reached at start of resync's consumeUntil(). @@ -16,7 +17,8 @@ public class ErrorStrategyAdaptor extends DefaultErrorStrategy { protected void consumeUntil(Parser recognizer, IntervalSet set) { Token o = recognizer.getCurrentToken(); if ( o.getType()==Token.EOF ) { - recognizer.getRuleContext().addErrorNode(o); + ErrorNode errorNode = recognizer.createErrorNode(recognizer.getRuleContext(), o); + recognizer.getRuleContext().addErrorNode(errorNode); } super.consumeUntil(recognizer, set); } diff --git a/src/main/java/org/antlr/intellij/adaptor/psi/Trees.java b/src/main/java/org/antlr/intellij/adaptor/psi/Trees.java index 1d79026..063394c 100644 --- a/src/main/java/org/antlr/intellij/adaptor/psi/Trees.java +++ b/src/main/java/org/antlr/intellij/adaptor/psi/Trees.java @@ -31,7 +31,6 @@ package org.antlr.intellij.adaptor.psi; import com.intellij.lang.Language; -import com.intellij.openapi.application.Result; import com.intellij.openapi.command.WriteCommandAction; import com.intellij.openapi.fileTypes.LanguageFileType; import com.intellij.openapi.project.Project; @@ -226,14 +225,10 @@ public static PsiElement createLeafFromText(Project project, Language language, public static void replacePsiFileFromText(final Project project, Language language, final PsiFile psiFile, String text) { final PsiFile newPsiFile = createFile(project, language, text); if ( newPsiFile==null ) return; - WriteCommandAction setTextAction = new WriteCommandAction(project) { - @Override - protected void run(@NotNull Result result) throws Throwable { - psiFile.deleteChildRange(psiFile.getFirstChild(), psiFile.getLastChild()); - psiFile.addRange(newPsiFile.getFirstChild(), newPsiFile.getLastChild()); - } - }; - setTextAction.execute(); + WriteCommandAction.runWriteCommandAction(project, () -> { + psiFile.deleteChildRange(psiFile.getFirstChild(), psiFile.getLastChild()); + psiFile.addRange(newPsiFile.getFirstChild(), newPsiFile.getLastChild()); + }); } public static PsiFile createFile(Project project, Language language, String text) {