Skip to content

Commit f2abf79

Browse files
authored
parser: detect wrong multi-dim arr declare (fix #25333) (#25338)
1 parent c088cbd commit f2abf79

3 files changed

Lines changed: 24 additions & 9 deletions

File tree

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
vlib/v/checker/tests/wrong_muti_dim_arr_declare_err.vv:4:15: warning: use `x := []Type{}` instead of `x := []Type`
2+
2 |
3+
3 | fn main() {
4+
4 | a2 := [][][]f32[][]{}
5+
| ~~~~~~~~~~
6+
5 | dump(typeof(a2).name)
7+
6 |
8+
vlib/v/checker/tests/wrong_muti_dim_arr_declare_err.vv:4:25: error: invalid expression: unexpected token `]`
9+
2 |
10+
3 | fn main() {
11+
4 | a2 := [][][]f32[][]{}
12+
| ^
13+
5 | dump(typeof(a2).name)
14+
6 |
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
module main
2+
3+
fn main() {
4+
a2 := [][][]f32[][]{}
5+
dump(typeof(a2).name)
6+
7+
assert typeof(a2).name == '[][][]f32'
8+
}
9+

‎vlib/v/parser/parse_type.v‎

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -111,15 +111,7 @@ fn (mut p Parser) parse_array_type(expecting token.Kind, is_option bool) ast.Typ
111111
if elem_type.idx() == ast.thread_type_idx {
112112
p.register_auto_import('sync.threads')
113113
}
114-
mut nr_dims := 1
115-
// detect attr
116-
not_attr := p.peek_tok.kind != .name && p.peek_token(2).kind !in [.semicolon, .rsbr]
117-
for p.tok.kind == expecting && not_attr {
118-
p.next()
119-
p.check(.rsbr)
120-
nr_dims++
121-
}
122-
idx := p.table.find_or_register_array_with_dims(elem_type, nr_dims)
114+
idx := p.table.find_or_register_array_with_dims(elem_type, 1)
123115
if elem_type.has_flag(.generic) {
124116
return ast.new_type(idx).set_flag(.generic)
125117
}

0 commit comments

Comments
 (0)