public void applyRule(
     final SNode getKeysOperation,
     final TypeCheckingContext typeCheckingContext,
     IsApplicableStatus status) {
   final SNode KEY_typevar_1201874360962 = typeCheckingContext.createNewRuntimeTypesVariable();
   final SNode VALUE_typevar_1201874371667 = typeCheckingContext.createNewRuntimeTypesVariable();
   {
     SNode _nodeToCheck_1029348928467 =
         IOperation_Behavior.call_getOperand_1213877410070(getKeysOperation);
     EquationInfo _info_12389875345 =
         new EquationInfo(
             _nodeToCheck_1029348928467,
             null,
             "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
             "1201874387564",
             0,
             null);
     typeCheckingContext.createLessThanInequality(
         (SNode)
             typeCheckingContext.typeOf(
                 _nodeToCheck_1029348928467,
                 "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
                 "1201874356659",
                 true),
         (SNode)
             new typeof_GetKeysOperation_InferenceRule.QuotationClass_z6uv9c_a0a2a0()
                 .createNode(
                     typeCheckingContext.getRepresentative(KEY_typevar_1201874360962),
                     typeCheckingContext.getRepresentative(VALUE_typevar_1201874371667),
                     typeCheckingContext),
         false,
         true,
         _info_12389875345);
   }
   {
     SNode _nodeToCheck_1029348928467 = getKeysOperation;
     EquationInfo _info_12389875345 =
         new EquationInfo(
             _nodeToCheck_1029348928467,
             null,
             "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
             "1201874414202",
             0,
             null);
     typeCheckingContext.createEquation(
         (SNode)
             typeCheckingContext.typeOf(
                 _nodeToCheck_1029348928467,
                 "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
                 "1201874348006",
                 true),
         (SNode)
             new typeof_GetKeysOperation_InferenceRule.QuotationClass_z6uv9c_a0a3a0()
                 .createNode(
                     typeCheckingContext.getRepresentative(KEY_typevar_1201874360962),
                     typeCheckingContext),
         _info_12389875345);
   }
 }
 public void applyRule(
     final SNode mfv, final TypeCheckingContext typeCheckingContext, IsApplicableStatus status) {
   if (SNodeOperations.isInstanceOf(
       SNodeOperations.getParent(mfv),
       "jetbrains.mps.baseLanguage.collections.structure.MultiForEachPair")) {
     final SNode INPUT_typevar_8293956702610254515 =
         typeCheckingContext.createNewRuntimeTypesVariable();
     {
       SNode _nodeToCheck_1029348928467 =
           SLinkOperations.getTarget(
               SNodeOperations.cast(
                   SNodeOperations.getParent(mfv),
                   "jetbrains.mps.baseLanguage.collections.structure.MultiForEachPair"),
               "input",
               true);
       EquationInfo _info_12389875345 =
           new EquationInfo(
               _nodeToCheck_1029348928467,
               null,
               "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
               "7668447476859120466",
               0,
               null);
       typeCheckingContext.createGreaterThanInequality(
           (SNode)
               _quotation_createNode_gk7o1k_a0b0a0b(
                   typeCheckingContext.getRepresentative(INPUT_typevar_8293956702610254515)),
           (SNode)
               typeCheckingContext.typeOf(
                   _nodeToCheck_1029348928467,
                   "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
                   "8293956702610249719",
                   true),
           false,
           true,
           _info_12389875345);
     }
     {
       SNode _nodeToCheck_1029348928467 = mfv;
       EquationInfo _info_12389875345 =
           new EquationInfo(
               _nodeToCheck_1029348928467,
               null,
               "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
               "8293956702610254522",
               0,
               null);
       typeCheckingContext.createEquation(
           (SNode)
               typeCheckingContext.typeOf(
                   _nodeToCheck_1029348928467,
                   "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
                   "8293956702610254519",
                   true),
           (SNode) typeCheckingContext.getRepresentative(INPUT_typevar_8293956702610254515),
           _info_12389875345);
     }
   }
 }
 public void applyRule(
     final SNode operation,
     final TypeCheckingContext typeCheckingContext,
     IsApplicableStatus status) {
   final SNode T_typevar_6981317760235403018 = typeCheckingContext.createNewRuntimeTypesVariable();
   {
     SNode _nodeToCheck_1029348928467 =
         SLinkOperations.getTarget(
             SNodeOperations.cast(
                 SNodeOperations.getParent(operation),
                 "jetbrains.mps.baseLanguage.structure.DotExpression"),
             "operand",
             true);
     EquationInfo _info_12389875345 =
         new EquationInfo(
             _nodeToCheck_1029348928467,
             null,
             "r:e115237b-80f4-4ca3-87d6-2ac891492994(jetbrains.mps.execution.settings.typesystem)",
             "6981317760235403036",
             0,
             null);
     typeCheckingContext.createLessThanInequality(
         (SNode)
             typeCheckingContext.typeOf(
                 _nodeToCheck_1029348928467,
                 "r:e115237b-80f4-4ca3-87d6-2ac891492994(jetbrains.mps.execution.settings.typesystem)",
                 "6981317760235403021",
                 true),
         (SNode)
             _quotation_createNode_89tbzo_a0b0a(
                 typeCheckingContext.getRepresentative(T_typevar_6981317760235403018)),
         false,
         false,
         _info_12389875345);
   }
   {
     SNode _nodeToCheck_1029348928467 = operation;
     EquationInfo _info_12389875345 =
         new EquationInfo(
             _nodeToCheck_1029348928467,
             null,
             "r:e115237b-80f4-4ca3-87d6-2ac891492994(jetbrains.mps.execution.settings.typesystem)",
             "6981317760235403009",
             0,
             null);
     typeCheckingContext.createEquation(
         (SNode)
             typeCheckingContext.typeOf(
                 _nodeToCheck_1029348928467,
                 "r:e115237b-80f4-4ca3-87d6-2ac891492994(jetbrains.mps.execution.settings.typesystem)",
                 "6981317760235403006",
                 true),
         (SNode)
             _quotation_createNode_89tbzo_a0c0a(
                 typeCheckingContext.getRepresentative(T_typevar_6981317760235403018)),
         _info_12389875345);
   }
 }
 public void applyRule(
     final SNode toIteratorOperation,
     final TypeCheckingContext typeCheckingContext,
     IsApplicableStatus status) {
   SNode input = RulesFunctions_Collections.getInput(typeCheckingContext, toIteratorOperation);
   final SNode elementType_typevar_1207236221835 =
       typeCheckingContext.createNewRuntimeTypesVariable();
   {
     SNode _nodeToCheck_1029348928467 = input;
     EquationInfo _info_12389875345 =
         new EquationInfo(
             _nodeToCheck_1029348928467,
             null,
             "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
             "7668447476859120589",
             0,
             null);
     typeCheckingContext.createGreaterThanInequality(
         (SNode)
             _quotation_createNode_qlsgpf_a0c0b(
                 typeCheckingContext.getRepresentative(elementType_typevar_1207236221835)),
         (SNode)
             typeCheckingContext.typeOf(
                 _nodeToCheck_1029348928467,
                 "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
                 "1207236221844",
                 true),
         false,
         true,
         _info_12389875345);
   }
   {
     SNode _nodeToCheck_1029348928467 = toIteratorOperation;
     EquationInfo _info_12389875345 =
         new EquationInfo(
             _nodeToCheck_1029348928467,
             null,
             "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
             "1207236274687",
             0,
             null);
     typeCheckingContext.createEquation(
         (SNode)
             typeCheckingContext.typeOf(
                 _nodeToCheck_1029348928467,
                 "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
                 "1207236268944",
                 true),
         (SNode)
             _quotation_createNode_qlsgpf_a0d0b(
                 typeCheckingContext.getRepresentative(elementType_typevar_1207236221835)),
         _info_12389875345);
   }
 }
 public void applyRule(
     final SNode emunerator,
     final TypeCheckingContext typeCheckingContext,
     IsApplicableStatus status) {
   final SNode elementType_typevar_1237549347223 =
       typeCheckingContext.createNewRuntimeTypesVariable();
   {
     SNode _nodeToCheck_1029348928467 =
         IOperation_BehaviorDescriptor.getOperand_idhEwIP$m.invoke(emunerator);
     EquationInfo _info_12389875345 =
         new EquationInfo(
             _nodeToCheck_1029348928467,
             null,
             "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
             "2762046050488366612",
             0,
             null);
     typeCheckingContext.createGreaterThanInequality(
         (SNode)
             _quotation_createNode_jit5ug_a0b0b(
                 typeCheckingContext.getRepresentative(elementType_typevar_1237549347223)),
         (SNode)
             typeCheckingContext.typeOf(
                 _nodeToCheck_1029348928467,
                 "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
                 "1237549347226",
                 true),
         false,
         false,
         _info_12389875345);
   }
   {
     SNode _nodeToCheck_1029348928467 = emunerator;
     EquationInfo _info_12389875345 =
         new EquationInfo(
             _nodeToCheck_1029348928467,
             null,
             "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
             "1237549347236",
             0,
             null);
     typeCheckingContext.createEquation(
         (SNode)
             typeCheckingContext.typeOf(
                 _nodeToCheck_1029348928467,
                 "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
                 "1237549347244",
                 true),
         (SNode)
             _quotation_createNode_jit5ug_a0c0b(
                 typeCheckingContext.getRepresentative(elementType_typevar_1237549347223)),
         _info_12389875345);
   }
 }
 public void applyRule(
     final SNode op, final TypeCheckingContext typeCheckingContext, IsApplicableStatus status) {
   final SNode ELEMENT_TYPE_typevar_3358009230508729162 =
       typeCheckingContext.createNewRuntimeTypesVariable();
   {
     SNode _nodeToCheck_1029348928467 =
         IOperation_BehaviorDescriptor.getOperand_idhEwIP$m.invoke(op);
     EquationInfo _info_12389875345 =
         new EquationInfo(
             _nodeToCheck_1029348928467,
             null,
             "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
             "7668447476859120535",
             0,
             null);
     typeCheckingContext.createGreaterThanInequality(
         (SNode)
             IApplicableToNothing_BehaviorDescriptor.expectedOperandType_id5xvLnyYzY1Q.invoke(
                 op,
                 typeCheckingContext.getRepresentative(ELEMENT_TYPE_typevar_3358009230508729162)),
         (SNode)
             typeCheckingContext.typeOf(
                 _nodeToCheck_1029348928467,
                 "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
                 "3358009230508729138",
                 true),
         false,
         true,
         _info_12389875345);
   }
   {
     SNode _nodeToCheck_1029348928467 = op;
     EquationInfo _info_12389875345 =
         new EquationInfo(
             _nodeToCheck_1029348928467,
             null,
             "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
             "3358009230508729169",
             0,
             null);
     typeCheckingContext.createEquation(
         (SNode)
             typeCheckingContext.typeOf(
                 _nodeToCheck_1029348928467,
                 "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
                 "3358009230508729166",
                 true),
         (SNode) typeCheckingContext.getRepresentative(ELEMENT_TYPE_typevar_3358009230508729162),
         _info_12389875345);
   }
 }
 public void applyRule(
     final SNode auo, final TypeCheckingContext typeCheckingContext, IsApplicableStatus status) {
   final SNode ELEMENT_typevar_2526372162255517322 =
       typeCheckingContext.createNewRuntimeTypesVariable();
   {
     SNode _nodeToCheck_1029348928467 =
         IOperation__BehaviorDescriptor.getOperand_idhEwIP$m.invoke(auo);
     EquationInfo _info_12389875345 =
         new EquationInfo(
             _nodeToCheck_1029348928467,
             null,
             "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
             "7668447476859018469",
             0,
             null);
     typeCheckingContext.createGreaterThanInequality(
         (SNode)
             _quotation_createNode_jqf8bk_a0b0b(
                 typeCheckingContext.getRepresentative(ELEMENT_typevar_2526372162255517322)),
         (SNode)
             typeCheckingContext.typeOf(
                 _nodeToCheck_1029348928467,
                 "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
                 "7668447476859120404",
                 true),
         false,
         true,
         _info_12389875345);
   }
   {
     SNode _nodeToCheck_1029348928467 = auo;
     EquationInfo _info_12389875345 =
         new EquationInfo(
             _nodeToCheck_1029348928467,
             null,
             "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
             "2526372162255517331",
             0,
             null);
     typeCheckingContext.createEquation(
         (SNode)
             typeCheckingContext.typeOf(
                 _nodeToCheck_1029348928467,
                 "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
                 "2526372162255517328",
                 true),
         (SNode)
             typeCheckingContext.typeOf(
                 IOperation__BehaviorDescriptor.getOperand_idhEwIP$m.invoke(auo),
                 "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
                 "2526372162255517336",
                 true),
         _info_12389875345);
   }
 }
 public void applyRule(
     final SNode operation,
     final TypeCheckingContext typeCheckingContext,
     IsApplicableStatus status) {
   final SNode elementType_typevar_1226934681270 =
       typeCheckingContext.createNewRuntimeTypesVariable();
   {
     SNode _nodeToCheck_1029348928467 =
         IOperation_Behavior.call_getOperand_1213877410070(operation);
     EquationInfo _info_12389875345 =
         new EquationInfo(
             _nodeToCheck_1029348928467,
             null,
             "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
             "7668447476859120528",
             0,
             null);
     typeCheckingContext.createGreaterThanInequality(
         (SNode)
             _quotation_createNode_econfx_a0b0b(
                 typeCheckingContext.getRepresentative(elementType_typevar_1226934681270)),
         (SNode)
             typeCheckingContext.typeOf(
                 _nodeToCheck_1029348928467,
                 "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
                 "1226934649738",
                 true),
         false,
         true,
         _info_12389875345);
   }
   {
     SNode _nodeToCheck_1029348928467 = operation;
     EquationInfo _info_12389875345 =
         new EquationInfo(
             _nodeToCheck_1029348928467,
             null,
             "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
             "1226934702238",
             0,
             null);
     typeCheckingContext.createEquation(
         (SNode)
             typeCheckingContext.typeOf(
                 _nodeToCheck_1029348928467,
                 "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
                 "1226934695674",
                 true),
         (SNode) _quotation_createNode_econfx_a0c0b(),
         _info_12389875345);
   }
 }
 public void applyRule(
     final SNode hasNext,
     final TypeCheckingContext typeCheckingContext,
     IsApplicableStatus status) {
   final SNode elementType_typevar_1237470988790 =
       typeCheckingContext.createNewRuntimeTypesVariable();
   {
     SNode _nodeToCheck_1029348928467 = IOperation_Behavior.call_getOperand_1213877410070(hasNext);
     EquationInfo _info_12389875345 =
         new EquationInfo(
             _nodeToCheck_1029348928467,
             null,
             "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
             "1383381939051876063",
             0,
             null);
     typeCheckingContext.createGreaterThanInequality(
         (SNode)
             _quotation_createNode_jfdsz3_a0b0b(
                 typeCheckingContext.getRepresentative(elementType_typevar_1237470988790)),
         (SNode)
             typeCheckingContext.typeOf(
                 _nodeToCheck_1029348928467,
                 "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
                 "1237470932214",
                 true),
         false,
         false,
         _info_12389875345);
   }
   {
     SNode _nodeToCheck_1029348928467 = hasNext;
     EquationInfo _info_12389875345 =
         new EquationInfo(
             _nodeToCheck_1029348928467,
             null,
             "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
             "1237471013663",
             0,
             null);
     typeCheckingContext.createEquation(
         (SNode)
             typeCheckingContext.typeOf(
                 _nodeToCheck_1029348928467,
                 "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
                 "1237471009307",
                 true),
         (SNode) _quotation_createNode_jfdsz3_a0c0b(),
         _info_12389875345);
   }
 }
 public void applyRule(
     final SNode op, final TypeCheckingContext typeCheckingContext, IsApplicableStatus status) {
   SNode input = RulesFunctions_Collections.getInput(typeCheckingContext, op);
   final SNode elementType_typevar_1184847379888 =
       typeCheckingContext.createNewRuntimeTypesVariable();
   {
     SNode _nodeToCheck_1029348928467 = input;
     EquationInfo _info_12389875345 =
         new EquationInfo(
             _nodeToCheck_1029348928467,
             null,
             "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
             "2414346554611884920",
             0,
             null);
     typeCheckingContext.createGreaterThanInequality(
         (SNode)
             _quotation_createNode_jdnuju_a0c0b(
                 typeCheckingContext.getRepresentative(elementType_typevar_1184847379888)),
         (SNode)
             typeCheckingContext.typeOf(
                 _nodeToCheck_1029348928467,
                 "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
                 "1184847389619",
                 true),
         false,
         true,
         _info_12389875345);
   }
   {
     SNode _nodeToCheck_1029348928467 = op;
     EquationInfo _info_12389875345 =
         new EquationInfo(
             _nodeToCheck_1029348928467,
             null,
             "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
             "1184847367971",
             0,
             null);
     typeCheckingContext.createEquation(
         (SNode)
             typeCheckingContext.typeOf(
                 _nodeToCheck_1029348928467,
                 "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
                 "1184847365040",
                 true),
         (SNode) _quotation_createNode_jdnuju_a0d0b(),
         _info_12389875345);
   }
 }
 public void applyRule(
     final SNode op, final TypeCheckingContext typeCheckingContext, IsApplicableStatus status) {
   final SNode elementType_typevar_1227022325815 =
       typeCheckingContext.createNewRuntimeTypesVariable();
   {
     SNode _nodeToCheck_1029348928467 = IOperation_Behavior.call_getOperand_1213877410070(op);
     EquationInfo _info_12389875345 =
         new EquationInfo(
             _nodeToCheck_1029348928467,
             null,
             "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
             "7668447476859120474",
             0,
             null);
     typeCheckingContext.createGreaterThanInequality(
         (SNode)
             BehaviorReflection.invokeVirtual(
                 (Class<SNode>) ((Class) Object.class),
                 op,
                 "virtual_expectedOperandType_6368025520509018230",
                 new Object[] {
                   typeCheckingContext.getRepresentative(elementType_typevar_1227022325815)
                 }),
         (SNode)
             typeCheckingContext.typeOf(
                 _nodeToCheck_1029348928467,
                 "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
                 "1227022309333",
                 true),
         false,
         true,
         _info_12389875345);
   }
   if (!(typeCheckingContext.isSingleTypeComputation())) {
     {
       SNode _nodeToCheck_1029348928467 = SLinkOperations.getTarget(op, "index", true);
       EquationInfo _info_12389875345 =
           new EquationInfo(
               _nodeToCheck_1029348928467,
               null,
               "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
               "1227022345453",
               0,
               null);
       typeCheckingContext.createLessThanInequality(
           (SNode)
               typeCheckingContext.typeOf(
                   _nodeToCheck_1029348928467,
                   "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
                   "1227022338592",
                   true),
           (SNode) _quotation_createNode_y1ttf7_a0c0b(),
           true,
           true,
           _info_12389875345);
     }
   }
   {
     SNode _nodeToCheck_1029348928467 = op;
     EquationInfo _info_12389875345 =
         new EquationInfo(
             _nodeToCheck_1029348928467,
             null,
             "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
             "1227022501971",
             0,
             null);
     typeCheckingContext.createEquation(
         (SNode)
             typeCheckingContext.typeOf(
                 _nodeToCheck_1029348928467,
                 "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
                 "1227022497064",
                 true),
         (SNode) typeCheckingContext.getRepresentative(elementType_typevar_1227022325815),
         _info_12389875345);
   }
 }
 public void applyRule(
     final SNode op, final TypeCheckingContext typeCheckingContext, IsApplicableStatus status) {
   SNode operand =
       SLinkOperations.getTarget(
           SNodeOperations.cast(
               SNodeOperations.getParent(op),
               MetaAdapterFactory.getConcept(
                   0xf3061a5392264cc5L,
                   0xa443f952ceaf5816L,
                   0x116b46a08c4L,
                   "jetbrains.mps.baseLanguage.structure.DotExpression")),
           MetaAdapterFactory.getContainmentLink(
               0xf3061a5392264cc5L,
               0xa443f952ceaf5816L,
               0x116b46a08c4L,
               0x116b46a4416L,
               "operand"));
   final SNode C_typevar_7453996997717785676 = typeCheckingContext.createNewRuntimeTypesVariable();
   {
     SNode _nodeToCheck_1029348928467 = operand;
     EquationInfo _info_12389875345 =
         new EquationInfo(
             _nodeToCheck_1029348928467,
             null,
             "r:00000000-0000-4000-0000-011c895902fe(jetbrains.mps.lang.smodel.typesystem)",
             "7453996997717785677",
             0,
             null);
     typeCheckingContext.createLessThanInequality(
         (SNode)
             typeCheckingContext.typeOf(
                 _nodeToCheck_1029348928467,
                 "r:00000000-0000-4000-0000-011c895902fe(jetbrains.mps.lang.smodel.typesystem)",
                 "7453996997717785684",
                 false),
         (SNode)
             _quotation_createNode_rcqvls_a0c0b(
                 typeCheckingContext.getRepresentative(C_typevar_7453996997717785676)),
         false,
         true,
         _info_12389875345);
   }
   {
     SNode _nodeToCheck_1029348928467 = op;
     EquationInfo _info_12389875345 =
         new EquationInfo(
             _nodeToCheck_1029348928467,
             null,
             "r:00000000-0000-4000-0000-011c895902fe(jetbrains.mps.lang.smodel.typesystem)",
             "7453996997717785686",
             0,
             null);
     typeCheckingContext.createEquation(
         (SNode)
             typeCheckingContext.typeOf(
                 _nodeToCheck_1029348928467,
                 "r:00000000-0000-4000-0000-011c895902fe(jetbrains.mps.lang.smodel.typesystem)",
                 "7453996997717785693",
                 true),
         (SNode)
             _quotation_createNode_rcqvls_a0d0b(
                 typeCheckingContext.getRepresentative(C_typevar_7453996997717785676)),
         _info_12389875345);
   }
 }
 public void applyRule(
     final SNode wo, final TypeCheckingContext typeCheckingContext, IsApplicableStatus status) {
   final SNode paramType_typevar_1203177832282 =
       typeCheckingContext.createNewRuntimeTypesVariable();
   {
     SNode _nodeToCheck_1029348928467 = IOperation_Behavior.call_getOperand_1213877410070(wo);
     EquationInfo _info_12389875345 =
         new EquationInfo(
             _nodeToCheck_1029348928467,
             null,
             "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
             "2762046050488366454",
             0,
             null);
     typeCheckingContext.createGreaterThanInequality(
         (SNode)
             _quotation_createNode_pin8c2_a0b0b(
                 typeCheckingContext.getRepresentative(paramType_typevar_1203177832282)),
         (SNode)
             typeCheckingContext.typeOf(
                 _nodeToCheck_1029348928467,
                 "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
                 "1225885301838",
                 true),
         false,
         true,
         _info_12389875345);
   }
   if (!(typeCheckingContext.isSingleTypeComputation())) {
     {
       SNode _nodeToCheck_1029348928467 = SLinkOperations.getTarget(wo, "closure", true);
       EquationInfo _info_12389875345 =
           new EquationInfo(
               _nodeToCheck_1029348928467,
               null,
               "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
               "1225884077242",
               0,
               null);
       typeCheckingContext.createLessThanInequality(
           (SNode)
               typeCheckingContext.typeOf(
                   _nodeToCheck_1029348928467,
                   "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
                   "1225884077244",
                   true),
           (SNode)
               _quotation_createNode_pin8c2_a0c0b(
                   typeCheckingContext.getRepresentative(paramType_typevar_1203177832282)),
           true,
           true,
           _info_12389875345);
     }
   }
   {
     SNode _nodeToCheck_1029348928467 = wo;
     EquationInfo _info_12389875345 =
         new EquationInfo(
             _nodeToCheck_1029348928467,
             null,
             "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
             "1203177922110",
             0,
             null);
     typeCheckingContext.createEquation(
         (SNode)
             typeCheckingContext.typeOf(
                 _nodeToCheck_1029348928467,
                 "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
                 "1203177917787",
                 true),
         (SNode)
             _quotation_createNode_pin8c2_a0d0b(
                 typeCheckingContext.getRepresentative(paramType_typevar_1203177832282)),
         _info_12389875345);
   }
 }
 public void applyRule(
     final SNode operation,
     final TypeCheckingContext typeCheckingContext,
     IsApplicableStatus status) {
   final SNode ELEMENT_TYPE_typevar_1240251732387 =
       typeCheckingContext.createNewRuntimeTypesVariable();
   {
     SNode _nodeToCheck_1029348928467 =
         IOperation_Behavior.call_getOperand_1213877410070(operation);
     EquationInfo _info_12389875345 =
         new EquationInfo(
             _nodeToCheck_1029348928467,
             null,
             "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
             "7668447476859120532",
             0,
             null);
     typeCheckingContext.createGreaterThanInequality(
         (SNode)
             _quotation_createNode_9sowee_a0b0b(
                 typeCheckingContext.getRepresentative(ELEMENT_TYPE_typevar_1240251732387)),
         (SNode)
             typeCheckingContext.typeOf(
                 _nodeToCheck_1029348928467,
                 "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
                 "1240251732397",
                 true),
         false,
         true,
         _info_12389875345);
   }
   if (!(typeCheckingContext.isSingleTypeComputation())) {
     {
       SNode _nodeToCheck_1029348928467 =
           SLinkOperations.getTarget(operation, "fromElement", true);
       EquationInfo _info_12389875345 =
           new EquationInfo(
               _nodeToCheck_1029348928467,
               null,
               "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
               "1240251732401",
               0,
               null);
       typeCheckingContext.createLessThanInequality(
           (SNode)
               typeCheckingContext.typeOf(
                   _nodeToCheck_1029348928467,
                   "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
                   "1240251732405",
                   true),
           (SNode) typeCheckingContext.getRepresentative(ELEMENT_TYPE_typevar_1240251732387),
           true,
           true,
           _info_12389875345);
     }
   }
   if (!(typeCheckingContext.isSingleTypeComputation())) {
     {
       SNode _nodeToCheck_1029348928467 = SLinkOperations.getTarget(operation, "toElement", true);
       EquationInfo _info_12389875345 =
           new EquationInfo(
               _nodeToCheck_1029348928467,
               null,
               "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
               "1240251740453",
               0,
               null);
       typeCheckingContext.createLessThanInequality(
           (SNode)
               typeCheckingContext.typeOf(
                   _nodeToCheck_1029348928467,
                   "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
                   "1240251740457",
                   true),
           (SNode) typeCheckingContext.getRepresentative(ELEMENT_TYPE_typevar_1240251732387),
           true,
           true,
           _info_12389875345);
     }
   }
   {
     SNode _nodeToCheck_1029348928467 = operation;
     EquationInfo _info_12389875345 =
         new EquationInfo(
             _nodeToCheck_1029348928467,
             null,
             "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
             "1240251732409",
             0,
             null);
     typeCheckingContext.createEquation(
         (SNode)
             typeCheckingContext.typeOf(
                 _nodeToCheck_1029348928467,
                 "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
                 "1240251732417",
                 true),
         (SNode)
             _quotation_createNode_9sowee_a0e0b(
                 typeCheckingContext.getRepresentative(ELEMENT_TYPE_typevar_1240251732387)),
         _info_12389875345);
   }
 }
 public void applyRule(
     final SNode tro, final TypeCheckingContext typeCheckingContext, IsApplicableStatus status) {
   final SNode ELEMENT_typevar_4073682006117732270 =
       typeCheckingContext.createNewRuntimeTypesVariable();
   {
     SNode _nodeToCheck_1029348928467 = IOperation_Behavior.call_getOperand_1213877410070(tro);
     EquationInfo _info_12389875345 =
         new EquationInfo(
             _nodeToCheck_1029348928467,
             null,
             "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
             "4073682006117732271",
             0,
             null);
     typeCheckingContext.createLessThanInequality(
         (SNode)
             typeCheckingContext.typeOf(
                 _nodeToCheck_1029348928467,
                 "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
                 "4073682006117732273",
                 true),
         (SNode)
             new typeof_TestRemoveElementOperation_InferenceRule.QuotationClass_agfpky_a0a1a0()
                 .createNode(
                     typeCheckingContext.getRepresentative(ELEMENT_typevar_4073682006117732270),
                     typeCheckingContext),
         false,
         true,
         _info_12389875345);
   }
   {
     SNode _nodeToCheck_1029348928467 = SLinkOperations.getTarget(tro, "argument", true);
     EquationInfo _info_12389875345 =
         new EquationInfo(
             _nodeToCheck_1029348928467,
             null,
             "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
             "4073682006117732283",
             0,
             null);
     typeCheckingContext.createLessThanInequality(
         (SNode)
             typeCheckingContext.typeOf(
                 _nodeToCheck_1029348928467,
                 "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
                 "4073682006117732287",
                 true),
         (SNode) typeCheckingContext.getRepresentative(ELEMENT_typevar_4073682006117732270),
         false,
         true,
         _info_12389875345);
   }
   {
     SNode _nodeToCheck_1029348928467 = tro;
     EquationInfo _info_12389875345 =
         new EquationInfo(
             _nodeToCheck_1029348928467,
             null,
             "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
             "4073682006117732291",
             0,
             null);
     typeCheckingContext.createEquation(
         (SNode)
             typeCheckingContext.typeOf(
                 _nodeToCheck_1029348928467,
                 "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
                 "4073682006117732293",
                 true),
         (SNode)
             new typeof_TestRemoveElementOperation_InferenceRule.QuotationClass_agfpky_a0a3a0()
                 .createNode(typeCheckingContext),
         _info_12389875345);
   }
 }
 public void applyRule(
     final SNode minus, final TypeCheckingContext typeCheckingContext, IsApplicableStatus status) {
   final SNode expressionType_typevar_7602524515424797598 =
       typeCheckingContext.createNewRuntimeTypesVariable();
   {
     SNode _nodeToCheck_1029348928467 = SLinkOperations.getTarget(minus, "expression", true);
     EquationInfo _info_12389875345 =
         new EquationInfo(
             _nodeToCheck_1029348928467,
             null,
             "r:00000000-0000-4000-0000-011c895902c5(jetbrains.mps.baseLanguage.typesystem)",
             "7602524515424797603",
             0,
             null);
     typeCheckingContext.createEquation(
         (SNode) typeCheckingContext.getRepresentative(expressionType_typevar_7602524515424797598),
         (SNode)
             typeCheckingContext.typeOf(
                 _nodeToCheck_1029348928467,
                 "r:00000000-0000-4000-0000-011c895902c5(jetbrains.mps.baseLanguage.typesystem)",
                 "7602524515424797608",
                 true),
         _info_12389875345);
   }
   {
     final SNode exType =
         typeCheckingContext.getRepresentative(expressionType_typevar_7602524515424797598);
     typeCheckingContext.whenConcrete(
         exType,
         new Runnable() {
           public void run() {
             SNode type =
                 typeCheckingContext.getOverloadedOperationType(
                     minus,
                     typeCheckingContext.getExpandedNode(exType),
                     _quotation_createNode_2vfzm_c0a0a0c0b());
             if (type != null) {
               {
                 SNode _nodeToCheck_1029348928467 = minus;
                 EquationInfo _info_12389875345 =
                     new EquationInfo(
                         _nodeToCheck_1029348928467,
                         null,
                         "r:00000000-0000-4000-0000-011c895902c5(jetbrains.mps.baseLanguage.typesystem)",
                         "3860149536565525538",
                         0,
                         null);
                 typeCheckingContext.createEquation(
                     (SNode)
                         typeCheckingContext.typeOf(
                             _nodeToCheck_1029348928467,
                             "r:00000000-0000-4000-0000-011c895902c5(jetbrains.mps.baseLanguage.typesystem)",
                             "3860149536565525541",
                             true),
                     (SNode) type,
                     _info_12389875345);
               }
             } else {
               {
                 MessageTarget errorTarget = new NodeMessageTarget();
                 IErrorReporter _reporter_2309309498 =
                     typeCheckingContext.reportTypeError(
                         minus,
                         "- can't be applied to these operands.",
                         "r:00000000-0000-4000-0000-011c895902c5(jetbrains.mps.baseLanguage.typesystem)",
                         "3860149536565525553",
                         null,
                         errorTarget);
               }
             }
           }
         },
         "r:00000000-0000-4000-0000-011c895902c5(jetbrains.mps.baseLanguage.typesystem)",
         "3860149536565525509",
         false,
         false);
   }
 }
 public void applyRule(
     final SNode so, final TypeCheckingContext typeCheckingContext, IsApplicableStatus status) {
   final SNode sequenceParamType_typevar_1225884177658 =
       typeCheckingContext.createNewRuntimeTypesVariable();
   {
     SNode _nodeToCheck_1029348928467 =
         IOperation_BehaviorDescriptor.getOperand_idhEwIP$m.invoke(so);
     EquationInfo _info_12389875345 =
         new EquationInfo(
             _nodeToCheck_1029348928467,
             null,
             "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
             "1611944601324093272",
             0,
             null);
     typeCheckingContext.createGreaterThanInequality(
         (SNode)
             _quotation_createNode_jxb36x_a0b0b(
                 typeCheckingContext.getRepresentative(sequenceParamType_typevar_1225884177658)),
         (SNode)
             typeCheckingContext.typeOf(
                 _nodeToCheck_1029348928467,
                 "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
                 "1225885277159",
                 true),
         false,
         true,
         _info_12389875345);
   }
   final SNode resType_typevar_1203177754378 = typeCheckingContext.createNewRuntimeTypesVariable();
   final SNode selectorParamType_typevar_1240677567421 =
       typeCheckingContext.createNewRuntimeTypesVariable();
   {
     SNode _nodeToCheck_1029348928467 =
         SLinkOperations.getTarget(
             so,
             MetaAdapterFactory.getContainmentLink(
                 0x8388864671ce4f1cL,
                 0x9c53c54016f6ad4fL,
                 0x1188372895aL,
                 0x11883748452L,
                 "closure"));
     EquationInfo _info_12389875345 =
         new EquationInfo(
             _nodeToCheck_1029348928467,
             null,
             "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
             "2704222862538118755",
             0,
             null);
     typeCheckingContext.createGreaterThanInequality(
         (SNode)
             _quotation_createNode_jxb36x_a0e0b(
                 typeCheckingContext.getRepresentative(selectorParamType_typevar_1240677567421),
                 typeCheckingContext.getRepresentative(resType_typevar_1203177754378)),
         (SNode)
             typeCheckingContext.typeOf(
                 _nodeToCheck_1029348928467,
                 "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
                 "2704222862538112956",
                 true),
         false,
         true,
         _info_12389875345);
   }
   {
     SNode _nodeToCheck_1029348928467 = so;
     EquationInfo _info_12389875345 =
         new EquationInfo(
             _nodeToCheck_1029348928467,
             null,
             "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
             "6523931710140214764",
             0,
             null);
     typeCheckingContext.createGreaterThanInequality(
         (SNode) typeCheckingContext.getRepresentative(selectorParamType_typevar_1240677567421),
         (SNode) typeCheckingContext.getRepresentative(sequenceParamType_typevar_1225884177658),
         false,
         true,
         _info_12389875345);
   }
   {
     SNode _nodeToCheck_1029348928467 = so;
     EquationInfo _info_12389875345 =
         new EquationInfo(
             _nodeToCheck_1029348928467,
             null,
             "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
             "1203177774935",
             0,
             null);
     typeCheckingContext.createEquation(
         (SNode)
             typeCheckingContext.typeOf(
                 _nodeToCheck_1029348928467,
                 "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
                 "1203177771381",
                 true),
         (SNode)
             _quotation_createNode_jxb36x_a0g0b(
                 typeCheckingContext.getRepresentative(resType_typevar_1203177754378)),
         _info_12389875345);
   }
 }
 public void applyRule(
     final SNode containsKeyOperation,
     final TypeCheckingContext typeCheckingContext,
     IsApplicableStatus status) {
   {
     SNode _nodeToCheck_1029348928467 = containsKeyOperation;
     EquationInfo _info_12389875345 =
         new EquationInfo(
             _nodeToCheck_1029348928467,
             null,
             "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
             "1201873006966",
             0,
             null);
     typeCheckingContext.createEquation(
         (SNode)
             typeCheckingContext.typeOf(
                 _nodeToCheck_1029348928467,
                 "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
                 "1201873003944",
                 true),
         (SNode) _quotation_createNode_n6vt4l_a0a0b(),
         _info_12389875345);
   }
   final SNode KEY_typevar_1201873088202 = typeCheckingContext.createNewRuntimeTypesVariable();
   final SNode VALUE_typevar_1201874216771 = typeCheckingContext.createNewRuntimeTypesVariable();
   {
     SNode _nodeToCheck_1029348928467 =
         IOperation__BehaviorDescriptor.getOperand_idhEwIP$m.invoke(containsKeyOperation);
     EquationInfo _info_12389875345 =
         new EquationInfo(
             _nodeToCheck_1029348928467,
             null,
             "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
             "7668447476859120479",
             0,
             null);
     typeCheckingContext.createGreaterThanInequality(
         (SNode)
             _quotation_createNode_n6vt4l_a0d0b(
                 typeCheckingContext.getRepresentative(VALUE_typevar_1201874216771),
                 typeCheckingContext.getRepresentative(KEY_typevar_1201873088202)),
         (SNode)
             typeCheckingContext.typeOf(
                 _nodeToCheck_1029348928467,
                 "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
                 "1201874242447",
                 true),
         false,
         true,
         _info_12389875345);
   }
   if (!(typeCheckingContext.isSingleTypeComputation())) {
     {
       SNode _nodeToCheck_1029348928467 =
           SLinkOperations.getTarget(
               containsKeyOperation,
               MetaAdapterFactory.getContainmentLink(
                   0x8388864671ce4f1cL,
                   0x9c53c54016f6ad4fL,
                   0x117b3740258L,
                   0x117c8321b8fL,
                   "key"));
       EquationInfo _info_12389875345 =
           new EquationInfo(
               _nodeToCheck_1029348928467,
               null,
               "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
               "1201873049497",
               0,
               null);
       typeCheckingContext.createLessThanInequality(
           (SNode)
               typeCheckingContext.typeOf(
                   _nodeToCheck_1029348928467,
                   "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
                   "1201873021716",
                   true),
           (SNode) typeCheckingContext.getRepresentative(KEY_typevar_1201873088202),
           true,
           true,
           _info_12389875345);
     }
   }
 }
Exemplo n.º 19
0
 @InferenceMethod
 /*package*/ static void equate_outputNodeType_fromSourceQuery(
     final TypeCheckingContext typeCheckingContext, final SNode query, final SNode TypeToEquate) {
   if (query == null) {
     {
       SNode _nodeToCheck_1029348928467 = null;
       EquationInfo _info_12389875345 =
           new EquationInfo(
               _nodeToCheck_1029348928467,
               null,
               "r:00000000-0000-4000-0000-011c895902e4(jetbrains.mps.lang.generator.typesystem)",
               "1206286245992",
               0,
               null);
       typeCheckingContext.createEquation(
           (SNode) TypeToEquate,
           (SNode) _quotation_createNode_w9106s_a0a0a0e(),
           _info_12389875345);
     }
     return;
   }
   final SNode Concept_typevar_1226671834537 = typeCheckingContext.createNewRuntimeTypesVariable();
   {
     SNode _nodeToCheck_1029348928467 = query;
     EquationInfo _info_12389875345 =
         new EquationInfo(
             _nodeToCheck_1029348928467,
             null,
             "r:00000000-0000-4000-0000-011c895902e4(jetbrains.mps.lang.generator.typesystem)",
             "2562694294549309787",
             0,
             null);
     typeCheckingContext.createGreaterThanInequality(
         (SNode)
             _quotation_createNode_w9106s_a0c0e(
                 typeCheckingContext.getRepresentative(Concept_typevar_1226671834537),
                 typeCheckingContext.getRepresentative(Concept_typevar_1226671834537)),
         (SNode)
             typeCheckingContext.typeOf(
                 _nodeToCheck_1029348928467,
                 "r:00000000-0000-4000-0000-011c895902e4(jetbrains.mps.lang.generator.typesystem)",
                 "1226671782084",
                 false),
         false,
         true,
         _info_12389875345);
   }
   {
     SNode _nodeToCheck_1029348928467 = null;
     EquationInfo _info_12389875345 =
         new EquationInfo(
             _nodeToCheck_1029348928467,
             null,
             "r:00000000-0000-4000-0000-011c895902e4(jetbrains.mps.lang.generator.typesystem)",
             "1226671862829",
             0,
             null);
     typeCheckingContext.createEquation(
         (SNode) TypeToEquate,
         (SNode)
             _quotation_createNode_w9106s_a0d0e(
                 typeCheckingContext.getRepresentative(Concept_typevar_1226671834537)),
         _info_12389875345);
   }
 }
 public void applyRule(
     final SNode func, final TypeCheckingContext typeCheckingContext, IsApplicableStatus status) {
   // function is expected to return value of any type
   final SNode expectedRetType =
       (SConceptOperations.isExactly(
               SNodeOperations.asSConcept(
                   SNodeOperations.getConcept(
                       ConceptFunction__BehaviorDescriptor.getExpectedReturnType_idhEwIGRD.invoke(
                           func))),
               MetaAdapterFactory.getConcept(
                   0xf3061a5392264cc5L,
                   0xa443f952ceaf5816L,
                   0x110dae5f4a3L,
                   "jetbrains.mps.baseLanguage.structure.WildCardType"))
           ? null
           : ConceptFunction__BehaviorDescriptor.getExpectedReturnType_idhEwIGRD.invoke(func));
   boolean noReturnExpected =
       ((expectedRetType == null)
           || TypeChecker.getInstance()
               .getSubtypingManager()
               .isSubtype(expectedRetType, _quotation_createNode_bbraw4_b0a0a0c0b()));
   if (!(noReturnExpected)) {
     final SNode LCS_typevar_1186052624152 = typeCheckingContext.createNewRuntimeTypesVariable();
     Iterable<SNode> returnStatements =
         RulesFunctions_BaseLanguage.collectReturnStatements(
             SLinkOperations.getTarget(
                 func,
                 MetaAdapterFactory.getContainmentLink(
                     0xf3061a5392264cc5L,
                     0xa443f952ceaf5816L,
                     0x108bbca0f48L,
                     0x108bbd29b4aL,
                     "body")));
     // should return subtypes of the 'expected type'
     // if 'expected type' is null - should still return some value (of any type)
     for (SNode returnStatement : Sequence.fromIterable(returnStatements)) {
       if ((SLinkOperations.getTarget(
               returnStatement,
               MetaAdapterFactory.getContainmentLink(
                   0xf3061a5392264cc5L,
                   0xa443f952ceaf5816L,
                   0xf8cc67c7feL,
                   0xf8cc6bf96cL,
                   "expression"))
           == null)) {
         {
           MessageTarget errorTarget = new NodeMessageTarget();
           IErrorReporter _reporter_2309309498 =
               typeCheckingContext.reportTypeError(
                   returnStatement,
                   "should return value",
                   "r:00000000-0000-4000-0000-011c895902c5(jetbrains.mps.baseLanguage.typesystem)",
                   "1186053304501",
                   null,
                   errorTarget);
         }
       } else {
         {
           SNode _nodeToCheck_1029348928467 =
               SLinkOperations.getTarget(
                   returnStatement,
                   MetaAdapterFactory.getContainmentLink(
                       0xf3061a5392264cc5L,
                       0xa443f952ceaf5816L,
                       0xf8cc67c7feL,
                       0xf8cc6bf96cL,
                       "expression"));
           EquationInfo _info_12389875345 =
               new EquationInfo(
                   _nodeToCheck_1029348928467,
                   null,
                   "r:00000000-0000-4000-0000-011c895902c5(jetbrains.mps.baseLanguage.typesystem)",
                   "1186053304511",
                   0,
                   null);
           typeCheckingContext.createGreaterThanInequality(
               (SNode) typeCheckingContext.getRepresentative(LCS_typevar_1186052624152),
               (SNode)
                   typeCheckingContext.typeOf(
                       _nodeToCheck_1029348928467,
                       "r:00000000-0000-4000-0000-011c895902c5(jetbrains.mps.baseLanguage.typesystem)",
                       "1186053304515",
                       true),
               false,
               true,
               _info_12389875345);
         }
         if ((expectedRetType != null)) {
           if (!(typeCheckingContext.isSingleTypeComputation())) {
             {
               SNode _nodeToCheck_1029348928467 =
                   SLinkOperations.getTarget(
                       returnStatement,
                       MetaAdapterFactory.getContainmentLink(
                           0xf3061a5392264cc5L,
                           0xa443f952ceaf5816L,
                           0xf8cc67c7feL,
                           0xf8cc6bf96cL,
                           "expression"));
               EquationInfo _info_12389875345 =
                   new EquationInfo(
                       _nodeToCheck_1029348928467,
                       null,
                       "r:00000000-0000-4000-0000-011c895902c5(jetbrains.mps.baseLanguage.typesystem)",
                       "7630810368327770735",
                       0,
                       null);
               typeCheckingContext.createLessThanInequality(
                   (SNode)
                       typeCheckingContext.typeOf(
                           _nodeToCheck_1029348928467,
                           "r:00000000-0000-4000-0000-011c895902c5(jetbrains.mps.baseLanguage.typesystem)",
                           "7410236346363166597",
                           true),
                   (SNode) expectedRetType,
                   true,
                   true,
                   _info_12389875345);
             }
           }
         }
       }
     }
     // last expression statement can serve as return statement
     SNode lastStatement = IMethodLike__BehaviorDescriptor.getLastStatement_idi2fhS7A.invoke(func);
     if (SNodeOperations.isInstanceOf(
         lastStatement,
         MetaAdapterFactory.getConcept(
             0xf3061a5392264cc5L,
             0xa443f952ceaf5816L,
             0xf8cc56b213L,
             "jetbrains.mps.baseLanguage.structure.ExpressionStatement"))) {
       final SNode expression =
           SLinkOperations.getTarget(
               SNodeOperations.cast(
                   lastStatement,
                   MetaAdapterFactory.getConcept(
                       0xf3061a5392264cc5L,
                       0xa443f952ceaf5816L,
                       0xf8cc56b213L,
                       "jetbrains.mps.baseLanguage.structure.ExpressionStatement")),
               MetaAdapterFactory.getContainmentLink(
                   0xf3061a5392264cc5L,
                   0xa443f952ceaf5816L,
                   0xf8cc56b213L,
                   0xf8cc56b214L,
                   "expression"));
       {
         SNode _nodeToCheck_1029348928467 = expression;
         EquationInfo _info_12389875345 =
             new EquationInfo(
                 _nodeToCheck_1029348928467,
                 null,
                 "r:00000000-0000-4000-0000-011c895902c5(jetbrains.mps.baseLanguage.typesystem)",
                 "1186053063874",
                 0,
                 null);
         typeCheckingContext.createGreaterThanInequality(
             (SNode) typeCheckingContext.getRepresentative(LCS_typevar_1186052624152),
             (SNode)
                 typeCheckingContext.typeOf(
                     _nodeToCheck_1029348928467,
                     "r:00000000-0000-4000-0000-011c895902c5(jetbrains.mps.baseLanguage.typesystem)",
                     "1186053084979",
                     true),
             false,
             true,
             _info_12389875345);
       }
       if ((expectedRetType != null)) {
         if (!(typeCheckingContext.isSingleTypeComputation())) {
           {
             SNode _nodeToCheck_1029348928467 = expression;
             EquationInfo _info_12389875345 =
                 new EquationInfo(
                     _nodeToCheck_1029348928467,
                     null,
                     "r:00000000-0000-4000-0000-011c895902c5(jetbrains.mps.baseLanguage.typesystem)",
                     "7630810368327770756",
                     0,
                     null);
             typeCheckingContext.createLessThanInequality(
                 (SNode)
                     typeCheckingContext.typeOf(
                         _nodeToCheck_1029348928467,
                         "r:00000000-0000-4000-0000-011c895902c5(jetbrains.mps.baseLanguage.typesystem)",
                         "7410236346363168757",
                         true),
                 (SNode) expectedRetType,
                 true,
                 true,
                 _info_12389875345);
           }
         }
       }
     }
     {
       SNode _nodeToCheck_1029348928467 = func;
       EquationInfo _info_12389875345 =
           new EquationInfo(
               _nodeToCheck_1029348928467,
               null,
               "r:00000000-0000-4000-0000-011c895902c5(jetbrains.mps.baseLanguage.typesystem)",
               "1186053174208",
               0,
               null);
       typeCheckingContext.createEquation(
           (SNode)
               typeCheckingContext.typeOf(
                   _nodeToCheck_1029348928467,
                   "r:00000000-0000-4000-0000-011c895902c5(jetbrains.mps.baseLanguage.typesystem)",
                   "1186053169643",
                   true),
           (SNode) typeCheckingContext.getRepresentative(LCS_typevar_1186052624152),
           _info_12389875345);
     }
     if ((expectedRetType != null)) {
       if (!(typeCheckingContext.isSingleTypeComputation())) {
         {
           SNode _nodeToCheck_1029348928467 = func;
           EquationInfo _info_12389875345 =
               new EquationInfo(
                   _nodeToCheck_1029348928467,
                   null,
                   "r:00000000-0000-4000-0000-011c895902c5(jetbrains.mps.baseLanguage.typesystem)",
                   "1186053540847",
                   0,
                   null);
           typeCheckingContext.createLessThanInequality(
               (SNode)
                   typeCheckingContext.typeOf(
                       _nodeToCheck_1029348928467,
                       "r:00000000-0000-4000-0000-011c895902c5(jetbrains.mps.baseLanguage.typesystem)",
                       "7410236346363168929",
                       true),
               (SNode) expectedRetType,
               true,
               true,
               _info_12389875345);
         }
       }
     }
   }
 }
 public void applyRule(
     final SNode func, final TypeCheckingContext typeCheckingContext, IsApplicableStatus status) {
   SNode expectedRetType =
       BehaviorReflection.invokeVirtual(
           (Class<SNode>) ((Class) Object.class),
           func,
           "virtual_getExpectedReturnType_1213877374441",
           new Object[] {});
   boolean noReturnExpected =
       ((expectedRetType == null)
           || TypeChecker.getInstance()
               .getSubtypingManager()
               .isSubtype(expectedRetType, _quotation_createNode_bbraw4_b0a0a0b0b()));
   if (SConceptOperations.isExactly(
       SNodeOperations.getConceptDeclaration(expectedRetType),
       "jetbrains.mps.baseLanguage.structure.WildCardType")) {
     // function is expected to return value of any type
     expectedRetType = null;
   }
   if (!(noReturnExpected)) {
     final SNode LCS_typevar_1186052624152 = typeCheckingContext.createNewRuntimeTypesVariable();
     Iterable<SNode> returnStatements =
         RulesFunctions_BaseLanguage.collectReturnStatements(
             SLinkOperations.getTarget(func, "body", true));
     // should return subtypes of the 'expected type'
     // if 'expected type' is null - should still return some value (of any type)
     for (SNode returnStatement : Sequence.fromIterable(returnStatements)) {
       if ((SLinkOperations.getTarget(returnStatement, "expression", true) == null)) {
         {
           MessageTarget errorTarget = new NodeMessageTarget();
           IErrorReporter _reporter_2309309498 =
               typeCheckingContext.reportTypeError(
                   returnStatement,
                   "should return value",
                   "r:00000000-0000-4000-0000-011c895902c5(jetbrains.mps.baseLanguage.typesystem)",
                   "1186053304501",
                   null,
                   errorTarget);
         }
       } else {
         {
           SNode _nodeToCheck_1029348928467 =
               SLinkOperations.getTarget(returnStatement, "expression", true);
           EquationInfo _info_12389875345 =
               new EquationInfo(
                   _nodeToCheck_1029348928467,
                   null,
                   "r:00000000-0000-4000-0000-011c895902c5(jetbrains.mps.baseLanguage.typesystem)",
                   "1186053304511",
                   0,
                   null);
           typeCheckingContext.createGreaterThanInequality(
               (SNode) typeCheckingContext.getRepresentative(LCS_typevar_1186052624152),
               (SNode)
                   typeCheckingContext.typeOf(
                       _nodeToCheck_1029348928467,
                       "r:00000000-0000-4000-0000-011c895902c5(jetbrains.mps.baseLanguage.typesystem)",
                       "1186053304515",
                       true),
               false,
               true,
               _info_12389875345);
         }
         if ((expectedRetType != null)) {
           if (!(typeCheckingContext.isSingleTypeComputation())) {
             {
               SNode _nodeToCheck_1029348928467 =
                   SLinkOperations.getTarget(returnStatement, "expression", true);
               EquationInfo _info_12389875345 =
                   new EquationInfo(
                       _nodeToCheck_1029348928467,
                       null,
                       "r:00000000-0000-4000-0000-011c895902c5(jetbrains.mps.baseLanguage.typesystem)",
                       "7630810368327770735",
                       0,
                       null);
               typeCheckingContext.createLessThanInequality(
                   (SNode)
                       typeCheckingContext.typeOf(
                           _nodeToCheck_1029348928467,
                           "r:00000000-0000-4000-0000-011c895902c5(jetbrains.mps.baseLanguage.typesystem)",
                           "7630810368327770718",
                           true),
                   (SNode) expectedRetType,
                   true,
                   true,
                   _info_12389875345);
             }
           }
         }
       }
     }
     // last expression statement can serve as return statement
     SNode lastStatement =
         BehaviorReflection.invokeVirtual(
             (Class<SNode>) ((Class) Object.class),
             func,
             "virtual_getLastStatement_1239354409446",
             new Object[] {});
     if (SNodeOperations.isInstanceOf(
         lastStatement, "jetbrains.mps.baseLanguage.structure.ExpressionStatement")) {
       SNode expression =
           SLinkOperations.getTarget(
               SNodeOperations.cast(
                   lastStatement, "jetbrains.mps.baseLanguage.structure.ExpressionStatement"),
               "expression",
               true);
       {
         SNode _nodeToCheck_1029348928467 = expression;
         EquationInfo _info_12389875345 =
             new EquationInfo(
                 _nodeToCheck_1029348928467,
                 null,
                 "r:00000000-0000-4000-0000-011c895902c5(jetbrains.mps.baseLanguage.typesystem)",
                 "1186053063874",
                 0,
                 null);
         typeCheckingContext.createGreaterThanInequality(
             (SNode) typeCheckingContext.getRepresentative(LCS_typevar_1186052624152),
             (SNode)
                 typeCheckingContext.typeOf(
                     _nodeToCheck_1029348928467,
                     "r:00000000-0000-4000-0000-011c895902c5(jetbrains.mps.baseLanguage.typesystem)",
                     "1186053084979",
                     true),
             false,
             true,
             _info_12389875345);
       }
       if ((expectedRetType != null)) {
         if (!(typeCheckingContext.isSingleTypeComputation())) {
           {
             SNode _nodeToCheck_1029348928467 = expression;
             EquationInfo _info_12389875345 =
                 new EquationInfo(
                     _nodeToCheck_1029348928467,
                     null,
                     "r:00000000-0000-4000-0000-011c895902c5(jetbrains.mps.baseLanguage.typesystem)",
                     "7630810368327770756",
                     0,
                     null);
             typeCheckingContext.createLessThanInequality(
                 (SNode)
                     typeCheckingContext.typeOf(
                         _nodeToCheck_1029348928467,
                         "r:00000000-0000-4000-0000-011c895902c5(jetbrains.mps.baseLanguage.typesystem)",
                         "7630810368327770753",
                         true),
                 (SNode) expectedRetType,
                 true,
                 true,
                 _info_12389875345);
           }
         }
       }
     }
     {
       SNode _nodeToCheck_1029348928467 = func;
       EquationInfo _info_12389875345 =
           new EquationInfo(
               _nodeToCheck_1029348928467,
               null,
               "r:00000000-0000-4000-0000-011c895902c5(jetbrains.mps.baseLanguage.typesystem)",
               "1186053174208",
               0,
               null);
       typeCheckingContext.createEquation(
           (SNode)
               typeCheckingContext.typeOf(
                   _nodeToCheck_1029348928467,
                   "r:00000000-0000-4000-0000-011c895902c5(jetbrains.mps.baseLanguage.typesystem)",
                   "1186053169643",
                   true),
           (SNode) typeCheckingContext.getRepresentative(LCS_typevar_1186052624152),
           _info_12389875345);
     }
     if ((expectedRetType != null)) {
       {
         SNode _nodeToCheck_1029348928467 = func;
         EquationInfo _info_12389875345 =
             new EquationInfo(
                 _nodeToCheck_1029348928467,
                 null,
                 "r:00000000-0000-4000-0000-011c895902c5(jetbrains.mps.baseLanguage.typesystem)",
                 "1186053540847",
                 0,
                 null);
         typeCheckingContext.createLessThanInequality(
             (SNode)
                 typeCheckingContext.typeOf(
                     _nodeToCheck_1029348928467,
                     "r:00000000-0000-4000-0000-011c895902c5(jetbrains.mps.baseLanguage.typesystem)",
                     "1186053540851",
                     true),
             (SNode) expectedRetType,
             false,
             true,
             _info_12389875345);
       }
     }
   }
 }
Exemplo n.º 22
0
 public void applyRule(
     final SNode invoke,
     final TypeCheckingContext typeCheckingContext,
     IsApplicableStatus status) {
   final List<SNode> ptypes = ListSequence.fromList(new ArrayList<SNode>());
   for (SNode p : SLinkOperations.getTargets(invoke, "parameter", true)) {
     final SNode T_typevar_642108346586029317 =
         typeCheckingContext.createNewRuntimeTypesVariable();
     ListSequence.fromList(ptypes)
         .addElement(typeCheckingContext.getRepresentative(T_typevar_642108346586029317));
     {
       SNode _nodeToCheck_1029348928467 = p;
       EquationInfo _info_12389875345 =
           new EquationInfo(
               _nodeToCheck_1029348928467,
               null,
               "r:00000000-0000-4000-0000-011c89590337(jetbrains.mps.baseLanguage.closures.typesystem)",
               "2608385503904033309",
               0,
               null);
       typeCheckingContext.createEquation(
           (SNode)
               typeCheckingContext.typeOf(
                   _nodeToCheck_1029348928467,
                   "r:00000000-0000-4000-0000-011c89590337(jetbrains.mps.baseLanguage.closures.typesystem)",
                   "2608385503904033311",
                   true),
           (SNode) typeCheckingContext.getRepresentative(T_typevar_642108346586029317),
           _info_12389875345);
     }
   }
   final SNode ret_typevar_642108346586029335 =
       typeCheckingContext.createNewRuntimeTypesVariable();
   {
     SNode _nodeToCheck_1029348928467 = invoke;
     EquationInfo _info_12389875345 =
         new EquationInfo(
             _nodeToCheck_1029348928467,
             null,
             "r:00000000-0000-4000-0000-011c89590337(jetbrains.mps.baseLanguage.closures.typesystem)",
             "642108346586029336",
             0,
             null);
     typeCheckingContext.createEquation(
         (SNode)
             typeCheckingContext.typeOf(
                 _nodeToCheck_1029348928467,
                 "r:00000000-0000-4000-0000-011c89590337(jetbrains.mps.baseLanguage.closures.typesystem)",
                 "642108346586029340",
                 true),
         (SNode) typeCheckingContext.getRepresentative(ret_typevar_642108346586029335),
         _info_12389875345);
   }
   final SNode ftype_typevar_642108346586029342 =
       typeCheckingContext.createNewRuntimeTypesVariable();
   {
     SNode _nodeToCheck_1029348928467 = SLinkOperations.getTarget(invoke, "function", true);
     EquationInfo _info_12389875345 =
         new EquationInfo(
             _nodeToCheck_1029348928467,
             null,
             "r:00000000-0000-4000-0000-011c89590337(jetbrains.mps.baseLanguage.closures.typesystem)",
             "642108346586029343",
             0,
             null);
     typeCheckingContext.createEquation(
         (SNode) typeCheckingContext.getRepresentative(ftype_typevar_642108346586029342),
         (SNode)
             typeCheckingContext.typeOf(
                 _nodeToCheck_1029348928467,
                 "r:00000000-0000-4000-0000-011c89590337(jetbrains.mps.baseLanguage.closures.typesystem)",
                 "642108346586029345",
                 true),
         _info_12389875345);
   }
   {
     final SNode _representatorVar_juleau_g0a =
         typeCheckingContext.getRepresentative(ftype_typevar_642108346586029342);
     typeCheckingContext.whenConcrete(
         _representatorVar_juleau_g0a,
         new Runnable() {
           public void run() {
             try {
               {
                 SNode _nodeToCheck_1029348928467 = invoke;
                 EquationInfo _info_12389875345 =
                     new EquationInfo(
                         _nodeToCheck_1029348928467,
                         null,
                         "r:00000000-0000-4000-0000-011c89590337(jetbrains.mps.baseLanguage.closures.typesystem)",
                         "2608385503904033275",
                         0,
                         null);
                 typeCheckingContext.createGreaterThanInequality(
                     (SNode) typeCheckingContext.getRepresentative(ret_typevar_642108346586029335),
                     (SNode)
                         FunctionTypeUtil.getResultType(
                             typeCheckingContext.getRepresentative(
                                 ftype_typevar_642108346586029342)),
                     false,
                     true,
                     _info_12389875345);
               }
               {
                 SNode pt;
                 SNode fpt;
                 Iterator<SNode> pt_iterator = ListSequence.fromList(ptypes).iterator();
                 Iterator<SNode> fpt_iterator =
                     ListSequence.fromList(
                             FunctionTypeUtil.getParameterTypes(
                                 typeCheckingContext.getRepresentative(
                                     ftype_typevar_642108346586029342)))
                         .iterator();
                 while (true) {
                   if (!(pt_iterator.hasNext())) {
                     break;
                   }
                   if (!(fpt_iterator.hasNext())) {
                     break;
                   }
                   pt = pt_iterator.next();
                   fpt = fpt_iterator.next();
                   {
                     SNode _nodeToCheck_1029348928467 = pt;
                     EquationInfo _info_12389875345 =
                         new EquationInfo(
                             _nodeToCheck_1029348928467,
                             null,
                             "r:00000000-0000-4000-0000-011c89590337(jetbrains.mps.baseLanguage.closures.typesystem)",
                             "2608385503904033282",
                             0,
                             null);
                     typeCheckingContext.createLessThanInequality(
                         (SNode)
                             typeCheckingContext.typeOf(
                                 _nodeToCheck_1029348928467,
                                 "r:00000000-0000-4000-0000-011c89590337(jetbrains.mps.baseLanguage.closures.typesystem)",
                                 "2608385503904033284",
                                 true),
                         (SNode) fpt,
                         false,
                         true,
                         _info_12389875345);
                   }
                 }
               }
             } catch (RuntimeException ex) {
               if (!(false)) {
                 MessageTarget errorTarget = new NodeMessageTarget();
                 IErrorReporter _reporter_2309309498 =
                     typeCheckingContext.reportTypeError(
                         invoke,
                         ex.getMessage(),
                         "r:00000000-0000-4000-0000-011c89590337(jetbrains.mps.baseLanguage.closures.typesystem)",
                         "8679288141369466397",
                         null,
                         errorTarget);
               }
             }
           }
         },
         "r:00000000-0000-4000-0000-011c89590337(jetbrains.mps.baseLanguage.closures.typesystem)",
         "642108346586029351",
         false,
         false);
   }
 }
 public void applyRule(
     final SNode operation,
     final TypeCheckingContext typeCheckingContext,
     IsApplicableStatus status) {
   final SNode KEY_typevar_1240854441569 = typeCheckingContext.createNewRuntimeTypesVariable();
   final SNode VALUE_typevar_1240854445546 = typeCheckingContext.createNewRuntimeTypesVariable();
   {
     SNode _nodeToCheck_1029348928467 =
         IOperation_BehaviorDescriptor.getOperand_idhEwIP$m.invoke(operation);
     EquationInfo _info_12389875345 =
         new EquationInfo(
             _nodeToCheck_1029348928467,
             null,
             "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
             "7668447476859120488",
             0,
             null);
     typeCheckingContext.createGreaterThanInequality(
         (SNode)
             _quotation_createNode_9rcmzr_a0c0b(
                 typeCheckingContext.getRepresentative(KEY_typevar_1240854441569),
                 typeCheckingContext.getRepresentative(VALUE_typevar_1240854445546)),
         (SNode)
             typeCheckingContext.typeOf(
                 _nodeToCheck_1029348928467,
                 "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
                 "1240854449114",
                 true),
         false,
         true,
         _info_12389875345);
   }
   final SNode MAPPING_typevar_1240854519783 = typeCheckingContext.createNewRuntimeTypesVariable();
   {
     SNode _nodeToCheck_1029348928467 = operation;
     EquationInfo _info_12389875345 =
         new EquationInfo(
             _nodeToCheck_1029348928467,
             null,
             "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
             "1240854488447",
             0,
             null);
     typeCheckingContext.createEquation(
         (SNode) typeCheckingContext.getRepresentative(MAPPING_typevar_1240854519783),
         (SNode)
             _quotation_createNode_9rcmzr_a0e0b(
                 typeCheckingContext.getRepresentative(KEY_typevar_1240854441569),
                 typeCheckingContext.getRepresentative(VALUE_typevar_1240854445546)),
         _info_12389875345);
   }
   {
     SNode _nodeToCheck_1029348928467 = operation;
     EquationInfo _info_12389875345 =
         new EquationInfo(
             _nodeToCheck_1029348928467,
             null,
             "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
             "1240854537317",
             0,
             null);
     typeCheckingContext.createEquation(
         (SNode)
             typeCheckingContext.typeOf(
                 _nodeToCheck_1029348928467,
                 "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
                 "1240854533220",
                 true),
         (SNode)
             _quotation_createNode_9rcmzr_a0f0b(
                 typeCheckingContext.getRepresentative(MAPPING_typevar_1240854519783)),
         _info_12389875345);
   }
 }
Exemplo n.º 24
0
 public void applyRule(
     final SNode tab, final TypeCheckingContext typeCheckingContext, IsApplicableStatus status) {
   final SNode componentType_typevar_6938053545825381660 =
       typeCheckingContext.createNewRuntimeTypesVariable();
   {
     SNode _nodeToCheck_1029348928467 =
         SLinkOperations.getTarget(
             tab,
             MetaAdapterFactory.getContainmentLink(
                 0x28f9e4973b424291L,
                 0xaeba0a1039153ab1L,
                 0x6048eaf0c78f324eL,
                 0x6048eaf0c78fad10L,
                 "componentExpression"));
     EquationInfo _info_12389875345 =
         new EquationInfo(
             _nodeToCheck_1029348928467,
             null,
             "r:00000000-0000-4000-0000-011c89590364(jetbrains.mps.lang.plugin.typesystem)",
             "6938053545825381661",
             0,
             null);
     typeCheckingContext.createEquation(
         (SNode) typeCheckingContext.getRepresentative(componentType_typevar_6938053545825381660),
         (SNode)
             typeCheckingContext.typeOf(
                 _nodeToCheck_1029348928467,
                 "r:00000000-0000-4000-0000-011c89590364(jetbrains.mps.lang.plugin.typesystem)",
                 "6938053545825381665",
                 true),
         _info_12389875345);
   }
   {
     SNode _nodeToCheck_1029348928467 = tab;
     EquationInfo _info_12389875345 =
         new EquationInfo(
             _nodeToCheck_1029348928467,
             null,
             "r:00000000-0000-4000-0000-011c89590364(jetbrains.mps.lang.plugin.typesystem)",
             "6938053545825381669",
             0,
             null);
     typeCheckingContext.createLessThanInequality(
         (SNode) typeCheckingContext.getRepresentative(componentType_typevar_6938053545825381660),
         (SNode) _quotation_createNode_6sqcaa_a0c0b(),
         false,
         true,
         _info_12389875345);
   }
   {
     SNode _nodeToCheck_1029348928467 =
         SLinkOperations.getTarget(
             tab,
             MetaAdapterFactory.getContainmentLink(
                 0x28f9e4973b424291L,
                 0xaeba0a1039153ab1L,
                 0x6048eaf0c78f324eL,
                 0x6048eaf0c78fad11L,
                 "titleExpression"));
     EquationInfo _info_12389875345 =
         new EquationInfo(
             _nodeToCheck_1029348928467,
             null,
             "r:00000000-0000-4000-0000-011c89590364(jetbrains.mps.lang.plugin.typesystem)",
             "6938053545825381676",
             0,
             null);
     typeCheckingContext.createLessThanInequality(
         (SNode)
             typeCheckingContext.typeOf(
                 _nodeToCheck_1029348928467,
                 "r:00000000-0000-4000-0000-011c89590364(jetbrains.mps.lang.plugin.typesystem)",
                 "6938053545825381682",
                 true),
         (SNode) _quotation_createNode_6sqcaa_a0d0b(),
         false,
         true,
         _info_12389875345);
   }
   {
     SNode _nodeToCheck_1029348928467 =
         SLinkOperations.getTarget(
             tab,
             MetaAdapterFactory.getContainmentLink(
                 0x28f9e4973b424291L,
                 0xaeba0a1039153ab1L,
                 0x6048eaf0c78f324eL,
                 0x6048eaf0c78fad12L,
                 "iconExpression"));
     EquationInfo _info_12389875345 =
         new EquationInfo(
             _nodeToCheck_1029348928467,
             null,
             "r:00000000-0000-4000-0000-011c89590364(jetbrains.mps.lang.plugin.typesystem)",
             "6938053545825381686",
             0,
             null);
     typeCheckingContext.createLessThanInequality(
         (SNode)
             typeCheckingContext.typeOf(
                 _nodeToCheck_1029348928467,
                 "r:00000000-0000-4000-0000-011c89590364(jetbrains.mps.lang.plugin.typesystem)",
                 "6938053545825381692",
                 true),
         (SNode) _quotation_createNode_6sqcaa_a0e0b(),
         false,
         true,
         _info_12389875345);
   }
   {
     SNode _nodeToCheck_1029348928467 =
         SLinkOperations.getTarget(
             tab,
             MetaAdapterFactory.getContainmentLink(
                 0x28f9e4973b424291L,
                 0xaeba0a1039153ab1L,
                 0x6048eaf0c78f324eL,
                 0x6048eaf0c78fad13L,
                 "disposeTabClosure"));
     EquationInfo _info_12389875345 =
         new EquationInfo(
             _nodeToCheck_1029348928467,
             null,
             "r:00000000-0000-4000-0000-011c89590364(jetbrains.mps.lang.plugin.typesystem)",
             "6938053545825381696",
             0,
             null);
     typeCheckingContext.createEquation(
         (SNode)
             typeCheckingContext.typeOf(
                 _nodeToCheck_1029348928467,
                 "r:00000000-0000-4000-0000-011c89590364(jetbrains.mps.lang.plugin.typesystem)",
                 "6938053545825381705",
                 true),
         (SNode)
             _quotation_createNode_6sqcaa_a0f0b(
                 typeCheckingContext.getRepresentative(componentType_typevar_6938053545825381660)),
         _info_12389875345);
   }
 }