package jetbrains.mps.checkers;
/*Generated by MPS */
import org.jetbrains.mps.openapi.model.SNode;
import org.jetbrains.mps.openapi.model.SModel;
import jetbrains.mps.smodel.SModelStereotype;
import jetbrains.mps.internal.collections.runtime.ListSequence;
import jetbrains.mps.lang.smodel.generator.smodelAdapter.AttributeOperations;
import jetbrains.mps.lang.smodel.generator.smodelAdapter.IAttributeDescriptor;
import jetbrains.mps.internal.collections.runtime.Sequence;
import jetbrains.mps.lang.smodel.generator.smodelAdapter.SNodeOperations;
import jetbrains.mps.smodel.adapter.structure.MetaAdapterFactory;
import jetbrains.mps.internal.collections.runtime.IWhereFilter;
import jetbrains.mps.smodel.behaviour.BHReflection;
import jetbrains.mps.core.aspects.behaviour.SMethodTrimmedId;
public class ErrorReportUtil {
public ErrorReportUtil() {
}
public static boolean shouldReportError(final SNode node) {
SModel model = node.getModel();
if (model == null) {
return false;
}
if (SModelStereotype.isStubModelStereotype(model.getName().getStereotype())) {
return false;
}
SNode current = node;
while (current != null) {
Iterable<SNode> possibleSuppressors = ListSequence.fromList(AttributeOperations.getAttributeList(current, new IAttributeDescriptor.AllAttributes())).union(Sequence.fromIterable(Sequence.<SNode>singleton(current)));
if (Sequence.fromIterable(SNodeOperations.ofConcept(possibleSuppressors, MetaAdapterFactory.getInterfaceConcept(0xceab519525ea4f22L, 0x9b92103b95ca8c0cL, 0x2f16f1b357e19f43L, "jetbrains.mps.lang.core.structure.ISuppressErrors"))).any(new IWhereFilter<SNode>() {
public boolean accept(SNode attr) {
return ((boolean) (Boolean) BHReflection.invoke(attr, SMethodTrimmedId.create("suppress", null, "2WmWrdnSpX7"), node));
}
})) {
return false;
}
if (SNodeOperations.isInstanceOf(current, MetaAdapterFactory.getInterfaceConcept(0xceab519525ea4f22L, 0x9b92103b95ca8c0cL, 0xe8924c64a55a26fL, "jetbrains.mps.lang.core.structure.IAntisuppressErrors"))) {
return true;
}
current = SNodeOperations.getParent(current);
}
return true;
}
public static boolean manuallySuppressed(SNode node) {
return ListSequence.fromList(SNodeOperations.getNodeAncestors(node, MetaAdapterFactory.getInterfaceConcept(0xceab519525ea4f22L, 0x9b92103b95ca8c0cL, 0x2f16f1b357e19f42L, "jetbrains.mps.lang.core.structure.ICanSuppressErrors"), true)).any(new IWhereFilter<SNode>() {
public boolean accept(SNode it) {
return (AttributeOperations.getAttribute(it, new IAttributeDescriptor.NodeAttribute(MetaAdapterFactory.getConcept(0xceab519525ea4f22L, 0x9b92103b95ca8c0cL, 0x3a98b0957fe8e5d2L, "jetbrains.mps.lang.core.structure.SuppressErrorsAnnotation"))) != null);
}
});
}
}