package jetbrains.mps.lang.pattern.generator.baseLanguage.template.util; /*Generated by MPS */ import org.jetbrains.mps.openapi.model.SNode; import jetbrains.mps.generator.template.TemplateQueryContext; import java.util.List; import jetbrains.mps.internal.collections.runtime.ListSequence; import jetbrains.mps.lang.smodel.generator.smodelAdapter.SNodeOperations; import jetbrains.mps.smodel.adapter.structure.MetaAdapterFactory; public class PatternGeneratorUtil { public PatternGeneratorUtil() { } public static SNode get(TemplateQueryContext genContext, SNode var) { List<SNode> nodes = genContext.getAllOutputNodesByInputNodeAndMappingLabel(var, "patternVarField"); if (ListSequence.fromList(nodes).count() == 1) { return ListSequence.fromList(nodes).first(); } SNode varPattern = SNodeOperations.getNodeAncestor(var, MetaAdapterFactory.getConcept(0xd4615e3bd6714ba9L, 0xaf012b78369b0ba7L, 0x108a9cb4791L, "jetbrains.mps.lang.pattern.structure.PatternExpression"), false, false); SNode patternClass = genContext.getOutputNodeByInputNodeAndMappingLabel(varPattern, "patternClass"); for (SNode field : nodes) { if (SNodeOperations.getNodeAncestor(field, MetaAdapterFactory.getConcept(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0xf8c108ca66L, "jetbrains.mps.baseLanguage.structure.ClassConcept"), false, false) == patternClass) { return field; } } return null; } }