From 597c2249e0d0699378c99288e422b5a05e69f598 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20D=C3=A4schle?= Date: Fri, 11 Dec 2020 18:23:29 +0100 Subject: [PATCH] parser: fix expected type enum error pos (#7265) --- vlib/v/parser/parser.v | 3 ++- vlib/v/parser/tests/expected_type_enum_err.out | 6 ++++++ vlib/v/parser/tests/expected_type_enum_err.vv | 7 +++++++ 3 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 vlib/v/parser/tests/expected_type_enum_err.out create mode 100644 vlib/v/parser/tests/expected_type_enum_err.vv diff --git a/vlib/v/parser/parser.v b/vlib/v/parser/parser.v index e19b765ce0..0b00eb5efd 100644 --- a/vlib/v/parser/parser.v +++ b/vlib/v/parser/parser.v @@ -1448,11 +1448,12 @@ fn (mut p Parser) dot_expr(left ast.Expr) ast.Expr { // `.green` // `pref.BuildMode.default_mode` fn (mut p Parser) enum_val() ast.EnumVal { + start_pos := p.tok.position() p.check(.dot) val := p.check_name() return ast.EnumVal{ val: val - pos: p.tok.position() + pos: start_pos.extend(p.prev_tok.position()) } } diff --git a/vlib/v/parser/tests/expected_type_enum_err.out b/vlib/v/parser/tests/expected_type_enum_err.out new file mode 100644 index 0000000000..e378cf7d2d --- /dev/null +++ b/vlib/v/parser/tests/expected_type_enum_err.out @@ -0,0 +1,6 @@ +vlib/v/parser/tests/expected_type_enum_err.vv:6:12: error: expected type is not an enum (`rune`) + 4 | + 5 | fn main() { + 6 | if `c` == .bar {} + | ~~~~ + 7 | } \ No newline at end of file diff --git a/vlib/v/parser/tests/expected_type_enum_err.vv b/vlib/v/parser/tests/expected_type_enum_err.vv new file mode 100644 index 0000000000..7385f14ea2 --- /dev/null +++ b/vlib/v/parser/tests/expected_type_enum_err.vv @@ -0,0 +1,7 @@ +module main + +enum Test { bar } + +fn main() { + if `c` == .bar {} +}