comparison src/ast_convert.rs @ 71:2c1e2ce41263

Add ast.AsyncFor.
author Bastien Orivel <eijebong@bananium.fr>
date Mon, 13 Jun 2016 18:02:34 +0200
parents a73eaf42bea1
children 7ac23f4336b1
comparison
equal deleted inserted replaced
70:c9b9165abb9e 71:2c1e2ce41263
534 let import_from_type = ast_module.get(py, "ImportFrom").unwrap(); 534 let import_from_type = ast_module.get(py, "ImportFrom").unwrap();
535 let import_type = ast_module.get(py, "Import").unwrap(); 535 let import_type = ast_module.get(py, "Import").unwrap();
536 let if_type = ast_module.get(py, "If").unwrap(); 536 let if_type = ast_module.get(py, "If").unwrap();
537 let while_type = ast_module.get(py, "While").unwrap(); 537 let while_type = ast_module.get(py, "While").unwrap();
538 let for_type = ast_module.get(py, "For").unwrap(); 538 let for_type = ast_module.get(py, "For").unwrap();
539 let async_for_type = ast_module.get(py, "AsyncFor").unwrap();
539 let expr_type = ast_module.get(py, "Expr").unwrap(); 540 let expr_type = ast_module.get(py, "Expr").unwrap();
540 let break_type = ast_module.get(py, "Break").unwrap(); 541 let break_type = ast_module.get(py, "Break").unwrap();
541 let delete_type = ast_module.get(py, "Delete").unwrap(); 542 let delete_type = ast_module.get(py, "Delete").unwrap();
542 let pass_type = ast_module.get(py, "Pass").unwrap(); 543 let pass_type = ast_module.get(py, "Pass").unwrap();
543 let continue_type = ast_module.get(py, "Continue").unwrap(); 544 let continue_type = ast_module.get(py, "Continue").unwrap();
616 let test = parse_expr(py, test); 617 let test = parse_expr(py, test);
617 let body = parse_list(py, body, parse_statement); 618 let body = parse_list(py, body, parse_statement);
618 let orelse = parse_list(py, orelse, parse_statement); 619 let orelse = parse_list(py, orelse, parse_statement);
619 620
620 stmt::While(test, body, orelse) 621 stmt::While(test, body, orelse)
621 } else if is_instance(&ast, &for_type) { 622 } else if is_instance(&ast, &for_type) || is_instance(&ast, &async_for_type) {
622 let target = ast.getattr(py, "target").unwrap(); 623 let target = ast.getattr(py, "target").unwrap();
623 let iter = ast.getattr(py, "iter").unwrap(); 624 let iter = ast.getattr(py, "iter").unwrap();
624 let body = ast.getattr(py, "body").unwrap(); 625 let body = ast.getattr(py, "body").unwrap();
625 let orelse = ast.getattr(py, "orelse").unwrap(); 626 let orelse = ast.getattr(py, "orelse").unwrap();
626 627
627 let target = parse_expr(py, target); 628 let target = parse_expr(py, target);
628 let iter = parse_expr(py, iter); 629 let iter = parse_expr(py, iter);
629 let body = parse_list(py, body, parse_statement); 630 let body = parse_list(py, body, parse_statement);
630 let orelse = parse_list(py, orelse, parse_statement); 631 let orelse = parse_list(py, orelse, parse_statement);
631 632
632 stmt::For(target, iter, body, orelse) 633 stmt::For(target, iter, body, orelse, is_instance(&ast, &async_for_type))
633 } else if is_instance(&ast, &assign_type) { 634 } else if is_instance(&ast, &assign_type) {
634 let targets = ast.getattr(py, "targets").unwrap(); 635 let targets = ast.getattr(py, "targets").unwrap();
635 let value = ast.getattr(py, "value").unwrap(); 636 let value = ast.getattr(py, "value").unwrap();
636 637
637 let targets = parse_list(py, targets, parse_expr); 638 let targets = parse_list(py, targets, parse_expr);