Skip to content

Commit 6789f14

Browse files
authored
fix: ifs without else at the end of comprehensions were not unparsed correctly (#6)
1 parent 984e93a commit 6789f14

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

src/unparser.rs

+10-1
Original file line numberDiff line numberDiff line change
@@ -1152,7 +1152,16 @@ impl Unparser {
11521152
self.write_str(" in ");
11531153
self.unparse_expr(&node.iter);
11541154
for if_ in &node.ifs {
1155-
self.unparse_expr(if_);
1155+
self.write_str(" ");
1156+
match if_ {
1157+
Expr::Name(name) => {
1158+
self.write_str("if ");
1159+
self.write_str(&name.id);
1160+
}
1161+
_ => {
1162+
self.unparse_expr(if_);
1163+
}
1164+
}
11561165
}
11571166
}
11581167

test_files/simple_comprehensions.py

+6
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,9 @@
55
set_ = {def_ for def_ in random.choices(string.ascii_letters)}
66
dict_ = {k: v for k, v in enumerate(random.choices(string.ascii_letters))}
77
list_ = [value for value in random.choices(string.ascii_letters)]
8+
9+
10+
with_outer_if = (value for value in random.choices(string.ascii_letters) if value)
11+
with_inner_if_else = (
12+
value if value else "missing!" for value in random.choices(string.ascii_letters)
13+
)

0 commit comments

Comments
 (0)