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 {} +}