Beispiel #1
0
 public static SNode getContextForInnerClass(
     TemplateQueryContext genContext, SNode node, boolean topmost) {
   SNode usage =
       genContext.getOutputNodeByInputNodeAndMappingLabel(
           SLinkOperations.getTarget(node, "inner", true), "classUsageExpr");
   if ((usage != null)) {
     if (SPropertyOperations.getBoolean(node, "nonStatic")) {
       return SNodeOperations.getAncestor(
           usage, "jetbrains.mps.baseLanguage.structure.ClassConcept", false, false);
     }
     if (topmost) {
       return ListSequence.fromList(
               SNodeOperations.getAncestors(
                   usage, "jetbrains.mps.baseLanguage.structure.ClassConcept", false))
           .last();
     } else {
       return ListSequence.fromList(
               SNodeOperations.getAncestors(
                   usage, "jetbrains.mps.baseLanguage.structure.ClassConcept", false))
           .where(
               new IWhereFilter<SNode>() {
                 public boolean accept(SNode it) {
                   return BehaviorReflection.invokeVirtual(
                       Boolean.TYPE, it, "virtual_isStatic_7405920559687241224", new Object[] {});
                 }
               })
           .first();
     }
   } else {
     SNode outclass =
         genContext.getCopiedOutputNodeForInputNode(
             SNodeOperations.getAncestor(
                 node, "jetbrains.mps.baseLanguage.structure.ClassConcept", false, false));
     if ((outclass != null)) {
       return ListSequence.fromList(
               SNodeOperations.getAncestors(
                   outclass, "jetbrains.mps.baseLanguage.structure.ClassConcept", true))
           .last();
     }
   }
   return null;
 }
Beispiel #2
0
 public static SNode findEnclosingTableClass2(SNode node, TemplateQueryContext genctx) {
   SNode table =
       SNodeOperations.getAncestor(
           node, "jetbrains.mps.baseLanguage.dates.structure.DateFormatsTable", true, false);
   return genctx.getOutputNodeByInputNodeAndMappingLabel(table, "FormatTableClass");
 }