Skip to content

Commit 8569145

Browse files
committed
Define classes for all the ast types.
1 parent 8a14665 commit 8569145

File tree

1 file changed

+48
-4
lines changed

1 file changed

+48
-4
lines changed

vm/src/stdlib/ast.rs

Lines changed: 48 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -458,10 +458,54 @@ pub fn make_module(vm: &VirtualMachine) -> PyObjectRef {
458458
let ast_base = py_class!(ctx, "_ast.AST", ctx.object(), {});
459459
py_module!(vm, "ast", {
460460
"parse" => ctx.new_rustfunc(ast_parse),
461-
"Module" => py_class!(ctx, "_ast.Module", ast_base.clone(), {}),
462-
"FunctionDef" => py_class!(ctx, "_ast.FunctionDef", ast_base.clone(), {}),
463-
"ClassDef" => py_class!(ctx, "_ast.ClassDef", ast_base.clone(), {}),
461+
"AST" => ast_base.clone(),
462+
// TODO: There's got to be a better way!
463+
"arg" => py_class!(ctx, "_ast.arg", ast_base.clone(), {}),
464+
"arguments" => py_class!(ctx, "_ast.arguments", ast_base.clone(), {}),
465+
"Assert" => py_class!(ctx, "_ast.Assert", ast_base.clone(), {}),
466+
"Attribute" => py_class!(ctx, "_ast.Attribute", ast_base.clone(), {}),
467+
"BinOp" => py_class!(ctx, "_ast.BinOp", ast_base.clone(), {}),
468+
"BoolOp" => py_class!(ctx, "_ast.BoolOp", ast_base.clone(), {}),
469+
"Break" => py_class!(ctx, "_ast.Break", ast_base.clone(), {}),
470+
"Bytes" => py_class!(ctx, "_ast.Bytes", ast_base.clone(), {}),
464471
"Call" => py_class!(ctx, "_ast.Call", ast_base.clone(), {}),
465-
"AST" => ast_base,
472+
"ClassDef" => py_class!(ctx, "_ast.ClassDef", ast_base.clone(), {}),
473+
"Compare" => py_class!(ctx, "_ast.Compare", ast_base.clone(), {}),
474+
"comprehension" => py_class!(ctx, "_ast.comprehension", ast_base.clone(), {}),
475+
"Continue" => py_class!(ctx, "_ast.Continue", ast_base.clone(), {}),
476+
"Delete" => py_class!(ctx, "_ast.Delete", ast_base.clone(), {}),
477+
"Dict" => py_class!(ctx, "_ast.Dict", ast_base.clone(), {}),
478+
"DictComp" => py_class!(ctx, "_ast.DictComp", ast_base.clone(), {}),
479+
"Ellipsis" => py_class!(ctx, "_ast.Ellipsis", ast_base.clone(), {}),
480+
"Expr" => py_class!(ctx, "_ast.Expr", ast_base.clone(), {}),
481+
"For" => py_class!(ctx, "_ast.For", ast_base.clone(), {}),
482+
"FormattedValue" => py_class!(ctx, "_ast.FormattedValue", ast_base.clone(), {}),
483+
"FunctionDef" => py_class!(ctx, "_ast.FunctionDef", ast_base.clone(), {}),
484+
"GeneratorExp" => py_class!(ctx, "_ast.GeneratorExp", ast_base.clone(), {}),
485+
"Identifier" => py_class!(ctx, "_ast.Identifier", ast_base.clone(), {}),
486+
"If" => py_class!(ctx, "_ast.If", ast_base.clone(), {}),
487+
"IfExp" => py_class!(ctx, "_ast.IfExp", ast_base.clone(), {}),
488+
"JoinedStr" => py_class!(ctx, "_ast.JoinedStr", ast_base.clone(), {}),
489+
"Lambda" => py_class!(ctx, "_ast.Lambda", ast_base.clone(), {}),
490+
"List" => py_class!(ctx, "_ast.List", ast_base.clone(), {}),
491+
"ListComp" => py_class!(ctx, "_ast.ListComp", ast_base.clone(), {}),
492+
"Module" => py_class!(ctx, "_ast.Module", ast_base.clone(), {}),
493+
"NameConstant" => py_class!(ctx, "_ast.NameConstant", ast_base.clone(), {}),
494+
"NameConstant" => py_class!(ctx, "_ast.NameConstant", ast_base.clone(), {}),
495+
"NameConstant" => py_class!(ctx, "_ast.NameConstant", ast_base.clone(), {}),
496+
"Num" => py_class!(ctx, "_ast.Num", ast_base.clone(), {}),
497+
"Pass" => py_class!(ctx, "_ast.Pass", ast_base.clone(), {}),
498+
"Return" => py_class!(ctx, "_ast.Return", ast_base.clone(), {}),
499+
"Set" => py_class!(ctx, "_ast.Set", ast_base.clone(), {}),
500+
"SetComp" => py_class!(ctx, "_ast.SetComp", ast_base.clone(), {}),
501+
"Starred" => py_class!(ctx, "_ast.Starred", ast_base.clone(), {}),
502+
"Starred" => py_class!(ctx, "_ast.Starred", ast_base.clone(), {}),
503+
"Str" => py_class!(ctx, "_ast.Str", ast_base.clone(), {}),
504+
"Subscript" => py_class!(ctx, "_ast.Subscript", ast_base.clone(), {}),
505+
"Tuple" => py_class!(ctx, "_ast.Tuple", ast_base.clone(), {}),
506+
"UnaryOp" => py_class!(ctx, "_ast.UnaryOp", ast_base.clone(), {}),
507+
"While" => py_class!(ctx, "_ast.While", ast_base.clone(), {}),
508+
"Yield" => py_class!(ctx, "_ast.Yield", ast_base.clone(), {}),
509+
"YieldFrom" => py_class!(ctx, "_ast.YieldFrom", ast_base.clone(), {}),
466510
})
467511
}

0 commit comments

Comments
 (0)