public static void RemoveLambdaInfoFromCompilationContext(compilation_context context, function_lambda_definition lambdaDefinition)
 {
     if (context.converted_namespace != null &&
         context.converted_namespace.functions != null &&
         context.converted_namespace.functions.Any())
     // Если добавилось в глобальные функции, то удаляем оттуда
     {
         var lastIndex = context.converted_namespace.functions.Count - 1;
         if (context.converted_namespace.functions[lastIndex].name ==
             lambdaDefinition.lambda_name)
         {
             context.converted_namespace.functions.remove_at(lastIndex);
         }
     }
     //else SSM 27/04/16 - грубое исправление ошибки #147
     {
         // Если добавилась лямбда как метод класса, то удаляем оттуда
         if (context.converted_type != null &&
             context.converted_type.methods != null &&
             context.converted_type.methods.Any())
         {
             var lastIndex = context.converted_type.methods.Count - 1;
             if (context.converted_type.methods[lastIndex].name ==
                 lambdaDefinition.lambda_name)
             {
                 context.converted_type.methods.remove_at(lastIndex);
             }
         }
     }
 }
Example #2
0
 /// <summary>
 /// Конструктор
 /// </summary>
 /// <param name="root">Корень обходимого поддерева</param>
 /// <param name="context">Контекст. Необходим для поиска переменных</param>
 /// <param name="isForNode">True при обходе цикла, False при обходе секций</param>
 public VarFinderSyntaxVisitor(syntax_tree_node root, compilation_context context, bool isForNode)
 {
     this.isForNode = isForNode;
     this.context   = context;
     ProcessNode(root);
     FixResultVar();
 }