@@ -364,8 +364,9 @@ fn expression_to_ast(vm: &VirtualMachine, expression: &ast::Expression) -> PyRes
364
364
comparators => comparators,
365
365
} )
366
366
}
367
- ast:: Expression :: Identifier { name } => node ! ( vm, Identifier , {
368
- id => vm. ctx. new_str( name. clone( ) )
367
+ ast:: Expression :: Identifier { name } => node ! ( vm, Name , {
368
+ id => vm. ctx. new_str( name. clone( ) ) ,
369
+ ctx => vm. ctx. none( ) // TODO: add context.
369
370
} ) ,
370
371
ast:: Expression :: Lambda { args, body } => node ! ( vm, Lambda , {
371
372
args => parameters_to_ast( vm, args) ?,
@@ -470,6 +471,7 @@ fn expression_to_ast(vm: &VirtualMachine, expression: &ast::Expression) -> PyRes
470
471
ast:: Expression :: Attribute { value, name } => node ! ( vm, Attribute , {
471
472
value => expression_to_ast( vm, value) ?,
472
473
attr => vm. ctx. new_str( name. to_string( ) ) ,
474
+ ctx => vm. ctx. none( )
473
475
} ) ,
474
476
ast:: Expression :: Starred { value } => node ! ( vm, Starred , {
475
477
value => expression_to_ast( vm, value) ?
@@ -589,73 +591,71 @@ fn ast_parse(source: PyStringRef, vm: &VirtualMachine) -> PyResult<AstNodeRef> {
589
591
pub fn make_module ( vm : & VirtualMachine ) -> PyObjectRef {
590
592
let ctx = & vm. ctx ;
591
593
592
- let ast_base = py_class ! ( ctx, "_ast. AST" , ctx. object( ) , { } ) ;
594
+ let ast_base = py_class ! ( ctx, "AST" , ctx. object( ) , { } ) ;
593
595
py_module ! ( vm, "ast" , {
594
596
"parse" => ctx. new_rustfunc( ast_parse) ,
595
597
"AST" => ast_base. clone( ) ,
596
598
// TODO: There's got to be a better way!
597
- "alias" => py_class!( ctx, "_ast.alias" , ast_base. clone( ) , { } ) ,
598
- "arg" => py_class!( ctx, "_ast.arg" , ast_base. clone( ) , { } ) ,
599
- "arguments" => py_class!( ctx, "_ast.arguments" , ast_base. clone( ) , { } ) ,
600
- "Assign" => py_class!( ctx, "_ast.Assign" , ast_base. clone( ) , { } ) ,
601
- "AugAssign" => py_class!( ctx, "_ast.AugAssign" , ast_base. clone( ) , { } ) ,
602
- "AsyncFor" => py_class!( ctx, "_ast.AsyncFor" , ast_base. clone( ) , { } ) ,
603
- "AsyncFunctionDef" => py_class!( ctx, "_ast.AsyncFunctionDef" , ast_base. clone( ) , { } ) ,
604
- "Assert" => py_class!( ctx, "_ast.Assert" , ast_base. clone( ) , { } ) ,
605
- "Attribute" => py_class!( ctx, "_ast.Attribute" , ast_base. clone( ) , { } ) ,
606
- "Await" => py_class!( ctx, "_ast.Await" , ast_base. clone( ) , { } ) ,
607
- "BinOp" => py_class!( ctx, "_ast.BinOp" , ast_base. clone( ) , { } ) ,
608
- "BoolOp" => py_class!( ctx, "_ast.BoolOp" , ast_base. clone( ) , { } ) ,
609
- "Break" => py_class!( ctx, "_ast.Break" , ast_base. clone( ) , { } ) ,
610
- "Bytes" => py_class!( ctx, "_ast.Bytes" , ast_base. clone( ) , { } ) ,
611
- "Call" => py_class!( ctx, "_ast.Call" , ast_base. clone( ) , { } ) ,
612
- "ClassDef" => py_class!( ctx, "_ast.ClassDef" , ast_base. clone( ) , { } ) ,
613
- "Compare" => py_class!( ctx, "_ast.Compare" , ast_base. clone( ) , { } ) ,
614
- "comprehension" => py_class!( ctx, "_ast.comprehension" , ast_base. clone( ) , { } ) ,
615
- "Continue" => py_class!( ctx, "_ast.Continue" , ast_base. clone( ) , { } ) ,
616
- "Delete" => py_class!( ctx, "_ast.Delete" , ast_base. clone( ) , { } ) ,
617
- "Dict" => py_class!( ctx, "_ast.Dict" , ast_base. clone( ) , { } ) ,
618
- "DictComp" => py_class!( ctx, "_ast.DictComp" , ast_base. clone( ) , { } ) ,
619
- "Ellipsis" => py_class!( ctx, "_ast.Ellipsis" , ast_base. clone( ) , { } ) ,
620
- "Expr" => py_class!( ctx, "_ast.Expr" , ast_base. clone( ) , { } ) ,
621
- "ExceptHandler" => py_class!( ctx, "_ast.ExceptHandler" , ast_base. clone( ) , { } ) ,
622
- "For" => py_class!( ctx, "_ast.For" , ast_base. clone( ) , { } ) ,
623
- "FormattedValue" => py_class!( ctx, "_ast.FormattedValue" , ast_base. clone( ) , { } ) ,
624
- "FunctionDef" => py_class!( ctx, "_ast.FunctionDef" , ast_base. clone( ) , { } ) ,
625
- "GeneratorExp" => py_class!( ctx, "_ast.GeneratorExp" , ast_base. clone( ) , { } ) ,
626
- "Global" => py_class!( ctx, "_ast.Global" , ast_base. clone( ) , { } ) ,
627
- "Identifier" => py_class!( ctx, "_ast.Identifier" , ast_base. clone( ) , { } ) ,
628
- "If" => py_class!( ctx, "_ast.If" , ast_base. clone( ) , { } ) ,
629
- "IfExp" => py_class!( ctx, "_ast.IfExp" , ast_base. clone( ) , { } ) ,
630
- "Import" => py_class!( ctx, "_ast.Import" , ast_base. clone( ) , { } ) ,
631
- "ImportFrom" => py_class!( ctx, "_ast.ImportFrom" , ast_base. clone( ) , { } ) ,
632
- "JoinedStr" => py_class!( ctx, "_ast.JoinedStr" , ast_base. clone( ) , { } ) ,
633
- "keyword" => py_class!( ctx, "_ast.keyword" , ast_base. clone( ) , { } ) ,
634
- "Lambda" => py_class!( ctx, "_ast.Lambda" , ast_base. clone( ) , { } ) ,
635
- "List" => py_class!( ctx, "_ast.List" , ast_base. clone( ) , { } ) ,
636
- "ListComp" => py_class!( ctx, "_ast.ListComp" , ast_base. clone( ) , { } ) ,
637
- "Module" => py_class!( ctx, "_ast.Module" , ast_base. clone( ) , { } ) ,
638
- "NameConstant" => py_class!( ctx, "_ast.NameConstant" , ast_base. clone( ) , { } ) ,
639
- "NameConstant" => py_class!( ctx, "_ast.NameConstant" , ast_base. clone( ) , { } ) ,
640
- "NameConstant" => py_class!( ctx, "_ast.NameConstant" , ast_base. clone( ) , { } ) ,
641
- "Nonlocal" => py_class!( ctx, "_ast.Nonlocal" , ast_base. clone( ) , { } ) ,
642
- "Num" => py_class!( ctx, "_ast.Num" , ast_base. clone( ) , { } ) ,
643
- "Pass" => py_class!( ctx, "_ast.Pass" , ast_base. clone( ) , { } ) ,
644
- "Raise" => py_class!( ctx, "_ast.Raise" , ast_base. clone( ) , { } ) ,
645
- "Return" => py_class!( ctx, "_ast.Return" , ast_base. clone( ) , { } ) ,
646
- "Set" => py_class!( ctx, "_ast.Set" , ast_base. clone( ) , { } ) ,
647
- "SetComp" => py_class!( ctx, "_ast.SetComp" , ast_base. clone( ) , { } ) ,
648
- "Starred" => py_class!( ctx, "_ast.Starred" , ast_base. clone( ) , { } ) ,
649
- "Starred" => py_class!( ctx, "_ast.Starred" , ast_base. clone( ) , { } ) ,
650
- "Str" => py_class!( ctx, "_ast.Str" , ast_base. clone( ) , { } ) ,
651
- "Subscript" => py_class!( ctx, "_ast.Subscript" , ast_base. clone( ) , { } ) ,
652
- "Try" => py_class!( ctx, "_ast.Try" , ast_base. clone( ) , { } ) ,
653
- "Tuple" => py_class!( ctx, "_ast.Tuple" , ast_base. clone( ) , { } ) ,
654
- "UnaryOp" => py_class!( ctx, "_ast.UnaryOp" , ast_base. clone( ) , { } ) ,
655
- "While" => py_class!( ctx, "_ast.While" , ast_base. clone( ) , { } ) ,
656
- "With" => py_class!( ctx, "_ast.With" , ast_base. clone( ) , { } ) ,
657
- "withitem" => py_class!( ctx, "_ast.withitem" , ast_base. clone( ) , { } ) ,
658
- "Yield" => py_class!( ctx, "_ast.Yield" , ast_base. clone( ) , { } ) ,
659
- "YieldFrom" => py_class!( ctx, "_ast.YieldFrom" , ast_base. clone( ) , { } ) ,
599
+ "alias" => py_class!( ctx, "alias" , ast_base. clone( ) , { } ) ,
600
+ "arg" => py_class!( ctx, "arg" , ast_base. clone( ) , { } ) ,
601
+ "arguments" => py_class!( ctx, "arguments" , ast_base. clone( ) , { } ) ,
602
+ "Assign" => py_class!( ctx, "Assign" , ast_base. clone( ) , { } ) ,
603
+ "AugAssign" => py_class!( ctx, "AugAssign" , ast_base. clone( ) , { } ) ,
604
+ "AsyncFor" => py_class!( ctx, "AsyncFor" , ast_base. clone( ) , { } ) ,
605
+ "AsyncFunctionDef" => py_class!( ctx, "AsyncFunctionDef" , ast_base. clone( ) , { } ) ,
606
+ "Assert" => py_class!( ctx, "Assert" , ast_base. clone( ) , { } ) ,
607
+ "Attribute" => py_class!( ctx, "Attribute" , ast_base. clone( ) , { } ) ,
608
+ "Await" => py_class!( ctx, "Await" , ast_base. clone( ) , { } ) ,
609
+ "BinOp" => py_class!( ctx, "BinOp" , ast_base. clone( ) , { } ) ,
610
+ "BoolOp" => py_class!( ctx, "BoolOp" , ast_base. clone( ) , { } ) ,
611
+ "Break" => py_class!( ctx, "Break" , ast_base. clone( ) , { } ) ,
612
+ "Bytes" => py_class!( ctx, "Bytes" , ast_base. clone( ) , { } ) ,
613
+ "Call" => py_class!( ctx, "Call" , ast_base. clone( ) , { } ) ,
614
+ "ClassDef" => py_class!( ctx, "ClassDef" , ast_base. clone( ) , { } ) ,
615
+ "Compare" => py_class!( ctx, "Compare" , ast_base. clone( ) , { } ) ,
616
+ "comprehension" => py_class!( ctx, "comprehension" , ast_base. clone( ) , { } ) ,
617
+ "Continue" => py_class!( ctx, "Continue" , ast_base. clone( ) , { } ) ,
618
+ "Delete" => py_class!( ctx, "Delete" , ast_base. clone( ) , { } ) ,
619
+ "Dict" => py_class!( ctx, "Dict" , ast_base. clone( ) , { } ) ,
620
+ "DictComp" => py_class!( ctx, "DictComp" , ast_base. clone( ) , { } ) ,
621
+ "Ellipsis" => py_class!( ctx, "Ellipsis" , ast_base. clone( ) , { } ) ,
622
+ "Expr" => py_class!( ctx, "Expr" , ast_base. clone( ) , { } ) ,
623
+ "ExceptHandler" => py_class!( ctx, "ExceptHandler" , ast_base. clone( ) , { } ) ,
624
+ "For" => py_class!( ctx, "For" , ast_base. clone( ) , { } ) ,
625
+ "FormattedValue" => py_class!( ctx, "FormattedValue" , ast_base. clone( ) , { } ) ,
626
+ "FunctionDef" => py_class!( ctx, "FunctionDef" , ast_base. clone( ) , { } ) ,
627
+ "GeneratorExp" => py_class!( ctx, "GeneratorExp" , ast_base. clone( ) , { } ) ,
628
+ "Global" => py_class!( ctx, "Global" , ast_base. clone( ) , { } ) ,
629
+ "If" => py_class!( ctx, "If" , ast_base. clone( ) , { } ) ,
630
+ "IfExp" => py_class!( ctx, "IfExp" , ast_base. clone( ) , { } ) ,
631
+ "Import" => py_class!( ctx, "Import" , ast_base. clone( ) , { } ) ,
632
+ "ImportFrom" => py_class!( ctx, "ImportFrom" , ast_base. clone( ) , { } ) ,
633
+ "JoinedStr" => py_class!( ctx, "JoinedStr" , ast_base. clone( ) , { } ) ,
634
+ "keyword" => py_class!( ctx, "keyword" , ast_base. clone( ) , { } ) ,
635
+ "Lambda" => py_class!( ctx, "Lambda" , ast_base. clone( ) , { } ) ,
636
+ "List" => py_class!( ctx, "List" , ast_base. clone( ) , { } ) ,
637
+ "ListComp" => py_class!( ctx, "ListComp" , ast_base. clone( ) , { } ) ,
638
+ "Module" => py_class!( ctx, "Module" , ast_base. clone( ) , { } ) ,
639
+ "Name" => py_class!( ctx, "Name" , ast_base. clone( ) , { } ) ,
640
+ "NameConstant" => py_class!( ctx, "NameConstant" , ast_base. clone( ) , { } ) ,
641
+ "Nonlocal" => py_class!( ctx, "Nonlocal" , ast_base. clone( ) , { } ) ,
642
+ "Num" => py_class!( ctx, "Num" , ast_base. clone( ) , { } ) ,
643
+ "Pass" => py_class!( ctx, "Pass" , ast_base. clone( ) , { } ) ,
644
+ "Raise" => py_class!( ctx, "Raise" , ast_base. clone( ) , { } ) ,
645
+ "Return" => py_class!( ctx, "Return" , ast_base. clone( ) , { } ) ,
646
+ "Set" => py_class!( ctx, "Set" , ast_base. clone( ) , { } ) ,
647
+ "SetComp" => py_class!( ctx, "SetComp" , ast_base. clone( ) , { } ) ,
648
+ "Starred" => py_class!( ctx, "Starred" , ast_base. clone( ) , { } ) ,
649
+ "Starred" => py_class!( ctx, "Starred" , ast_base. clone( ) , { } ) ,
650
+ "Str" => py_class!( ctx, "Str" , ast_base. clone( ) , { } ) ,
651
+ "Subscript" => py_class!( ctx, "Subscript" , ast_base. clone( ) , { } ) ,
652
+ "Try" => py_class!( ctx, "Try" , ast_base. clone( ) , { } ) ,
653
+ "Tuple" => py_class!( ctx, "Tuple" , ast_base. clone( ) , { } ) ,
654
+ "UnaryOp" => py_class!( ctx, "UnaryOp" , ast_base. clone( ) , { } ) ,
655
+ "While" => py_class!( ctx, "While" , ast_base. clone( ) , { } ) ,
656
+ "With" => py_class!( ctx, "With" , ast_base. clone( ) , { } ) ,
657
+ "withitem" => py_class!( ctx, "withitem" , ast_base. clone( ) , { } ) ,
658
+ "Yield" => py_class!( ctx, "Yield" , ast_base. clone( ) , { } ) ,
659
+ "YieldFrom" => py_class!( ctx, "YieldFrom" , ast_base. clone( ) , { } ) ,
660
660
} )
661
661
}
0 commit comments