コード例 #1
0
 private boolean isApplicableToNode(final SNode node, final EditorContext editorContext) {
   return (SNodeOperations.getParent(node) != null)
       && SNodeOperations.isInstanceOf(
           SNodeOperations.getParent(node),
           MetaAdapterFactory.getConcept(
               0x18bc659203a64e29L,
               0xa83a7ff23bde13baL,
               0xf9eaff2517L,
               "jetbrains.mps.lang.editor.structure.CellModel_Collection"))
       && SNodeOperations.isInstanceOf(
           SLinkOperations.getTarget(
               SNodeOperations.cast(
                   SNodeOperations.getParent(node),
                   MetaAdapterFactory.getConcept(
                       0x18bc659203a64e29L,
                       0xa83a7ff23bde13baL,
                       0xf9eaff2517L,
                       "jetbrains.mps.lang.editor.structure.CellModel_Collection")),
               MetaAdapterFactory.getContainmentLink(
                   0x18bc659203a64e29L,
                   0xa83a7ff23bde13baL,
                   0xf9eaff2517L,
                   0x10192e0d3baL,
                   "cellLayout")),
           MetaAdapterFactory.getConcept(
               0x18bc659203a64e29L,
               0xa83a7ff23bde13baL,
               0x120150bb441L,
               "jetbrains.mps.lang.editor.structure.CellLayout_Indent"))
       && !(EditorCellModel_BehaviorDescriptor.isNewLine_idi0pLPAc.invoke(node));
 }
コード例 #2
0
ファイル: QueriesGenerated.java プロジェクト: yan96in/MPS
 public static boolean baseMappingRule_Condition_1196429868936(
     final BaseMappingRuleContext _context) {
   return SNodeOperations.isInstanceOf(
           TypeChecker.getInstance()
               .getTypeOf(
                   SLinkOperations.getTarget(
                       _context.getNode(),
                       MetaAdapterFactory.getContainmentLink(
                           0xf3061a5392264cc5L,
                           0xa443f952ceaf5816L,
                           0xfbdeb6fecfL,
                           0xfbdeb7a11cL,
                           "leftExpression"))),
           MetaAdapterFactory.getConcept(
               0xff24ab03965e4d15L,
               0x9aed52dc276658f4L,
               0x11686a0422aL,
               "jetbrains.mps.samples.complex.structure.ComplexType"))
       && SNodeOperations.isInstanceOf(
           TypeChecker.getInstance()
               .getTypeOf(
                   SLinkOperations.getTarget(
                       _context.getNode(),
                       MetaAdapterFactory.getContainmentLink(
                           0xf3061a5392264cc5L,
                           0xa443f952ceaf5816L,
                           0xfbdeb6fecfL,
                           0xfbdeb7a11bL,
                           "rightExpression"))),
           MetaAdapterFactory.getConcept(
               0xff24ab03965e4d15L,
               0x9aed52dc276658f4L,
               0x11686a0422aL,
               "jetbrains.mps.samples.complex.structure.ComplexType"));
 }
コード例 #3
0
 @Override
 public void childRemoved(SModelChildEvent event) {
   if (SNodeOperations.isInstanceOf(
       ((SNode) event.getParent()),
       MetaAdapterFactory.getConcept(
           0xf3061a5392264cc5L,
           0xa443f952ceaf5816L,
           0x101d9d3ca30L,
           "jetbrains.mps.baseLanguage.structure.Classifier"))) {
     if (!(SNodeOperations.isInstanceOf(
         ((SNode) event.getChild()),
         MetaAdapterFactory.getConcept(
             0xf3061a5392264cc5L,
             0xa443f952ceaf5816L,
             0xf8cc56b1fcL,
             "jetbrains.mps.baseLanguage.structure.BaseMethodDeclaration")))) {
       return;
     }
   }
   if (SNodeOperations.isInstanceOf(
       ((SNode) event.getParent()),
       MetaAdapterFactory.getConcept(
           0xf3061a5392264cc5L,
           0xa443f952ceaf5816L,
           0xf8cc56b1fcL,
           "jetbrains.mps.baseLanguage.structure.BaseMethodDeclaration"))) {
     String role = event.getChildRole();
     if (!("parameter".equals(role))) {
       return;
     }
   }
   super.childRemoved(event);
 }
コード例 #4
0
  private SNode getConceptDeclaration(SNode node, final Map<String, Object> _params) {
    {
      final SNode acd = node;
      if (SNodeOperations.isInstanceOf(
          acd,
          MetaAdapterFactory.getConcept(
              0xc72da2b97cce4447L,
              0x8389f407dc1158b7L,
              0x1103553c5ffL,
              "jetbrains.mps.lang.structure.structure.AbstractConceptDeclaration"))) {
        return acd;
      }
    }
    {
      final SNode conceptAspect = node;
      if (SNodeOperations.isInstanceOf(
          conceptAspect,
          MetaAdapterFactory.getInterfaceConcept(
              0xc72da2b97cce4447L,
              0x8389f407dc1158b7L,
              0x24614259e94f0c84L,
              "jetbrains.mps.lang.structure.structure.IConceptAspect"))) {
        return ((SNode)
            BHReflection.invoke(
                conceptAspect, SMethodTrimmedId.create("getBaseConcept", null, "2hxg_BDjKM8")));
      }
    }

    return null;
  }
コード例 #5
0
 private String getNodeName(SNode node, boolean isLast)
     throws ArtifactsRelativePathHelper.RelativePathException {
   if (SNodeOperations.isInstanceOf(node, "jetbrains.mps.build.structure.BuildLayout_Folder")) {
     return getBSName(
         SLinkOperations.getTarget(
             SNodeOperations.cast(node, "jetbrains.mps.build.structure.BuildLayout_Folder"),
             "containerName",
             true));
   } else if (SNodeOperations.isInstanceOf(node, "jetbrains.mps.build.structure.BuildLayout_Copy")
       && isLast) {
     SNode fileset =
         SLinkOperations.getTarget(
             SNodeOperations.cast(node, "jetbrains.mps.build.structure.BuildLayout_Copy"),
             "fileset",
             true);
     if (SNodeOperations.isInstanceOf(
         fileset, "jetbrains.mps.build.structure.BuildInputSingleFile")) {
       return BuildSourcePath_Behavior.call_getLastSegment_1368030936106771141(
           SLinkOperations.getTarget(
               SNodeOperations.cast(fileset, "jetbrains.mps.build.structure.BuildInputSingleFile"),
               "path",
               true),
           null);
     } else {
       throw new ArtifactsRelativePathHelper.RelativePathException(
           "cannot build relative path for copy, fileset is " + node.getConceptShortName());
     }
   }
   throw new ArtifactsRelativePathHelper.RelativePathException(
       "cannot build relative path for " + node.getConceptShortName());
 }
コード例 #6
0
 @Override
 public boolean isApplicable(SNode node) {
   if (SNodeOperations.getParent(node) == null
       || !(SNodeOperations.isInstanceOf(
           SNodeOperations.getParent(node),
           MetaAdapterFactory.getConcept(
               0xf3061a5392264cc5L,
               0xa443f952ceaf5816L,
               0xf8c108ca66L,
               "jetbrains.mps.baseLanguage.structure.ClassConcept")))) {
     return false;
   }
   if (!(SNodeOperations.isInstanceOf(
           node,
           MetaAdapterFactory.getConcept(
               0xf3061a5392264cc5L,
               0xa443f952ceaf5816L,
               0xf8c108ca68L,
               "jetbrains.mps.baseLanguage.structure.FieldDeclaration")))
       && !(SNodeOperations.isInstanceOf(
           node,
           MetaAdapterFactory.getConcept(
               0xf3061a5392264cc5L,
               0xa443f952ceaf5816L,
               0xf93c84351fL,
               "jetbrains.mps.baseLanguage.structure.StaticFieldDeclaration")))) {
     return false;
   }
   return true;
 }
コード例 #7
0
ファイル: QueriesGenerated.java プロジェクト: TonyRietwyk/MPS
 public static void nodeFactory_NodeSetup_TypeOfExpression_1179476271704(
     final IOperationContext operationContext, final NodeSetupContext _context) {
   if (SNodeOperations.isInstanceOf(
       _context.getSampleNode(), "jetbrains.mps.baseLanguage.structure.Expression")) {
     if (!(SNodeOperations.isInstanceOf(
         _context.getSampleNode(), "jetbrains.mps.lang.typesystem.structure.TypeOfExpression"))) {
       SLinkOperations.setTarget(
           _context.getNewNode(),
           "term",
           SNodeOperations.cast(
               _context.getSampleNode(), "jetbrains.mps.baseLanguage.structure.Expression"),
           true);
     } else {
       SLinkOperations.setTarget(
           _context.getNewNode(),
           "term",
           SLinkOperations.getTarget(
               SNodeOperations.cast(
                   _context.getSampleNode(),
                   "jetbrains.mps.lang.typesystem.structure.TypeOfExpression"),
               "term",
               true),
           true);
     }
   }
 }
コード例 #8
0
ファイル: QueriesGenerated.java プロジェクト: java66liu/MPS
 public static SNode sourceNodeQuery_3624172675694702280(
     final IOperationContext operationContext, final SourceSubstituteMacroNodeContext _context) {
   // remove this method at all
   SNode returnType = SLinkOperations.getTarget(_context.getNode(), "returnType", true);
   if (SNodeOperations.isInstanceOf(
           returnType, "jetbrains.mps.baseLanguage.structure.PrimitiveType")
       || (SNodeOperations.isInstanceOf(
               returnType, "jetbrains.mps.baseLanguage.structure.ClassifierType")
           && ListSequence.fromList(
                   SLinkOperations.getTargets(
                       SNodeOperations.cast(
                           returnType, "jetbrains.mps.baseLanguage.structure.ClassifierType"),
                       "parameter",
                       true))
               .isEmpty())
       || SNodeOperations.isInstanceOf(
           returnType, "jetbrains.mps.baseLanguage.structure.StringType")) {
     return BehaviorReflection.invokeVirtual(
         (Class<SNode>) ((Class) Object.class),
         returnType,
         "virtual_getClassExpression_1213877337357",
         new Object[] {});
   } else {
     return _quotation_createNode_x583g4_a0a0c0ac(returnType);
   }
 }
コード例 #9
0
  public Map<String, String> getContextClassifiers(SNode contextNode) {
    // only AnonymousClass has Classifier as reference
    // todo: make it clearer
    if (SNodeOperations.isInstanceOf(
        contextNode, "jetbrains.mps.baseLanguage.structure.IAnonymousClass")) {
      contextNode = SNodeOperations.getParent(contextNode);
    }
    if (SNodeOperations.isInstanceOf(
        contextNode, "jetbrains.mps.baseLanguage.structure.Classifier")) {
      if (LOG.isEnabledFor(Level.WARN)) {
        LOG.warn("contextNode is classifier in getContextClassifiers: " + contextNode);
      }
      return Collections.emptyMap();
    }

    // find first classifier in path
    String sourceChildRole = null;
    while ((contextNode != null)
        && !(SNodeOperations.isInstanceOf(
            contextNode, "jetbrains.mps.baseLanguage.structure.Classifier"))) {
      sourceChildRole = contextNode.getRoleInParent();
      contextNode = SNodeOperations.getParent(contextNode);
    }

    if ((contextNode == null)) {
      // todo: impossible?
      return Collections.emptyMap();
    }

    return contextClassifiersCache.get(
        MultiTuple.<SNode, String>from(
            SNodeOperations.cast(contextNode, "jetbrains.mps.baseLanguage.structure.Classifier"),
            sourceChildRole));
  }
コード例 #10
0
ファイル: Queries.java プロジェクト: strategist922/MPS
 public static SNode getBinaryOperationType(SNode leftType, SNode rightType, boolean mayBeString) {
   List<SNode> leastCommonSupertypes =
       SubtypingUtil.leastCommonSuperTypes(Arrays.asList(leftType, rightType), null);
   if (mayBeString) {
     SModel javaLangJavaStubModelDescriptor =
         SModelRepository.getInstance()
             .getModelDescriptor(SModelReference.fromString("java.lang@java_stub"));
     assert javaLangJavaStubModelDescriptor != null;
     SModel javaLang = javaLangJavaStubModelDescriptor.getSModel();
     SNode stringClass = SModelOperations.getRootByName(javaLang, "String");
     if (SNodeOperations.isInstanceOf(
                 leftType, "jetbrains.mps.baseLanguage.structure.ClassifierType")
             && SLinkOperations.getTarget(
                     (SNodeOperations.cast(
                         leftType, "jetbrains.mps.baseLanguage.structure.ClassifierType")),
                     "classifier",
                     false)
                 == stringClass
         || SNodeOperations.isInstanceOf(
                 rightType, "jetbrains.mps.baseLanguage.structure.ClassifierType")
             && SLinkOperations.getTarget(
                     (SNodeOperations.cast(
                         rightType, "jetbrains.mps.baseLanguage.structure.ClassifierType")),
                     "classifier",
                     false)
                 == stringClass) {
       SNode classifierType =
           SConceptOperations.createNewNode(
               "jetbrains.mps.baseLanguage.structure.ClassifierType", null);
       SLinkOperations.setTarget(
           classifierType,
           "classifier",
           SNodeOperations.cast(stringClass, "jetbrains.mps.baseLanguage.structure.Classifier"),
           false);
       return classifierType;
     }
   }
   if (leastCommonSupertypes.isEmpty()) {
     SNode runtimeErrorType =
         SConceptOperations.createNewNode(
             "jetbrains.mps.lang.typesystem.structure.RuntimeErrorType", null);
     SPropertyOperations.set(runtimeErrorType, "errorText", "incompatible types");
     return runtimeErrorType;
   }
   SNode type = leastCommonSupertypes.iterator().next();
   {
     IMatchingPattern pattern_j6k1pf_e0c =
         HUtil.createMatchingPatternByConceptFQName(
             "jetbrains.mps.baseLanguage.structure.PrimitiveType");
     SNode coercedNode_j6k1pf_e0c =
         TypeChecker.getInstance().getRuntimeSupport().coerce_(type, pattern_j6k1pf_e0c);
     if (coercedNode_j6k1pf_e0c != null) {
       return coercedNode_j6k1pf_e0c;
     } else {
       return type;
     }
   }
 }
コード例 #11
0
 private boolean isApplicableToNode(final SNode node, final EditorContext editorContext) {
   Iterable<SNode> nodes =
       ListSequence.fromList(SNodeOperations.getChildren(SNodeOperations.getParent(node)))
           .where(
               new IWhereFilter<SNode>() {
                 public boolean accept(SNode it) {
                   return SNodeOperations.isInstanceOf(
                       it, "jetbrains.mps.lang.generator.structure.NodeMacro");
                 }
               });
   boolean seen = false;
   for (SNode n : nodes) {
     if (seen) {
       if (SNodeOperations.isInstanceOf(
           n, "jetbrains.mps.lang.generator.structure.CopySrcNodeMacro")) {
         SNode m =
             SLinkOperations.getTarget(
                 SNodeOperations.cast(
                     n, "jetbrains.mps.lang.generator.structure.CopySrcNodeMacro"),
                 "sourceNodeQuery",
                 true);
         if ((m == null)
             || (SLinkOperations.getTarget(m, "body", true) == null)
             || ListSequence.fromList(
                     SLinkOperations.getTargets(
                         SLinkOperations.getTarget(m, "body", true), "statement", true))
                 .isEmpty()
             || ListSequence.fromList(
                         SLinkOperations.getTargets(
                             SLinkOperations.getTarget(m, "body", true), "statement", true))
                     .count()
                 > 1) {
           return false;
         }
         SNode st =
             ListSequence.fromList(
                     SLinkOperations.getTargets(
                         SLinkOperations.getTarget(m, "body", true), "statement", true))
                 .first();
         return SNodeOperations.isInstanceOf(
                 st, "jetbrains.mps.baseLanguage.structure.ExpressionStatement")
             && SNodeOperations.isInstanceOf(
                 SLinkOperations.getTarget(
                     SNodeOperations.cast(
                         st, "jetbrains.mps.baseLanguage.structure.ExpressionStatement"),
                     "expression",
                     true),
                 "jetbrains.mps.lang.generator.structure.TemplateFunctionParameter_sourceNode");
       } else {
         return false;
       }
     } else if (n == node) {
       seen = true;
     }
   }
   return false;
 }
コード例 #12
0
 private static Boolean hasParameterRefs_id6qD99pUaonP(@NotNull SNode __thisNode__) {
   SNode node = __thisNode__;
   node = SNodeOperations.getParent(node);
   while (node != null
       && !((SNodeOperations.isInstanceOf(
               node,
               MetaAdapterFactory.getInterfaceConcept(
                   0x7c9e280794ad4afcL,
                   0xadf0aaee45eb2895L,
                   0x48db75d5dc496a4fL,
                   "jetbrains.mps.samples.lambdaCalculus.structure.VariableOwner"))
           && !(ListSequence.fromList(
                   VariableOwner_BehaviorDescriptor.getVariables_id7M_MU5__$7C.invoke(
                       SNodeOperations.cast(
                           node,
                           MetaAdapterFactory.getInterfaceConcept(
                               0x7c9e280794ad4afcL,
                               0xadf0aaee45eb2895L,
                               0x48db75d5dc496a4fL,
                               "jetbrains.mps.samples.lambdaCalculus.structure.VariableOwner"))))
               .contains(
                   SNodeOperations.as(
                       __thisNode__,
                       MetaAdapterFactory.getConcept(
                           0x7c9e280794ad4afcL,
                           0xadf0aaee45eb2895L,
                           0x48db75d5dc496b12L,
                           "jetbrains.mps.samples.lambdaCalculus.structure.Variable"))))))) {
     node = SNodeOperations.getParent(node);
   }
   if (SNodeOperations.isInstanceOf(
       node,
       MetaAdapterFactory.getConcept(
           0x7c9e280794ad4afcL,
           0xadf0aaee45eb2895L,
           0x448ba254edbfc79fL,
           "jetbrains.mps.samples.lambdaCalculus.structure.LetExpression"))) {
     return true;
   }
   if (!(SNodeOperations.isInstanceOf(
       node,
       MetaAdapterFactory.getConcept(
           0x7c9e280794ad4afcL,
           0xadf0aaee45eb2895L,
           0x37d11ba7d7ec98e9L,
           "jetbrains.mps.samples.lambdaCalculus.structure.LambdaExpression")))) {
     return false;
   }
   return LambdaExpression_BehaviorDescriptor.isInFull_id6nQdzuslK0D.invoke(
       SNodeOperations.cast(
           node,
           MetaAdapterFactory.getConcept(
               0x7c9e280794ad4afcL,
               0xadf0aaee45eb2895L,
               0x37d11ba7d7ec98e9L,
               "jetbrains.mps.samples.lambdaCalculus.structure.LambdaExpression")));
 }
コード例 #13
0
 public static List<SNode> call_getAllSuperClassifiers_4892662966716545618(SNode thisNode) {
   Set<SNode> seen = SetSequence.fromSet(new HashSet<SNode>());
   List<SNode> result = new ArrayList<SNode>();
   Queue<SNode> q = QueueSequence.fromQueue(new LinkedList<SNode>());
   QueueSequence.fromQueue(q).addLastElement(thisNode);
   while (QueueSequence.fromQueue(q).isNotEmpty()) {
     SNode qn = QueueSequence.fromQueue(q).removeFirstElement();
     ListSequence.fromList(result).addElement(qn);
     if (SNodeOperations.isInstanceOf(qn, "jetbrains.mps.baseLanguage.structure.ClassConcept")) {
       if ((SLinkOperations.getTarget(
               SNodeOperations.cast(qn, "jetbrains.mps.baseLanguage.structure.ClassConcept"),
               "superclass",
               true)
           != null)) {
         SNode cl =
             SLinkOperations.getTarget(
                 SLinkOperations.getTarget(
                     SNodeOperations.cast(qn, "jetbrains.mps.baseLanguage.structure.ClassConcept"),
                     "superclass",
                     true),
                 "classifier",
                 false);
         if (seen.add(cl)) {
           QueueSequence.fromQueue(q).addLastElement(cl);
         }
       }
       for (SNode i :
           SLinkOperations.getTargets(
               SNodeOperations.cast(qn, "jetbrains.mps.baseLanguage.structure.ClassConcept"),
               "implementedInterface",
               true)) {
         SNode cl = SLinkOperations.getTarget(i, "classifier", false);
         if (seen.add(cl)) {
           QueueSequence.fromQueue(q).addLastElement(cl);
         }
       }
     } else if (SNodeOperations.isInstanceOf(
         qn, "jetbrains.mps.baseLanguage.structure.Interface")) {
       for (SNode i :
           SLinkOperations.getTargets(
               SNodeOperations.cast(qn, "jetbrains.mps.baseLanguage.structure.Interface"),
               "extendedInterface",
               true)) {
         SNode cl = SLinkOperations.getTarget(i, "classifier", false);
         if (seen.add(cl)) {
           QueueSequence.fromQueue(q).addLastElement(cl);
         }
       }
     }
   }
   SNode obj = _quotation_createNode_xjj00_a0f0m();
   if (seen.add(SLinkOperations.getTarget(obj, "classifier", false))) {
     ListSequence.fromList(result).addElement(SLinkOperations.getTarget(obj, "classifier", false));
   }
   return result;
 }
コード例 #14
0
  private Map<String, String> getContextClassifiers(SNode contextNode, String sourceChildRole) {
    Map<String, String> bindings = new HashMap<String, String>();

    SNode current = contextNode;
    while ((current != null)) {
      if (SNodeOperations.isInstanceOf(
          current, "jetbrains.mps.baseLanguage.structure.Classifier")) {
        boolean processNestedClassifiers = false;
        if (SNodeOperations.isInstanceOf(
                current, "jetbrains.mps.baseLanguage.structure.AnonymousClass")
            || SNodeOperations.isInstanceOf(
                current, "jetbrains.mps.baseLanguage.structure.EnumClass")) {
          processNestedClassifiers = true;
        } else if (SNodeOperations.isInstanceOf(
            current, "jetbrains.mps.baseLanguage.structure.Interface")) {
          processNestedClassifiers = !("extendedInterface".equals(sourceChildRole));
        } else if (SNodeOperations.isInstanceOf(
            current, "jetbrains.mps.baseLanguage.structure.ClassConcept")) {
          processNestedClassifiers =
              !("superclass".equals(sourceChildRole)
                  || "implementedInterface".equals(sourceChildRole));
        } else {
          if (LOG.isEnabledFor(Level.WARN)) {
            LOG.warn("Illegal classifier node in bl textgen: " + current);
          }
        }

        // todo: is it true? had a bug with it. Look like nested classifier has more priority then
        // class with same name
        addClassifierToBindingMap(
            bindings,
            SNodeOperations.cast(current, "jetbrains.mps.baseLanguage.structure.Classifier"));
        if (processNestedClassifiers) {
          for (Map.Entry<String, String> simpleToFqName :
              nestedClassifiersCache
                  .get(
                      SNodeOperations.cast(
                          current, "jetbrains.mps.baseLanguage.structure.Classifier"))
                  .entrySet()) {
            if (!(bindings.containsKey(simpleToFqName.getKey()))) {
              bindings.put(simpleToFqName.getKey(), simpleToFqName.getValue());
            }
          }
        }
      }

      // todo: specialized links?
      // should not be a problem: superclass/extendedInterface/implementedInterface not specialized
      sourceChildRole = current.getRoleInParent();
      current = SNodeOperations.getParent(current);
    }

    return bindings;
  }
コード例 #15
0
 @Deprecated
 private static boolean staticCanBeAChild_Old(
     SNode node,
     SNode parentNode,
     SNode link,
     SNode childConcept,
     final IOperationContext operationContext) {
   SNode pnode =
       (SNodeOperations.isInstanceOf(
               parentNode,
               MetaAdapterFactory.getConcept(
                   0xcf935df46994e9cL,
                   0xa132fa109541cba3L,
                   0x14d3fb6fb843ebddL,
                   "jetbrains.mps.build.mps.structure.BuildMps_Group"))
           ? SNodeOperations.getParent(parentNode)
           : parentNode);
   return SNodeOperations.isInstanceOf(
               pnode,
               MetaAdapterFactory.getConcept(
                   0x798100da4f0a421aL,
                   0xb99171f8c50ce5d2L,
                   0x4df58c6f18f84a13L,
                   "jetbrains.mps.build.structure.BuildProject"))
           && ListSequence.fromList(
                   SLinkOperations.getChildren(
                       SNodeOperations.cast(
                           pnode,
                           MetaAdapterFactory.getConcept(
                               0x798100da4f0a421aL,
                               0xb99171f8c50ce5d2L,
                               0x4df58c6f18f84a13L,
                               "jetbrains.mps.build.structure.BuildProject")),
                       MetaAdapterFactory.getContainmentLink(
                           0x798100da4f0a421aL,
                           0xb99171f8c50ce5d2L,
                           0x4df58c6f18f84a13L,
                           0x5c3f3e2c1ce9ac70L,
                           "plugins")))
               .any(
                   new IWhereFilter<SNode>() {
                     public boolean accept(SNode it) {
                       return SNodeOperations.isInstanceOf(
                           it,
                           MetaAdapterFactory.getConcept(
                               0xcf935df46994e9cL,
                               0xa132fa109541cba3L,
                               0xc0bde9fc71699d9L,
                               "jetbrains.mps.build.mps.structure.BuildMPSPlugin"));
                     }
                   })
       || pnode.getConcept().getQualifiedName().startsWith("jetbrains.mps.lang.generator");
 }
コード例 #16
0
 private boolean isApplicableToNode(final SNode node, final EditorContext editorContext) {
   return ListSequence.fromList(SLinkOperations.getTargets(node, "typeArgument", true)).isEmpty()
       && !((SNodeOperations.isInstanceOf(
               node, "jetbrains.mps.baseLanguage.structure.LocalMethodCall")
           && (SNodeOperations.isInstanceOf(
               SLinkOperations.getTarget(
                   SNodeOperations.cast(
                       node, "jetbrains.mps.baseLanguage.structure.LocalMethodCall"),
                   "baseMethodDeclaration",
                   false),
               "jetbrains.mps.baseLanguage.structure.InstanceMethodDeclaration"))));
 }
コード例 #17
0
 public static ExtractMethodRefactoringParameters createParameters(List<SNode> nodes) {
   SNode first = ListSequence.fromList(nodes).first();
   if (SNodeOperations.isInstanceOf(first, "jetbrains.mps.baseLanguage.structure.Expression")
       && SNodeOperations.isInstanceOf(
           SNodeOperations.getParent(first),
           "jetbrains.mps.baseLanguage.structure.ExpressionStatement")) {
     List<SNode> newNodes = new ArrayList<SNode>();
     ListSequence.fromList(newNodes).addElement(SNodeOperations.getParent(first));
     return new ExtractMethodRefactoringParameters(newNodes);
   }
   return new ExtractMethodRefactoringParameters(nodes);
 }
コード例 #18
0
ファイル: QueriesGenerated.java プロジェクト: java66liu/MPS
 public static boolean baseMappingRule_Condition_4540508509659909015(
     final IOperationContext operationContext, final BaseMappingRuleContext _context) {
   SNode lValue = SLinkOperations.getTarget(_context.getNode(), "lValue", true);
   return SNodeOperations.isInstanceOf(
           lValue, "jetbrains.mps.baseLanguage.structure.DotExpression")
       && SNodeOperations.isInstanceOf(
           SLinkOperations.getTarget(
               SNodeOperations.cast(lValue, "jetbrains.mps.baseLanguage.structure.DotExpression"),
               "operation",
               true),
           "jetbrains.mps.baseLanguage.structure.PropertyReference");
 }
コード例 #19
0
  private void _populateLocalVariables(SNode loopStatement, List<SNode> result) {
    for (SNode child : SNodeOperations.getChildren(loopStatement)) {
      if (child.getRoleInParent().equals("body")) {
        continue;
      }
      if (SNodeOperations.isInstanceOf(
          child, "jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration")) {
        result.add(child);
      }

      // <node>
      List<SNode> moreChildren = new ArrayList<SNode>();
      if (SNodeOperations.isInstanceOf(
          loopStatement, "jetbrains.mps.lang.typesystem.structure.MultipleForeachLoop")) {
        ListSequence.fromList(moreChildren)
            .addSequence(
                ListSequence.fromList(
                        SLinkOperations.getTargets(
                            SNodeOperations.cast(
                                loopStatement,
                                "jetbrains.mps.lang.typesystem.structure.MultipleForeachLoop"),
                            "loopVariable",
                            true))
                    .where(
                        new IWhereFilter<SNode>() {
                          public boolean accept(SNode it) {
                            return (SLinkOperations.getTarget(it, "variable", true) != null);
                          }
                        })
                    .select(
                        new ISelector<SNode, SNode>() {
                          public SNode select(SNode it) {
                            return SLinkOperations.getTarget(it, "variable", true);
                          }
                        }));
      }
      for (SNode child_ : moreChildren) {
        result.add(child_);
      }
    }

    SNode containingLoop =
        SNodeOperations.as(
            LocalVariablesScope.findThisOrParent(
                SNodeOperations.getParent(loopStatement),
                SConceptOperations.findConceptDeclaration(
                    "jetbrains.mps.baseLanguage.structure.AbstractLoopStatement")),
            "jetbrains.mps.baseLanguage.structure.AbstractLoopStatement");
    if (containingLoop != null) {
      this._populateLocalVariables(containingLoop, result);
    }
  }
コード例 #20
0
  public SNode getSubOrSuperType(
      SNode xmlType, TypeCheckingContext typeCheckingContext, IsApplicableStatus status) {
    if ((SLinkOperations.getTarget(xmlType, "schema", false) == null)) {
      return _quotation_createNode_vusj77_a0a0a0();
    } else {
      for (SNode te :
          ListSequence.fromList(
              SLinkOperations.getTargets(
                  SLinkOperations.getTarget(
                      SLinkOperations.getTarget(xmlType, "complexType", false),
                      "typeExpressionList",
                      true),
                  "typeExpression",
                  true))) {
        if (SNodeOperations.isInstanceOf(te, "jetbrains.mps.xmlSchema.structure.ComplexContent")) {
          if (SNodeOperations.isInstanceOf(
              SLinkOperations.getTarget(
                  SNodeOperations.cast(te, "jetbrains.mps.xmlSchema.structure.ComplexContent"),
                  "contentItem",
                  true),
              "jetbrains.mps.xmlSchema.structure.Extension")) {
            SNode ct =
                SLinkOperations.getTarget(
                    SLinkOperations.getTarget(
                        SLinkOperations.getTarget(
                            SNodeOperations.cast(
                                te, "jetbrains.mps.xmlSchema.structure.ComplexContent"),
                            "contentItem",
                            true),
                        "complexTypeReference",
                        true),
                    "complexType",
                    false);

            SNode type =
                SConceptOperations.createNewNode(
                    "jetbrains.mps.xmlQuery.structure.XMLElementType", null);
            SLinkOperations.setTarget(
                type,
                "schema",
                SNodeOperations.getAncestor(
                    ct, "jetbrains.mps.xmlSchema.structure.Schema", false, false),
                false);
            SLinkOperations.setTarget(type, "complexType", ct, false);

            return type;
          }
        }
      }
      return _quotation_createNode_vusj77_a1a0a0a();
    }
  }
コード例 #21
0
 public static boolean virtual_onNewLine_3080189811177340422(SNode thisNode) {
   SNode left = SNodeOperations.getPrevSibling(thisNode);
   if (SNodeOperations.isInstanceOf(left, "jetbrains.mps.core.xml.structure.XmlValuePart")) {
     SNode leftContent =
         SNodeOperations.cast(left, "jetbrains.mps.core.xml.structure.XmlValuePart");
     return SNodeOperations.isInstanceOf(
             leftContent, "jetbrains.mps.core.xml.structure.XmlTextValue")
         || (SPropertyOperations.getString(thisNode, "text") == null
                 || SPropertyOperations.getString(thisNode, "text").length() == 0)
             && (SNodeOperations.getNextSibling(thisNode) == null);
   }
   return false;
 }
 private boolean isApplicableToNode(final SNode node, final EditorContext editorContext) {
   SNode ruleNode =
       SNodeOperations.getAncestor(
           node, "jetbrains.mps.lang.generator.structure.BaseMappingRule", false, false);
   if (!(SNodeOperations.isInstanceOf(
           ruleNode, "jetbrains.mps.lang.generator.structure.Root_MappingRule")
       || SNodeOperations.isInstanceOf(
           ruleNode, "jetbrains.mps.lang.generator.structure.Weaving_MappingRule")
       || SNodeOperations.isInstanceOf(
           ruleNode, "jetbrains.mps.lang.generator.structure.Reduction_MappingRule"))) {
     return false;
   }
   return true;
 }
コード例 #23
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;
 }
コード例 #24
0
 public boolean isApplicableToNode(final SNode node, final EditorContext editorContext) {
   return (SNodeOperations.getParent(node) != null)
       && SNodeOperations.isInstanceOf(
           SNodeOperations.getParent(node),
           "jetbrains.mps.lang.editor.structure.CellModel_Collection")
       && SNodeOperations.isInstanceOf(
           SLinkOperations.getTarget(
               SNodeOperations.cast(
                   SNodeOperations.getParent(node),
                   "jetbrains.mps.lang.editor.structure.CellModel_Collection"),
               "cellLayout",
               true),
           "jetbrains.mps.lang.editor.structure.CellLayout_Indent")
       && !(EditorCellModel_Behavior.call_isNewLine_1237383076236(node));
 }
コード例 #25
0
 private Map<SNode, Boolean> getOverloadedOperators(SNode node, SNode leftType, SNode rightType) {
   Map<SNode, Boolean> result = MapSequence.fromMap(new HashMap<SNode, Boolean>());
   if (!(SNodeOperations.isInstanceOf(
       node, "jetbrains.mps.baseLanguage.structure.BinaryOperation"))) {
     return result;
   }
   for (SNode operator : getOperatorContainers()) {
     if (isOverloading(
         SNodeOperations.cast(node, "jetbrains.mps.baseLanguage.structure.BinaryOperation"),
         leftType,
         rightType,
         operator)) {
       MapSequence.fromMap(result).put(operator, false);
     }
     if (SPropertyOperations.getBoolean(operator, "commutative")
         && isOverloading(
             SNodeOperations.cast(node, "jetbrains.mps.baseLanguage.structure.BinaryOperation"),
             rightType,
             leftType,
             operator)) {
       MapSequence.fromMap(result).put(operator, true);
     }
   }
   return result;
 }
コード例 #26
0
 public SNode getNearestOverloaded(SNode node, SNode leftType, SNode rightType) {
   if (!(SNodeOperations.isInstanceOf(
       node, "jetbrains.mps.baseLanguage.structure.BinaryOperation"))) {
     return null;
   }
   SNode result = (SNode) (node.getUserObject("operator"));
   if (result != null) {
     return result;
   }
   Map<SNode, Boolean> operatorMap =
       getOverloadedOperators(
           SNodeOperations.cast(node, "jetbrains.mps.baseLanguage.structure.BinaryOperation"),
           leftType,
           rightType);
   if (MapSequence.fromMap(operatorMap).isEmpty()) {
     return null;
   }
   result = MapSequence.fromMap(operatorMap).first().key();
   boolean resultReversed = MapSequence.fromMap(operatorMap).first().value();
   for (IMapping<SNode, Boolean> operatorEntry : MapSequence.fromMap(operatorMap)) {
     SNode operator = operatorEntry.key();
     boolean reversed = operatorEntry.value() != resultReversed;
     if (isSubTypeOperator(operator, result, reversed)) {
       result = operator;
       resultReversed = operatorEntry.value();
     }
   }
   node.putUserObject("operator", result);
   node.putUserObject("reversed", resultReversed);
   return result;
 }
コード例 #27
0
ファイル: QueriesGenerated.java プロジェクト: TonyRietwyk/MPS
 public static void nodeFactory_NodeSetup_IsSubtypeExpression_1177408248540(
     final IOperationContext operationContext, final NodeSetupContext _context) {
   if (SNodeOperations.isInstanceOf(
       _context.getSampleNode(), "jetbrains.mps.lang.typesystem.structure.IsSubtypeExpression")) {
     SLinkOperations.setTarget(
         _context.getNewNode(),
         "subtypeExpression",
         SLinkOperations.getTarget(
             SNodeOperations.cast(
                 _context.getSampleNode(),
                 "jetbrains.mps.lang.typesystem.structure.IsSubtypeExpression"),
             "subtypeExpression",
             true),
         true);
     SLinkOperations.setTarget(
         _context.getNewNode(),
         "supertypeExpression",
         SLinkOperations.getTarget(
             SNodeOperations.cast(
                 _context.getSampleNode(),
                 "jetbrains.mps.lang.typesystem.structure.IsSubtypeExpression"),
             "supertypeExpression",
             true),
         true);
   }
 }
コード例 #28
0
ファイル: QueriesGenerated.java プロジェクト: TonyRietwyk/MPS
 public static void nodeFactory_NodeSetup_CoerceExpression_1178879020941(
     final IOperationContext operationContext, final NodeSetupContext _context) {
   if (SNodeOperations.isInstanceOf(
       _context.getSampleNode(), "jetbrains.mps.lang.typesystem.structure.CoerceExpression")) {
     SLinkOperations.setTarget(
         _context.getNewNode(),
         "nodeToCoerce",
         SLinkOperations.getTarget(
             SNodeOperations.cast(
                 _context.getSampleNode(),
                 "jetbrains.mps.lang.typesystem.structure.CoerceExpression"),
             "nodeToCoerce",
             true),
         true);
     SLinkOperations.setTarget(
         _context.getNewNode(),
         "pattern",
         SLinkOperations.getTarget(
             SNodeOperations.cast(
                 _context.getSampleNode(),
                 "jetbrains.mps.lang.typesystem.structure.CoerceExpression"),
             "pattern",
             true),
         true);
   }
 }
コード例 #29
0
 @Override
 protected void doFind(
     SNode node, SearchScope scope, List<SNode> _results, ProgressMonitor monitor) {
   monitor.start(getDescription(), 1);
   try {
     for (SNode nodeUsage :
         FindUtils.executeFinder(
             "jetbrains.mps.lang.structure.findUsages.NodeUsages_Finder",
             node,
             scope,
             monitor.subTask(1))) {
       if (SNodeOperations.hasRole(
           nodeUsage,
           MetaAdapterFactory.getContainmentLink(
               0xf3061a5392264cc5L,
               0xa443f952ceaf5816L,
               0xf8c108ca66L,
               0x10f6353296dL,
               "superclass"))) {
         ListSequence.fromList(_results).addElement(SNodeOperations.getParent(nodeUsage));
       } else if (SNodeOperations.isInstanceOf(
           nodeUsage,
           MetaAdapterFactory.getConcept(
               0xf3061a5392264cc5L,
               0xa443f952ceaf5816L,
               0x1107e0cb103L,
               "jetbrains.mps.baseLanguage.structure.AnonymousClass"))) {
         ListSequence.fromList(_results).addElement(nodeUsage);
       }
     }
   } finally {
     monitor.done();
   }
 }
コード例 #30
0
 private static List<SNode> getImplementedAndExtended(
     SNode classifier, Map<SNode, SNode> typeByTypeVar) {
   Set<SNode> set = SetSequence.fromSet(new LinkedHashSet<SNode>());
   ClassifierAndSuperClassifiersCache.ClassifiersDataSet.collectImplementedAndExtended(
       classifier, set, null, typeByTypeVar);
   List<SNode> result = new ArrayList<SNode>();
   ListSequence.fromList(result).addSequence(SetSequence.fromSet(set));
   SNode objectClass =
       SNodeOperations.getNode(
           "6354ebe7-c22a-4a0f-ac54-50b52ab9b065/java:java.lang(JDK/)", "~Object");
   if (objectClass != null && !(SetSequence.fromSet(set).contains(objectClass))) {
     int indexOfFirstInterface = 0;
     for (SNode classifierInResult : set) {
       if (SNodeOperations.isInstanceOf(
           classifierInResult,
           MetaAdapterFactory.getConcept(
               0xf3061a5392264cc5L,
               0xa443f952ceaf5816L,
               0x101edd46144L,
               "jetbrains.mps.baseLanguage.structure.Interface"))) {
         break;
       }
       indexOfFirstInterface++;
     }
     if (indexOfFirstInterface == 0) {
       result.add(objectClass);
     } else {
       result.add(indexOfFirstInterface, objectClass);
     }
   }
   return result;
 }