Fine-tune int types

This commit is contained in:
Jeong YunWon 2023-05-10 19:26:53 +09:00
parent 455bcc01a0
commit 6fa3d0f90a
15 changed files with 27 additions and 42 deletions

View file

@ -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)

View file

@ -154,7 +154,7 @@ pub struct StmtAnnAssign<U = ()> {
pub target: Box<Expr<U>>,
pub annotation: Box<Expr<U>>,
pub value: Option<Box<Expr<U>>>,
pub simple: Int,
pub simple: bool,
}
impl<U> From<StmtAnnAssign<U>> for StmtKind<U> {
@ -815,7 +815,7 @@ pub struct Comprehension<U = ()> {
pub target: Expr<U>,
pub iter: Expr<U>,
pub ifs: Vec<Expr<U>>,
pub is_async: Int,
pub is_async: bool,
}
#[derive(Clone, Debug, PartialEq)]

View file

@ -429,7 +429,7 @@ impl<'a> Unparser<'a> {
fn unparse_comp<U>(&mut self, generators: &[Comprehension<U>]) -> fmt::Result {
for comp in generators {
self.p(if comp.is_async.to_bool() {
self.p(if comp.is_async {
" async for "
} else {
" for "