From ce8138c68557a2d158424a8aa6056d73ff9cb1ba Mon Sep 17 00:00:00 2001 From: Laurenz Date: Wed, 27 Jan 2021 11:50:51 +0100 Subject: =?UTF-8?q?Scope=20variables=20in=20blocks=20=F0=9F=8F=94=EF=B8=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/parse/mod.rs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src/parse') diff --git a/src/parse/mod.rs b/src/parse/mod.rs index 8687ac24..ff75a563 100644 --- a/src/parse/mod.rs +++ b/src/parse/mod.rs @@ -52,7 +52,7 @@ fn node(p: &mut Parser, at_start: &mut bool) -> Option { // Code block. Token::LeftBrace => { - return Some(Node::Expr(block(p)?)); + return Some(Node::Expr(block(p, false)?)); } // Markup. @@ -285,7 +285,7 @@ fn primary(p: &mut Parser) -> Option { // Nested block. Some(Token::LeftBrace) => { - return block(p); + return block(p, true); } // Dictionary or just a parenthesized expression. @@ -340,7 +340,7 @@ fn template(p: &mut Parser) -> Expr { } /// Parse a block expression: `{...}`. -fn block(p: &mut Parser) -> Option { +fn block(p: &mut Parser, scopes: bool) -> Option { p.start_group(Group::Brace, TokenMode::Code); let mut exprs = vec![]; while !p.eof() { @@ -355,7 +355,7 @@ fn block(p: &mut Parser) -> Option { p.skip_white(); } p.end_group(); - Some(Expr::Block(ExprBlock { exprs })) + Some(Expr::Block(ExprBlock { exprs, scopes })) } /// Parse a parenthesized function call. @@ -469,7 +469,7 @@ fn ident(p: &mut Parser) -> Option { fn body(p: &mut Parser) -> Option { match p.peek() { Some(Token::LeftBracket) => Some(template(p)), - Some(Token::LeftBrace) => block(p), + Some(Token::LeftBrace) => block(p, true), _ => { p.expected_at("body", p.last_end()); None -- cgit v1.2.3