diff --git a/fine/src/parser/concrete.rs b/fine/src/parser/concrete.rs index 4af5069b..7e857af1 100644 --- a/fine/src/parser/concrete.rs +++ b/fine/src/parser/concrete.rs @@ -422,9 +422,7 @@ fn statement_let(p: &mut CParser) { p.expect(TokenKind::Identifier, "expected a name for the variable"); p.expect(TokenKind::Equal, "expected a '=' after the variable name"); expression(p); - if !p.at(TokenKind::RightBrace) { - p.expect(TokenKind::Semicolon, "expect ';' to end a let statement"); - } + p.expect(TokenKind::Semicolon, "expect ';' to end a let statement"); p.end(m, TreeKind::LetStatement); } @@ -438,9 +436,7 @@ fn statement_return(p: &mut CParser) { "expect 'return' to start a return statement", ); expression(p); - if !p.at(TokenKind::RightBrace) { - p.expect(TokenKind::Semicolon, "expect ';' to end a return statement"); - } + p.expect(TokenKind::Semicolon, "expect ';' to end a return statement"); p.end(m, TreeKind::ReturnStatement); } @@ -449,12 +445,10 @@ fn statement_expression(p: &mut CParser) { let m = p.start(); expression(p); - if !p.at(TokenKind::RightBrace) { - p.expect( - TokenKind::Semicolon, - "expect ';' to end an expression statement", - ); - } + p.expect( + TokenKind::Semicolon, + "expect ';' to end an expression statement", + ); p.end(m, TreeKind::ExpressionStatement); } diff --git a/fine/tests/example_tests.rs b/fine/tests/example_tests.rs index 680ab3d5..e07a84d7 100644 --- a/fine/tests/example_tests.rs +++ b/fine/tests/example_tests.rs @@ -2,13 +2,13 @@ use fine::parser::concrete::Tree; use pretty_assertions::assert_eq; fn rebase_concrete(source_path: &str, dump: &str) { + // RE-BASE let contents = std::fs::read_to_string(source_path) .expect(&format!("unable to read input file {}", source_path)); let mut result = String::new(); let mut lines = contents.lines(); - // Search for the "concrete:" section. let mut found_concrete_section = false; while let Some(line) = lines.next() { result.push_str(line); @@ -26,8 +26,6 @@ fn rebase_concrete(source_path: &str, dump: &str) { ); } - // We've found the section we care about, replace all the lines we care - // about with the actual lines. let mut replaced_output = false; while let Some(line) = lines.next() { if line.starts_with("// | ") { diff --git a/fine/tests/expression/conditional.fine b/fine/tests/expression/conditional.fine deleted file mode 100644 index a3224eb1..00000000 --- a/fine/tests/expression/conditional.fine +++ /dev/null @@ -1,26 +0,0 @@ -// concrete: -// | File -// | IfStatement -// | ConditionalExpression -// | If:'"if"' -// | LiteralExpression -// | True:'"true"' -// | Block -// | LeftBrace:'"{"' -// | ExpressionStatement -// | LiteralExpression -// | String:'"\"discarded\""' -// | Semicolon:'";"' -// | ExpressionStatement -// | LiteralExpression -// | Number:'"23"' -// | RightBrace:'"}"' -// | Else:'"else"' -// | Block -// | LeftBrace:'"{"' -// | ExpressionStatement -// | LiteralExpression -// | Number:'"45"' -// | RightBrace:'"}"' -// -if true { "discarded"; 23 } else { 45 }