From 6da6a082c7219960bc5a056daf8d422d8201c897 Mon Sep 17 00:00:00 2001 From: Nick Treleaven Date: Sat, 28 Nov 2020 21:39:45 +0000 Subject: [PATCH] parser: fix showing error position for pratt.v (#6997) --- vlib/v/parser/pratt.v | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/vlib/v/parser/pratt.v b/vlib/v/parser/pratt.v index ef832dc1db..9408570a68 100644 --- a/vlib/v/parser/pratt.v +++ b/vlib/v/parser/pratt.v @@ -52,7 +52,7 @@ pub fn (mut p Parser) expr(precedence int) ast.Expr { match p.peek_tok.kind { .name { return p.vweb() } .key_if { return p.if_expr(true) } - else { p.error('unexpected $') } + else { p.error_with_pos('unexpected `$`', p.peek_tok.position()) } } } .chartoken { @@ -191,10 +191,11 @@ pub fn (mut p Parser) expr(precedence int) ast.Expr { node = p.struct_init(true) // short_syntax: true } else if p.tok.kind == .name { p.next() - lit := if p.tok.lit != '' { p.tok.lit } else { p.tok.kind.str() } - p.error('unexpected `$lit`, expecting `:`') + s := if p.tok.lit != '' { '`$p.tok.lit`' } else { p.tok.kind.str() } + p.error_with_pos('unexpected $s, expecting `:`', p.tok.position()) } else { - p.error('unexpected `$p.tok.lit`, expecting struct key') + p.error_with_pos('unexpected `$p.tok.lit`, expecting struct key', + p.tok.position()) } } p.check(.rcbr) @@ -230,7 +231,8 @@ pub fn (mut p Parser) expr(precedence int) ast.Expr { } } else { - p.error('expr(): bad token `$p.tok.kind.str()`') + p.error_with_pos('invalid expression: unexpected $p.tok.kind.str() token', + p.tok.position()) } } return p.expr_with_left(node, precedence, is_stmt_ident)