| 759 | |
| 760 | |
| 761 | class FunctionBodyTransformer(ast.NodeTransformer): |
| 762 | # TODO this does not automatically contain line_end information! |
| 763 | def visit_Nonlocal(self, node): |
| 764 | new_node = ast.copy_location(ast.Global(names=node.names), node) |
| 765 | return FunctionBodyTransformer.decorate(new_node, node) |
| 766 | |
| 767 | def visit_Return(self, node): |
| 768 | new_node = ast.copy_location(ast.Expr(value=node.value), node) |
| 769 | return FunctionBodyTransformer.decorate(new_node, node) |
| 770 | |
| 771 | @staticmethod |
| 772 | def decorate(new_node, node): |
| 773 | new_node.first_token = node.first_token |
| 774 | new_node.last_token = node.last_token |
| 775 | return new_node |
| 776 | |
| 777 | |
| 778 | class WithParser(Parser): |