checker: check map builtin method's arguments (#14120)
parent
5e8c4a3aff
commit
8013bd43b0
|
@ -1743,6 +1743,9 @@ fn (mut c Checker) map_builtin_method_call(mut node ast.CallExpr, left_type ast.
|
||||||
mut ret_type := ast.void_type
|
mut ret_type := ast.void_type
|
||||||
match method_name {
|
match method_name {
|
||||||
'clone', 'move' {
|
'clone', 'move' {
|
||||||
|
if node.args.len != 0 {
|
||||||
|
c.error('`.${method_name}()` does not have any arguments', node.args[0].pos)
|
||||||
|
}
|
||||||
if method_name[0] == `m` {
|
if method_name[0] == `m` {
|
||||||
c.fail_if_immutable(node.left)
|
c.fail_if_immutable(node.left)
|
||||||
}
|
}
|
||||||
|
@ -1754,6 +1757,9 @@ fn (mut c Checker) map_builtin_method_call(mut node ast.CallExpr, left_type ast.
|
||||||
ret_type = ret_type.clear_flag(.shared_f)
|
ret_type = ret_type.clear_flag(.shared_f)
|
||||||
}
|
}
|
||||||
'keys' {
|
'keys' {
|
||||||
|
if node.args.len != 0 {
|
||||||
|
c.error('`.keys()` does not have any arguments', node.args[0].pos)
|
||||||
|
}
|
||||||
info := left_sym.info as ast.Map
|
info := left_sym.info as ast.Map
|
||||||
typ := c.table.find_or_register_array(info.key_type)
|
typ := c.table.find_or_register_array(info.key_type)
|
||||||
ret_type = ast.Type(typ)
|
ret_type = ast.Type(typ)
|
||||||
|
|
|
@ -0,0 +1,21 @@
|
||||||
|
vlib/v/checker/tests/map_builtin_method_args_err.vv:4:16: error: `.clone()` does not have any arguments
|
||||||
|
2 | mut m := {11: 22}
|
||||||
|
3 |
|
||||||
|
4 | a1 := m.clone(11)
|
||||||
|
| ~~
|
||||||
|
5 | println(a1)
|
||||||
|
6 |
|
||||||
|
vlib/v/checker/tests/map_builtin_method_args_err.vv:7:15: error: `.move()` does not have any arguments
|
||||||
|
5 | println(a1)
|
||||||
|
6 |
|
||||||
|
7 | a2 := m.move(11)
|
||||||
|
| ~~
|
||||||
|
8 | println(a2)
|
||||||
|
9 |
|
||||||
|
vlib/v/checker/tests/map_builtin_method_args_err.vv:10:15: error: `.keys()` does not have any arguments
|
||||||
|
8 | println(a2)
|
||||||
|
9 |
|
||||||
|
10 | a3 := m.keys('aaa')
|
||||||
|
| ~~~~~
|
||||||
|
11 | println(a3)
|
||||||
|
12 | }
|
|
@ -0,0 +1,12 @@
|
||||||
|
fn main() {
|
||||||
|
mut m := {11: 22}
|
||||||
|
|
||||||
|
a1 := m.clone(11)
|
||||||
|
println(a1)
|
||||||
|
|
||||||
|
a2 := m.move(11)
|
||||||
|
println(a2)
|
||||||
|
|
||||||
|
a3 := m.keys('aaa')
|
||||||
|
println(a3)
|
||||||
|
}
|
Loading…
Reference in New Issue