예제 #1
0
 virtual public void foreach_statement(foreach_statement ast, int indent)
 {
     //        Write("foreach (", indent);
     //        visit(ast.ty);
     //        Write(" {0} in ", ast.id.str);
     //        visit(ast.expr);
     //        Write(")");
     //        statement(ast.body, indent + 1);
 }
예제 #2
0
 public virtual bool is_try(AST s)
 {
     if (s is try_statement || s is catch_clauses ||
         s is using_statement || s is lock_statement)
     {
         return(true);
     }
     if (s is foreach_statement)
     {
         foreach_statement ast = (foreach_statement)s;
         if (ast.expr.typ is ArrayType)
         {
             return(false);
         }
         if (ast.GetEnumerator.Type.Implements(T.IDisposable) ||
             !ast.GetEnumerator.Type.Is("sealed"))
         {
             return(true);
         }
     }
     return(false);
 }
예제 #3
0
 public virtual void foreach_statement(foreach_statement ast)
 {
     statement(ast.body);
     ast.expr = expression(ast.expr);
 }