# HG changeset patch # User Emmanuel Gil Peyrot # Date 1465694877 -3600 # Node ID 32c78b275d5a382cdc0cfb22fcfae1f0cd3cf34c # Parent ad2453a55820a1f00f3644906bacf406ce04c797 Implement comprehension’s to_string. diff --git a/src/ast_dump.rs b/src/ast_dump.rs --- a/src/ast_dump.rs +++ b/src/ast_dump.rs @@ -97,15 +97,15 @@ fn if_else_statements_to_string(indent: } } -fn generators_to_string(generators: Vec) -> String { - let mut result = vec!(); - for generator in generators { - result.push(format!("for {} in {}", generator.target.to_string(), generator.iter.to_string())); - for if_ in generator.ifs { +impl to_string_able for comprehension { + fn to_string(&self) -> String { + let mut result = vec!(); + result.push(format!("for {} in {}", self.target.to_string(), self.iter.to_string())); + for if_ in self.ifs.clone() { result.push(format!("if {}", if_.to_string())) } + result.join(" ") } - result.join(" ") } impl to_string_able for expr { @@ -155,8 +155,8 @@ impl to_string_able for expr { expr::Attribute(value, attr, ctx) => format!("{}.{}", value.to_string(), attr), expr::Name(name, ctx) => format!("{}", name), expr::List(elts, ctx) => format!("[{}]", vec_to_strings_vec(elts).join(", ")), - expr::ListComp(elt, generators) => format!("[{} {}]", elt.to_string(), generators_to_string(generators)), - expr::DictComp(key, value, generators) => format!("{{{}: {} {}}}", key.to_string(), value.to_string(), generators_to_string(generators)), + expr::ListComp(elt, generators) => format!("[{} {}]", elt.to_string(), vec_to_strings_vec(generators).join(" ")), + expr::DictComp(key, value, generators) => format!("{{{}: {} {}}}", key.to_string(), value.to_string(), vec_to_strings_vec(generators).join(" ")), expr::Tuple(elts, ctx) => format!("({})", vec_to_strings_vec(elts).join(", ")), expr::Ellipsis => format!("..."), }