Mercurial > python-compiler.rs
comparison src/ast_convert.rs @ 64:53817b39f139
Add FunctionDef.decorator_list support.
author | Emmanuel Gil Peyrot <linkmauve@linkmauve.fr> |
---|---|
date | Mon, 13 Jun 2016 01:18:48 +0100 |
parents | 5df52b40fe54 |
children | ce5e27a3f277 |
comparison
equal
deleted
inserted
replaced
63:5df52b40fe54 | 64:53817b39f139 |
---|---|
562 stmt::ClassDef(name, bases, vec!(), body, vec!()) | 562 stmt::ClassDef(name, bases, vec!(), body, vec!()) |
563 } else if is_instance(&ast, &function_def_type) { | 563 } else if is_instance(&ast, &function_def_type) { |
564 let name = ast.getattr(py, "name").unwrap(); | 564 let name = ast.getattr(py, "name").unwrap(); |
565 let args = ast.getattr(py, "args").unwrap(); | 565 let args = ast.getattr(py, "args").unwrap(); |
566 let body = ast.getattr(py, "body").unwrap(); | 566 let body = ast.getattr(py, "body").unwrap(); |
567 let decorator_list = ast.getattr(py, "decorator_list").unwrap(); | |
567 let returns = ast.getattr(py, "returns").unwrap(); | 568 let returns = ast.getattr(py, "returns").unwrap(); |
568 | 569 |
569 let name = get_str(py, name); | 570 let name = get_str(py, name); |
570 let args = parse_arguments(py, args); | 571 let args = parse_arguments(py, args); |
571 let body = parse_list(py, body, parse_statement); | 572 let body = parse_list(py, body, parse_statement); |
572 | 573 let decorator_list = parse_list(py, decorator_list, parse_expr); |
573 let decorators = vec!(); | |
574 let returns = parse_optional_expr(py, returns); | 574 let returns = parse_optional_expr(py, returns); |
575 | 575 |
576 stmt::FunctionDef(name, args, body, decorators, returns) | 576 stmt::FunctionDef(name, args, body, decorator_list, returns) |
577 } else if is_instance(&ast, &global_type) { | 577 } else if is_instance(&ast, &global_type) { |
578 let names = ast.getattr(py, "names").unwrap(); | 578 let names = ast.getattr(py, "names").unwrap(); |
579 let names = parse_list(py, names, get_str); | 579 let names = parse_list(py, names, get_str); |
580 stmt::Global(names) | 580 stmt::Global(names) |
581 } else if is_instance(&ast, &nonlocal_type) { | 581 } else if is_instance(&ast, &nonlocal_type) { |