diff --git a/vlib/v/parser/parser.v b/vlib/v/parser/parser.v index 91be19e89d..c204a55034 100644 --- a/vlib/v/parser/parser.v +++ b/vlib/v/parser/parser.v @@ -2093,7 +2093,7 @@ pub fn (mut p Parser) name_expr() ast.Expr { // if name in ast.builtin_type_names { if (!known_var && (name in p.table.type_idxs || name_w_mod in p.table.type_idxs) && name !in ['C.stat', 'C.sigaction']) || is_mod_cast || is_generic_cast - || (language == .v && name[0].is_capital()) { + || (language == .v && name.len > 0 && name[0].is_capital()) { // MainLetter(x) is *always* a cast, as long as it is not `C.` // TODO handle C.stat() start_pos := p.tok.position() diff --git a/vlib/v/parser/tests/empty_name_expr_err.out b/vlib/v/parser/tests/empty_name_expr_err.out new file mode 100644 index 0000000000..07cfb9b977 --- /dev/null +++ b/vlib/v/parser/tests/empty_name_expr_err.out @@ -0,0 +1,5 @@ +vlib/v/parser/tests/empty_name_expr_err.vv:2:9: error: unexpected name `n` + 1 | fn main() { + 2 | return n ?( + | ^ + 3 | } diff --git a/vlib/v/parser/tests/empty_name_expr_err.vv b/vlib/v/parser/tests/empty_name_expr_err.vv new file mode 100644 index 0000000000..61d274015b --- /dev/null +++ b/vlib/v/parser/tests/empty_name_expr_err.vv @@ -0,0 +1,3 @@ +fn main() { + return n ?( +}