about summary refs log tree commit diff
path: root/src/parse/ast/statement.rs
diff options
context:
space:
mode:
authorMel <einebeere@gmail.com>2021-10-23 22:01:52 +0200
committerMel <einebeere@gmail.com>2021-10-23 22:01:52 +0200
commit8a6eb35a900081967db16d313ab7ed470de6570f (patch)
treed58dd702d8a742c7554545bc4e291480649e3663 /src/parse/ast/statement.rs
parentda14afd74e1659af6ce4553360ac5dd0ce933db8 (diff)
downloadrabbithole-8a6eb35a900081967db16d313ab7ed470de6570f.tar.zst
rabbithole-8a6eb35a900081967db16d313ab7ed470de6570f.zip
Loop expressions and concrete walker errors.
Diffstat (limited to 'src/parse/ast/statement.rs')
-rw-r--r--src/parse/ast/statement.rs13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/parse/ast/statement.rs b/src/parse/ast/statement.rs
index b0e626d..99ee0e0 100644
--- a/src/parse/ast/statement.rs
+++ b/src/parse/ast/statement.rs
@@ -6,6 +6,8 @@ use super::expression::Expression;
 pub enum Statement {
     Expression(Expression),
     Print(Expression),
+    Break(Option<Expression>),
+    Continue,
     Return(Expression),
 }
 
@@ -32,6 +34,17 @@ impl Statement {
                 writeln!(f, "{}Return:", pad)?;
                 expression.nested_fmt(f, depth + 1)?;
             }
+            Statement::Break(expression) => {
+                if let Some(returned_on_break) = expression {
+                    writeln!(f, "{}Break:", pad)?;
+                    returned_on_break.nested_fmt(f, depth + 1)?;
+                } else {
+                    writeln!(f, "{}Break", pad)?;
+                }
+            }
+            Statement::Continue => {
+                writeln!(f, "{}Continue", pad)?;
+            }
         }
 
         Ok(())