Example #1
0
  public static void virtual_populateMembers_7405920559687241403(
      SNode thisNode, MembersPopulatingContext context, SNode classifierType) {
    // populate own members
    for (SNode member : SNodeOperations.getChildren(thisNode)) {
      if (SNodeOperations.isInstanceOf(
          member, "jetbrains.mps.baseLanguage.structure.IClassifierMember")) {
        BehaviorReflection.invokeVirtual(
            Void.class,
            SNodeOperations.cast(member, "jetbrains.mps.baseLanguage.structure.IClassifierMember"),
            "virtual_populateMember_7405920559687254644",
            new Object[] {context, classifierType});
      }
    }

    // populate super class members
    SNode superClass =
        BehaviorReflection.invokeVirtual(
            (Class<SNode>) ((Class) Object.class),
            thisNode,
            "virtual_getSuperclass_1240936569950",
            new Object[] {});
    if ((superClass != null)) {
      IClassifierType_Behavior.call_populateMembers_7405920559687241253(
          superClass, context, classifierType);
    }

    // populate implemented interfaces members
    for (SNode implementedInterface :
        ListSequence.fromList(SLinkOperations.getTargets(thisNode, "implementedInterface", true))
            .where(
                new IWhereFilter<SNode>() {
                  public boolean accept(SNode it) {
                    return (it != null);
                  }
                })) {
      IClassifierType_Behavior.call_populateMembers_7405920559687241253(
          implementedInterface, context, classifierType);
    }
  }
Example #2
0
 public static List<SNode> virtual_getMethodsToOverride_5418393554803767537(SNode thisNode) {
   List<SNode> methods = new ArrayList<SNode>();
   for (SNode method :
       Sequence.fromIterable(
               IClassifierType_Behavior.call_getMembers_7405920559687277275(
                   BehaviorReflection.invokeVirtual(
                       (Class<SNode>) ((Class) Object.class),
                       thisNode,
                       "virtual_getThisType_7405920559687254782",
                       new Object[] {})))
           .where(
               new IWhereFilter<SNode>() {
                 public boolean accept(SNode it) {
                   return SNodeOperations.isInstanceOf(
                       it, "jetbrains.mps.baseLanguage.structure.InstanceMethodDeclaration");
                 }
               })
           .select(
               new ISelector<SNode, SNode>() {
                 public SNode select(SNode it) {
                   return SNodeOperations.cast(
                       it, "jetbrains.mps.baseLanguage.structure.InstanceMethodDeclaration");
                 }
               })) {
     SNode cls =
         SNodeOperations.getAncestor(
             method, "jetbrains.mps.baseLanguage.structure.Classifier", false, false);
     if (cls == thisNode) {
       continue;
     }
     if (!(SNodeOperations.isInstanceOf(
         cls, "jetbrains.mps.baseLanguage.structure.ClassConcept"))) {
       continue;
     }
     if (SPropertyOperations.getBoolean(method, "isFinal")) {
       continue;
     }
     if (SPropertyOperations.getBoolean(method, "isAbstract")) {
       continue;
     }
     if (SNodeOperations.isInstanceOf(
         SLinkOperations.getTarget(method, "visibility", true),
         "jetbrains.mps.baseLanguage.structure.PrivateVisibility")) {
       continue;
     }
     ListSequence.fromList(methods).addElement(method);
   }
   return methods;
 }