package jetbrains.mps.lang.test.scripts;
/*Generated by MPS */
import org.jetbrains.mps.openapi.model.SNode;
import jetbrains.mps.lang.smodel.generator.smodelAdapter.AttributeOperations;
import jetbrains.mps.lang.smodel.generator.smodelAdapter.IAttributeDescriptor;
import jetbrains.mps.smodel.adapter.structure.MetaAdapterFactory;
import jetbrains.mps.errors.IErrorReporter;
import jetbrains.mps.lang.test.runtime.TestsErrorsChecker;
import jetbrains.mps.lang.smodel.generator.smodelAdapter.SNodeOperations;
import jetbrains.mps.lang.test.behavior.NodeOperationsContainer__BehaviorDescriptor;
import jetbrains.mps.lang.test.runtime.NodeCheckerUtil;
import jetbrains.mps.kernel.model.MissingDependenciesFixer;
import jetbrains.mps.lang.smodel.generator.smodelAdapter.SConceptOperations;
import org.jetbrains.mps.openapi.model.SModelReference;
import jetbrains.mps.smodel.ModelImports;
public class SpecifyUtil {
public static SNode getOperationsContainer(SNode node) {
return AttributeOperations.getAttribute(node, new IAttributeDescriptor.NodeAttribute(MetaAdapterFactory.getConcept(0x8585453e6bfb4d80L, 0x98deb16074f1d86cL, 0x11b07a3d4b5L, "jetbrains.mps.lang.test.structure.NodeOperationsContainer")));
}
public static Iterable<IErrorReporter> getErrorReporters(SNode node) {
TestsErrorsChecker checker = new TestsErrorsChecker(SNodeOperations.getContainingRoot(node));
return checker.getErrors(node);
}
public static void fillContainerWithRuleMessages(SNode node) {
SNode operationsContainer = SpecifyUtil.getOperationsContainer(node);
assert (operationsContainer != null);
NodeOperationsContainer__BehaviorDescriptor.detachAllErrorOperations_id4QaU5oI0Q4j.invoke(operationsContainer);
Iterable<IErrorReporter> reporters = SpecifyUtil.getErrorReporters(node);
for (IErrorReporter reporter : reporters) {
SNode ruleNode = NodeCheckerUtil.getRuleNodeFromReporter(reporter, SNodeOperations.getModel(node).getRepository());
NodeOperationsContainer__BehaviorDescriptor.createNodeAndAttachReference_idnMEi6H8iBO.invoke(operationsContainer, ruleNode, reporter);
SpecifyUtil.addModelImports(operationsContainer, ruleNode);
}
new MissingDependenciesFixer(SNodeOperations.getModel(operationsContainer)).fixModuleDependencies();
}
public static void attachNewContainer(SNode node) {
SNode container = SConceptOperations.createNewNode(MetaAdapterFactory.getConcept(0x8585453e6bfb4d80L, 0x98deb16074f1d86cL, 0x11b07a3d4b5L, "jetbrains.mps.lang.test.structure.NodeOperationsContainer"));
AttributeOperations.setAttribute(node, new IAttributeDescriptor.NodeAttribute(MetaAdapterFactory.getConcept(0x8585453e6bfb4d80L, 0x98deb16074f1d86cL, 0x11b07a3d4b5L, "jetbrains.mps.lang.test.structure.NodeOperationsContainer")), container);
}
private static void addModelImports(SNode container, SNode ruleNode) {
SModelReference ruleModelRef = SNodeOperations.getModel(ruleNode).getReference();
new ModelImports(SNodeOperations.getModel(container)).addModelImport(ruleModelRef);
}
}