mirror of
https://github.com/RustPython/RustPython.git
synced 2026-10-28 18:59:04 +08:00
Update Python.asdl from CPython 3.11.1
This commit is contained in:
1 parent
e0a294849a
commit
3ebf23e39b
3 files changed
+87
No files matched your search
@@ -40,6 +40,7 @@ module Python
|
||||
|
||||
| Raise(expr? exc, expr? cause)
|
||||
| Try(stmt* body, excepthandler* handlers, stmt* orelse, stmt* finalbody)
|
||||
| TryStar(stmt* body, excepthandler* handlers, stmt* orelse, stmt* finalbody)
|
||||
| Assert(expr test, expr? msg)
|
||||
|
||||
| Import(alias* names)
|
||||
|
||||
@@ -139,6 +139,12 @@ pub enum StmtKind<U = ()> {
|
||||
orelse: Vec<Stmt<U>>,
|
||||
finalbody: Vec<Stmt<U>>,
|
||||
},
|
||||
TryStar {
|
||||
body: Vec<Stmt<U>>,
|
||||
handlers: Vec<Excepthandler<U>>,
|
||||
orelse: Vec<Stmt<U>>,
|
||||
finalbody: Vec<Stmt<U>>,
|
||||
},
|
||||
Assert {
|
||||
test: Box<Expr<U>>,
|
||||
msg: Option<Box<Expr<U>>>,
|
||||
@@ -726,6 +732,17 @@ pub mod fold {
|
||||
orelse: Foldable::fold(orelse, folder)?,
|
||||
finalbody: Foldable::fold(finalbody, folder)?,
|
||||
}),
|
||||
StmtKind::TryStar {
|
||||
body,
|
||||
handlers,
|
||||
orelse,
|
||||
finalbody,
|
||||
} => Ok(StmtKind::TryStar {
|
||||
body: Foldable::fold(body, folder)?,
|
||||
handlers: Foldable::fold(handlers, folder)?,
|
||||
orelse: Foldable::fold(orelse, folder)?,
|
||||
finalbody: Foldable::fold(finalbody, folder)?,
|
||||
}),
|
||||
StmtKind::Assert { test, msg } => Ok(StmtKind::Assert {
|
||||
test: Foldable::fold(test, folder)?,
|
||||
msg: Foldable::fold(msg, folder)?,
|
||||
|
||||
Generated
+69
@@ -538,6 +538,34 @@ impl NodeTry {
|
||||
);
|
||||
}
|
||||
}
|
||||
#[pyclass(module = "_ast", name = "TryStar", base = "NodeKindStmt")]
|
||||
struct NodeTryStar;
|
||||
#[pyclass(flags(HAS_DICT, BASETYPE))]
|
||||
impl NodeTryStar {
|
||||
#[extend_class]
|
||||
fn extend_class_with_fields(ctx: &Context, class: &'static Py<PyType>) {
|
||||
class.set_attr(
|
||||
identifier!(ctx, _fields),
|
||||
ctx.new_tuple(vec![
|
||||
ctx.new_str(ascii!("body")).into(),
|
||||
ctx.new_str(ascii!("handlers")).into(),
|
||||
ctx.new_str(ascii!("orelse")).into(),
|
||||
ctx.new_str(ascii!("finalbody")).into(),
|
||||
])
|
||||
.into(),
|
||||
);
|
||||
class.set_attr(
|
||||
identifier!(ctx, _attributes),
|
||||
ctx.new_list(vec![
|
||||
ctx.new_str(ascii!("lineno")).into(),
|
||||
ctx.new_str(ascii!("col_offset")).into(),
|
||||
ctx.new_str(ascii!("end_lineno")).into(),
|
||||
ctx.new_str(ascii!("end_col_offset")).into(),
|
||||
])
|
||||
.into(),
|
||||
);
|
||||
}
|
||||
}
|
||||
#[pyclass(module = "_ast", name = "Assert", base = "NodeKindStmt")]
|
||||
struct NodeAssert;
|
||||
#[pyclass(flags(HAS_DICT, BASETYPE))]
|
||||
@@ -2635,6 +2663,30 @@ impl Node for ast::StmtKind {
|
||||
.unwrap();
|
||||
_node.into()
|
||||
}
|
||||
ast::StmtKind::TryStar {
|
||||
body,
|
||||
handlers,
|
||||
orelse,
|
||||
finalbody,
|
||||
} => {
|
||||
let _node = AstNode
|
||||
.into_ref_with_type(_vm, NodeTryStar::static_type().to_owned())
|
||||
.unwrap();
|
||||
let _dict = _node.as_object().dict().unwrap();
|
||||
_dict
|
||||
.set_item("body", body.ast_to_object(_vm), _vm)
|
||||
.unwrap();
|
||||
_dict
|
||||
.set_item("handlers", handlers.ast_to_object(_vm), _vm)
|
||||
.unwrap();
|
||||
_dict
|
||||
.set_item("orelse", orelse.ast_to_object(_vm), _vm)
|
||||
.unwrap();
|
||||
_dict
|
||||
.set_item("finalbody", finalbody.ast_to_object(_vm), _vm)
|
||||
.unwrap();
|
||||
_node.into()
|
||||
}
|
||||
ast::StmtKind::Assert { test, msg } => {
|
||||
let _node = AstNode
|
||||
.into_ref_with_type(_vm, NodeAssert::static_type().to_owned())
|
||||
@@ -2928,6 +2980,22 @@ impl Node for ast::StmtKind {
|
||||
get_node_field(_vm, &_object, "finalbody", "stmt")?,
|
||||
)?,
|
||||
}
|
||||
} else if _cls.is(NodeTryStar::static_type()) {
|
||||
ast::StmtKind::TryStar {
|
||||
body: Node::ast_from_object(_vm, get_node_field(_vm, &_object, "body", "stmt")?)?,
|
||||
handlers: Node::ast_from_object(
|
||||
_vm,
|
||||
get_node_field(_vm, &_object, "handlers", "stmt")?,
|
||||
)?,
|
||||
orelse: Node::ast_from_object(
|
||||
_vm,
|
||||
get_node_field(_vm, &_object, "orelse", "stmt")?,
|
||||
)?,
|
||||
finalbody: Node::ast_from_object(
|
||||
_vm,
|
||||
get_node_field(_vm, &_object, "finalbody", "stmt")?,
|
||||
)?,
|
||||
}
|
||||
} else if _cls.is(NodeAssert::static_type()) {
|
||||
ast::StmtKind::Assert {
|
||||
test: Node::ast_from_object(_vm, get_node_field(_vm, &_object, "test", "stmt")?)?,
|
||||
@@ -4492,6 +4560,7 @@ pub fn extend_module_nodes(vm: &VirtualMachine, module: &PyObject) {
|
||||
"Match" => NodeMatch::make_class(&vm.ctx),
|
||||
"Raise" => NodeRaise::make_class(&vm.ctx),
|
||||
"Try" => NodeTry::make_class(&vm.ctx),
|
||||
"TryStar" => NodeTryStar::make_class(&vm.ctx),
|
||||
"Assert" => NodeAssert::make_class(&vm.ctx),
|
||||
"Import" => NodeImport::make_class(&vm.ctx),
|
||||
"ImportFrom" => NodeImportFrom::make_class(&vm.ctx),
|
||||
|
||||
Reference in new issue
Block a user