diff --git a/vlib/v/fmt/tests/cast_or_dump_arg_ending_with_comma_expected.vv b/vlib/v/fmt/tests/cast_or_dump_arg_ending_with_comma_expected.vv new file mode 100644 index 0000000000..f2d028140c --- /dev/null +++ b/vlib/v/fmt/tests/cast_or_dump_arg_ending_with_comma_expected.vv @@ -0,0 +1,4 @@ +fn main() { + println(u8(1)) + dump(1) +} diff --git a/vlib/v/fmt/tests/cast_or_dump_arg_ending_with_comma_input.vv b/vlib/v/fmt/tests/cast_or_dump_arg_ending_with_comma_input.vv new file mode 100644 index 0000000000..9af8c9dc68 --- /dev/null +++ b/vlib/v/fmt/tests/cast_or_dump_arg_ending_with_comma_input.vv @@ -0,0 +1,4 @@ +fn main() { + println(u8(1,),) + dump(1,) +} diff --git a/vlib/v/parser/expr.v b/vlib/v/parser/expr.v index 9d02331c91..2e5f5c3dab 100644 --- a/vlib/v/parser/expr.v +++ b/vlib/v/parser/expr.v @@ -272,6 +272,9 @@ pub fn (mut p Parser) check_expr(precedence int) ?ast.Expr { p.next() p.check(.lpar) expr := p.expr(0) + if p.tok.kind == .comma && p.peek_tok.kind == .rpar { + p.next() + } p.check(.rpar) node = ast.DumpExpr{ expr: expr diff --git a/vlib/v/parser/parser.v b/vlib/v/parser/parser.v index 906d672c2f..240f0ce042 100644 --- a/vlib/v/parser/parser.v +++ b/vlib/v/parser/parser.v @@ -2345,6 +2345,9 @@ pub fn (mut p Parser) name_expr() ast.Expr { arg = p.expr(0) // len has_arg = true } + if p.tok.kind == .comma && p.peek_tok.kind == .rpar { + p.next() + } end_pos := p.tok.pos() p.check(.rpar) node = ast.CastExpr{