From f6de36db51964759b232c523c665ef7ed2a46aa4 Mon Sep 17 00:00:00 2001 From: Swastik Baranwal Date: Sun, 7 Jul 2024 18:32:38 +0530 Subject: [PATCH] parser: sugggest map initialization with the correct syntax (#21817) --- vlib/v/parser/parse_type.v | 4 +++- vlib/v/parser/tests/map_key_twice_err.out | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/vlib/v/parser/parse_type.v b/vlib/v/parser/parse_type.v index abeb59803114a6..155db20de0073e 100644 --- a/vlib/v/parser/parse_type.v +++ b/vlib/v/parser/parse_type.v @@ -163,7 +163,9 @@ fn (mut p Parser) parse_map_type() ast.Type { p.check(.rsbr) if p.tok.kind == .lsbr { if p.peek_tok.kind !in [.rsbr, .number] { - p.error_with_pos('maps can only have a single key', p.peek_tok.pos()) + s := p.table.type_to_str(key_type) + p.error_with_pos('maps can only have a single key. To declare a map use `map[${s}]${p.peek_tok.lit}{}` instead', + p.peek_tok.pos()) return 0 } } diff --git a/vlib/v/parser/tests/map_key_twice_err.out b/vlib/v/parser/tests/map_key_twice_err.out index 05bd066dee07d0..9d6dcd16534b83 100644 --- a/vlib/v/parser/tests/map_key_twice_err.out +++ b/vlib/v/parser/tests/map_key_twice_err.out @@ -1,4 +1,4 @@ -vlib/v/parser/tests/map_key_twice_err.vv:1:14: error: maps can only have a single key +vlib/v/parser/tests/map_key_twice_err.vv:1:14: error: maps can only have a single key. To declare a map use `map[u8]u8{}` instead 1 | _ := map[u8][u8]{} | ~~ 2 |