summaryrefslogtreecommitdiff
path: root/src/syntax/pretty.rs
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2022-01-28 21:01:05 +0100
committerLaurenz <laurmaedje@gmail.com>2022-01-28 21:01:36 +0100
commit9c906f92c50d453822b12896d29b7883802ea567 (patch)
tree78e2465a4fa805bbddc80407b7eea585b5ebb60c /src/syntax/pretty.rs
parent3a07603b66fab6b343b34156f4a3a6015e2d69e1 (diff)
Parse `break`, `continue` and `return` expression
Diffstat (limited to 'src/syntax/pretty.rs')
-rw-r--r--src/syntax/pretty.rs29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/syntax/pretty.rs b/src/syntax/pretty.rs
index f8285f0c..e8110262 100644
--- a/src/syntax/pretty.rs
+++ b/src/syntax/pretty.rs
@@ -234,6 +234,9 @@ impl Pretty for Expr {
Self::For(v) => v.pretty(p),
Self::Import(v) => v.pretty(p),
Self::Include(v) => v.pretty(p),
+ Self::Break(v) => v.pretty(p),
+ Self::Continue(v) => v.pretty(p),
+ Self::Return(v) => v.pretty(p),
}
}
}
@@ -547,6 +550,28 @@ impl Pretty for IncludeExpr {
}
}
+impl Pretty for BreakExpr {
+ fn pretty(&self, p: &mut Printer) {
+ p.push_str("break");
+ }
+}
+
+impl Pretty for ContinueExpr {
+ fn pretty(&self, p: &mut Printer) {
+ p.push_str("continue");
+ }
+}
+
+impl Pretty for ReturnExpr {
+ fn pretty(&self, p: &mut Printer) {
+ p.push_str("return");
+ if let Some(body) = self.body() {
+ p.push(' ');
+ body.pretty(p);
+ }
+ }
+}
+
impl Pretty for Ident {
fn pretty(&self, p: &mut Printer) {
p.push_str(self);
@@ -681,5 +706,9 @@ mod tests {
roundtrip("#for k, x in y {z}");
roundtrip("#import * from \"file.typ\"");
roundtrip("#include \"chapter1.typ\"");
+ roundtrip("{break}");
+ roundtrip("{continue}");
+ roundtrip("{return}");
+ roundtrip("{return x + 1}");
}
}