package jetbrains.mps.checkers; /*Generated by MPS */ import org.jetbrains.annotations.NotNull; import org.jetbrains.mps.openapi.model.SNode; import org.jetbrains.annotations.Nullable; import org.jetbrains.mps.openapi.model.SNodeReference; import jetbrains.mps.errors.messageTargets.NodeMessageTarget; import jetbrains.mps.errors.messageTargets.MessageTarget; import jetbrains.mps.errors.QuickFixProvider; import jetbrains.mps.internal.collections.runtime.ListSequence; import jetbrains.mps.lang.smodel.generator.smodelAdapter.SNodeOperations; import jetbrains.mps.errors.SimpleErrorReporter; import jetbrains.mps.errors.MessageStatus; import jetbrains.mps.errors.IErrorReporter; import jetbrains.mps.baseLanguage.closures.runtime._FunctionTypes; public abstract class LanguageErrorsCollector { public void addError(@NotNull SNode node, String errorString, @Nullable SNodeReference ruleNode) { addError(node, errorString, ruleNode, new NodeMessageTarget()); } public void addError(@NotNull SNode errorNode, String errorString, @Nullable SNodeReference ruleNode, MessageTarget messageTarget) { addError(errorNode, errorString, ruleNode, messageTarget, null); } public void addError(@NotNull SNode errorNode, String errorString, @Nullable SNodeReference ruleNode, MessageTarget messageTarget, QuickFixProvider intentionProvider) { for (SNode anc : ListSequence.fromList(SNodeOperations.getNodeAncestors(errorNode, null, false))) { addDependency(anc); } SimpleErrorReporter reporter = new SimpleErrorReporter(errorNode, errorString, ruleNode, MessageStatus.ERROR, messageTarget); if (intentionProvider != null) { reporter.setIntentionProvider(intentionProvider); } addError(reporter); } protected abstract void addError(IErrorReporter errorReporter); public void addDependency(SNode dependency) { } public <Result> Result runCheckingAction(_FunctionTypes._return_P0_E0<? extends Result> action) { return action.invoke(); } }