diff --git a/ast/asdl_rs.py b/ast/asdl_rs.py index ebedbe3ba8..a6f4f86301 100755 --- a/ast/asdl_rs.py +++ b/ast/asdl_rs.py @@ -24,6 +24,10 @@ builtin_type_mapping = { } assert builtin_type_mapping.keys() == asdl.builtin_types +builtin_int_mapping = { + "simple": "bool", + "is_async": "bool", +} def rust_type_name(name): """Return a string for the C name of the type. @@ -31,7 +35,8 @@ def rust_type_name(name): This function special cases the default types provided by asdl. """ if name in asdl.builtin_types: - return builtin_type_mapping[name] + builtin = builtin_type_mapping[name] + return builtin elif name.islower(): return "".join(part.capitalize() for part in name.split("_")) else: @@ -355,6 +360,8 @@ class StructVisitor(EmitVisitor): typ = f"Option<{typ}>" if field.seq: typ = f"Vec<{typ}>" + if typ == "Int": + typ = builtin_int_mapping.get(field.name, typ) name = rust_field(field.name) self.emit(f"{vis}{name}: {typ},", depth) diff --git a/ast/src/gen/generic.rs b/ast/src/gen/generic.rs index 2da002757f..908d317027 100644 --- a/ast/src/gen/generic.rs +++ b/ast/src/gen/generic.rs @@ -154,7 +154,7 @@ pub struct StmtAnnAssign { pub target: Box>, pub annotation: Box>, pub value: Option>>, - pub simple: Int, + pub simple: bool, } impl From> for StmtKind { @@ -815,7 +815,7 @@ pub struct Comprehension { pub target: Expr, pub iter: Expr, pub ifs: Vec>, - pub is_async: Int, + pub is_async: bool, } #[derive(Clone, Debug, PartialEq)] diff --git a/ast/src/unparse.rs b/ast/src/unparse.rs index 799227c151..6ce567aa86 100644 --- a/ast/src/unparse.rs +++ b/ast/src/unparse.rs @@ -429,7 +429,7 @@ impl<'a> Unparser<'a> { fn unparse_comp(&mut self, generators: &[Comprehension]) -> fmt::Result { for comp in generators { - self.p(if comp.is_async.to_bool() { + self.p(if comp.is_async { " async for " } else { " for " diff --git a/parser/src/python.lalrpop b/parser/src/python.lalrpop index ba81a8f0ac..2714d2122f 100644 --- a/parser/src/python.lalrpop +++ b/parser/src/python.lalrpop @@ -132,7 +132,7 @@ ExpressionStatement: ast::Stmt = { target: Box::new(set_context(target, ast::ExprContext::Store)), annotation: Box::new(annotation), value: rhs.map(Box::new), - simple: ast::Int::new_bool(simple), + simple, }.into(), ) }, @@ -1707,7 +1707,7 @@ SingleForComprehension: ast::Comprehension = { target: set_context(target, ast::ExprContext::Store), iter, ifs, - is_async: ast::Int::new_bool(is_async), + is_async, } } }; diff --git a/parser/src/python.rs b/parser/src/python.rs index a63d7bab84..adcc96de69 100644 --- a/parser/src/python.rs +++ b/parser/src/python.rs @@ -1,5 +1,5 @@ // auto-generated: "lalrpop 0.20.0" -// sha3: 92f216faaf9f12c4ae180e3d5821a88e6bfa435ffe36293d4485c669f055b18e +// sha3: 7764ff3f82c4bfb364f8e2c55698c0cf314d591d7aeacd8abf4c9dfe354d25e2 use crate::{ ast, lexer::{LexicalError, LexicalErrorType}, @@ -36926,7 +36926,7 @@ fn __action24< target: Box::new(set_context(target, ast::ExprContext::Store)), annotation: Box::new(annotation), value: rhs.map(Box::new), - simple: ast::Int::new_bool(simple), + simple, }.into(), ) } @@ -39647,7 +39647,7 @@ fn __action206< target: set_context(target, ast::ExprContext::Store), iter, ifs, - is_async: ast::Int::new_bool(is_async), + is_async, } } } diff --git a/parser/src/snapshots/rustpython_parser__context__tests__ann_assign_name.snap b/parser/src/snapshots/rustpython_parser__context__tests__ann_assign_name.snap index 8665db27a2..62d03f71bb 100644 --- a/parser/src/snapshots/rustpython_parser__context__tests__ann_assign_name.snap +++ b/parser/src/snapshots/rustpython_parser__context__tests__ann_assign_name.snap @@ -46,9 +46,7 @@ expression: parse_ast ), }, ), - simple: Int( - 1, - ), + simple: true, }, ), }, diff --git a/parser/src/snapshots/rustpython_parser__context__tests__assign_list_comp.snap b/parser/src/snapshots/rustpython_parser__context__tests__assign_list_comp.snap index e306bbd307..9748204d4f 100644 --- a/parser/src/snapshots/rustpython_parser__context__tests__assign_list_comp.snap +++ b/parser/src/snapshots/rustpython_parser__context__tests__assign_list_comp.snap @@ -101,9 +101,7 @@ expression: parse_ast ), }, ifs: [], - is_async: Int( - 0, - ), + is_async: false, }, ], }, diff --git a/parser/src/snapshots/rustpython_parser__context__tests__assign_set_comp.snap b/parser/src/snapshots/rustpython_parser__context__tests__assign_set_comp.snap index 5c754b24cb..8c20e8d6ce 100644 --- a/parser/src/snapshots/rustpython_parser__context__tests__assign_set_comp.snap +++ b/parser/src/snapshots/rustpython_parser__context__tests__assign_set_comp.snap @@ -101,9 +101,7 @@ expression: parse_ast ), }, ifs: [], - is_async: Int( - 0, - ), + is_async: false, }, ], }, diff --git a/parser/src/snapshots/rustpython_parser__parser__tests__generator_expression_argument.snap b/parser/src/snapshots/rustpython_parser__parser__tests__generator_expression_argument.snap index ea04d4b8aa..4cc59786c5 100644 --- a/parser/src/snapshots/rustpython_parser__parser__tests__generator_expression_argument.snap +++ b/parser/src/snapshots/rustpython_parser__parser__tests__generator_expression_argument.snap @@ -201,9 +201,7 @@ Attributed { ), }, ifs: [], - is_async: Int( - 0, - ), + is_async: false, }, ], }, diff --git a/parser/src/snapshots/rustpython_parser__parser__tests__parse_dict_comprehension.snap b/parser/src/snapshots/rustpython_parser__parser__tests__parse_dict_comprehension.snap index 880e2a2a97..29dbce0088 100644 --- a/parser/src/snapshots/rustpython_parser__parser__tests__parse_dict_comprehension.snap +++ b/parser/src/snapshots/rustpython_parser__parser__tests__parse_dict_comprehension.snap @@ -58,9 +58,7 @@ Attributed { ), }, ifs: [], - is_async: Int( - 0, - ), + is_async: false, }, ], }, diff --git a/parser/src/snapshots/rustpython_parser__parser__tests__parse_double_list_comprehension.snap b/parser/src/snapshots/rustpython_parser__parser__tests__parse_double_list_comprehension.snap index 5800311ff1..7e924f96ee 100644 --- a/parser/src/snapshots/rustpython_parser__parser__tests__parse_double_list_comprehension.snap +++ b/parser/src/snapshots/rustpython_parser__parser__tests__parse_double_list_comprehension.snap @@ -69,9 +69,7 @@ Attributed { ), }, ifs: [], - is_async: Int( - 0, - ), + is_async: false, }, Comprehension { target: Attributed { @@ -174,9 +172,7 @@ Attributed { ), }, ], - is_async: Int( - 0, - ), + is_async: false, }, ], }, diff --git a/parser/src/snapshots/rustpython_parser__parser__tests__parse_generator_comprehension.snap b/parser/src/snapshots/rustpython_parser__parser__tests__parse_generator_comprehension.snap index 0523f2b6ae..e1bfe1c4ca 100644 --- a/parser/src/snapshots/rustpython_parser__parser__tests__parse_generator_comprehension.snap +++ b/parser/src/snapshots/rustpython_parser__parser__tests__parse_generator_comprehension.snap @@ -46,9 +46,7 @@ Attributed { ), }, ifs: [], - is_async: Int( - 0, - ), + is_async: false, }, ], }, diff --git a/parser/src/snapshots/rustpython_parser__parser__tests__parse_if_else_generator_comprehension.snap b/parser/src/snapshots/rustpython_parser__parser__tests__parse_if_else_generator_comprehension.snap index 6bc55047e4..16e578dff1 100644 --- a/parser/src/snapshots/rustpython_parser__parser__tests__parse_if_else_generator_comprehension.snap +++ b/parser/src/snapshots/rustpython_parser__parser__tests__parse_if_else_generator_comprehension.snap @@ -78,9 +78,7 @@ Attributed { ), }, ifs: [], - is_async: Int( - 0, - ), + is_async: false, }, ], }, diff --git a/parser/src/snapshots/rustpython_parser__parser__tests__parse_list_comprehension.snap b/parser/src/snapshots/rustpython_parser__parser__tests__parse_list_comprehension.snap index ec9222f09a..ba05d3dec7 100644 --- a/parser/src/snapshots/rustpython_parser__parser__tests__parse_list_comprehension.snap +++ b/parser/src/snapshots/rustpython_parser__parser__tests__parse_list_comprehension.snap @@ -46,9 +46,7 @@ Attributed { ), }, ifs: [], - is_async: Int( - 0, - ), + is_async: false, }, ], }, diff --git a/parser/src/snapshots/rustpython_parser__parser__tests__parse_named_expression_generator_comprehension.snap b/parser/src/snapshots/rustpython_parser__parser__tests__parse_named_expression_generator_comprehension.snap index ea24d4e9b1..1b6cadd0cf 100644 --- a/parser/src/snapshots/rustpython_parser__parser__tests__parse_named_expression_generator_comprehension.snap +++ b/parser/src/snapshots/rustpython_parser__parser__tests__parse_named_expression_generator_comprehension.snap @@ -87,9 +87,7 @@ Attributed { ), }, ifs: [], - is_async: Int( - 0, - ), + is_async: false, }, ], },