From 712fd384ee57d77eddce1acfaaf3c18f1e438039 Mon Sep 17 00:00:00 2001 From: Alexander Medvednikov Date: Tue, 12 May 2020 00:26:39 +0200 Subject: [PATCH] parser: fix eval not used in match --- vlib/v/parser/if.v | 2 ++ vlib/v/parser/parser.v | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/vlib/v/parser/if.v b/vlib/v/parser/if.v index 236de1fdca..73c51778ab 100644 --- a/vlib/v/parser/if.v +++ b/vlib/v/parser/if.v @@ -166,7 +166,9 @@ fn (mut p Parser) match_expr() ast.MatchExpr { } branch_last_pos := p.tok.position() // p.warn('match block') + p.inside_match_body = true stmts := p.parse_block() + p.inside_match_body = false pos := token.Position{ line_nr: branch_first_pos.line_nr pos: branch_first_pos.pos diff --git a/vlib/v/parser/parser.v b/vlib/v/parser/parser.v index 09c24e88f6..535bbba86c 100644 --- a/vlib/v/parser/parser.v +++ b/vlib/v/parser/parser.v @@ -44,6 +44,7 @@ mut: returns bool inside_match bool // to separate `match A { }` from `Struct{}` inside_match_case bool // to separate `match_expr { }` from `Struct{}` + inside_match_body bool // to fix eval not used TODO inside_unsafe bool is_stmt_ident bool // true while the beginning of a statement is an ident/selector expecting_type bool // `is Type`, expecting type @@ -485,7 +486,7 @@ pub fn (mut p Parser) stmt() ast.Stmt { } } else if p.tok.kind == .name && p.peek_tok.kind == .name { p.error_with_pos('unexpected name `$p.peek_tok.lit`', p.peek_tok.position()) - } else if p.tok.kind == .name && !p.inside_if_expr && !p.inside_match && !p.inside_or_expr && + } else if p.tok.kind == .name && !p.inside_if_expr && !p.inside_match_body && !p.inside_or_expr && p.peek_tok.kind in [.rcbr, .eof] { p.error_with_pos('`$p.tok.lit` evaluated but not used', p.tok.position()) }