Mercurial > python-compiler.rs
comparison src/ast_convert.rs @ 44:5f1d285471af
Finish ImportFrom conversion and add a test for it.
author | Bastien Orivel <eijebong@bananium.fr> |
---|---|
date | Tue, 07 Jun 2016 12:19:10 +0200 |
parents | 7af637f444d1 |
children | 38f59b0efc2c |
comparison
equal
deleted
inserted
replaced
43:4dfea217989b | 44:5f1d285471af |
---|---|
40 let item = item.unwrap(); | 40 let item = item.unwrap(); |
41 let item = parse(py, item); | 41 let item = parse(py, item); |
42 exprs.push(item); | 42 exprs.push(item); |
43 } | 43 } |
44 exprs | 44 exprs |
45 } | |
46 | |
47 fn parse_alias(py: Python, ast: PyObject) -> alias { | |
48 let ast_alias = get_str(py, ast.getattr(py, "name").unwrap()); | |
49 let asname = ast.getattr(py, "asname").unwrap(); | |
50 if asname == py.None() { | |
51 alias{name: ast_alias, asname: None} | |
52 } else { | |
53 alias{name: ast_alias, asname: Some(get_str(py, asname))} | |
54 } | |
45 } | 55 } |
46 | 56 |
47 fn parse_unaryop(py: Python, ast: PyObject) -> unaryop { | 57 fn parse_unaryop(py: Python, ast: PyObject) -> unaryop { |
48 let builtins_module = py.import("builtins").unwrap(); | 58 let builtins_module = py.import("builtins").unwrap(); |
49 let isinstance = builtins_module.get(py, "isinstance").unwrap(); | 59 let isinstance = builtins_module.get(py, "isinstance").unwrap(); |
530 let module = ast.getattr(py, "module").unwrap(); | 540 let module = ast.getattr(py, "module").unwrap(); |
531 let names = ast.getattr(py, "names").unwrap(); | 541 let names = ast.getattr(py, "names").unwrap(); |
532 let level = ast.getattr(py, "level").unwrap(); | 542 let level = ast.getattr(py, "level").unwrap(); |
533 | 543 |
534 let module = get_str(py, module); | 544 let module = get_str(py, module); |
535 | 545 let names = parse_list(py, names, parse_alias); |
536 // TODO: move that into another function. | 546 |
537 let mut names_ = vec!(); | 547 stmt::ImportFrom(module, names, None) |
538 for alias in names.iter(py).unwrap() { | |
539 let alias = alias.unwrap(); | |
540 let alias = parse_expr(py, alias); | |
541 println!("{:?}", alias); | |
542 // XXX | |
543 //names_.push(alias{name: alias, asname: alias}); | |
544 } | |
545 | |
546 stmt::ImportFrom(module, names_, None) | |
547 } else if is_instance(&ast, &return_type) { | 548 } else if is_instance(&ast, &return_type) { |
548 let value = ast.getattr(py, "value").unwrap(); | 549 let value = ast.getattr(py, "value").unwrap(); |
549 if value == py.None() { | 550 if value == py.None() { |
550 stmt::Return(None) | 551 stmt::Return(None) |
551 } else { | 552 } else { |