comparison src/ast_convert.rs @ 78:f1a845e4121b

Add ast.GeneratorExp.
author Bastien Orivel <eijebong@bananium.fr>
date Mon, 13 Jun 2016 19:56:45 +0200
parents 7d1406181aae
children 6bf54bff8dbd
comparison
equal deleted inserted replaced
77:7d1406181aae 78:f1a845e4121b
304 let await_type = ast_module.get(py, "Await").unwrap(); 304 let await_type = ast_module.get(py, "Await").unwrap();
305 let yield_type = ast_module.get(py, "Yield").unwrap(); 305 let yield_type = ast_module.get(py, "Yield").unwrap();
306 let yield_from_type = ast_module.get(py, "YieldFrom").unwrap(); 306 let yield_from_type = ast_module.get(py, "YieldFrom").unwrap();
307 let set_type = ast_module.get(py, "Set").unwrap(); 307 let set_type = ast_module.get(py, "Set").unwrap();
308 let setcomp_type = ast_module.get(py, "SetComp").unwrap(); 308 let setcomp_type = ast_module.get(py, "SetComp").unwrap();
309 let generatorexp_type = ast_module.get(py, "GeneratorExp").unwrap();
309 310
310 assert!(is_instance(&ast, &ast_type)); 311 assert!(is_instance(&ast, &ast_type));
311 312
312 if is_instance(&ast, &attribute_type) { 313 if is_instance(&ast, &attribute_type) {
313 let value = ast.getattr(py, "value").unwrap(); 314 let value = ast.getattr(py, "value").unwrap();
433 434
434 let elt = parse_expr(py, elt); 435 let elt = parse_expr(py, elt);
435 let generators = parse_list(py, generators, parse_comprehension); 436 let generators = parse_list(py, generators, parse_comprehension);
436 437
437 expr::SetComp(Box::new(elt), generators) 438 expr::SetComp(Box::new(elt), generators)
439 } else if is_instance(&ast, &generatorexp_type) {
440 let elt = ast.getattr(py, "elt").unwrap();
441 let generators = ast.getattr(py, "generators").unwrap();
442
443 let elt = parse_expr(py, elt);
444 let generators = parse_list(py, generators, parse_comprehension);
445
446 expr::GeneratorExp(Box::new(elt), generators)
438 } else { 447 } else {
439 println!("expr {}", ast); 448 println!("expr {}", ast);
440 unreachable!() 449 unreachable!()
441 } 450 }
442 } 451 }