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();
}
}