mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
checker: check argument mismatch of array.filter/all/any() (#14273)
This commit is contained in:
parent
6da300428e
commit
63eacede95
@ -1778,6 +1778,11 @@ fn (mut c Checker) check_map_and_filter(is_map bool, elem_typ ast.Type, node ast
|
||||
c.error('type mismatch, `$arg_expr.name` must return a bool', arg_expr.pos)
|
||||
}
|
||||
}
|
||||
ast.StringLiteral, ast.StringInterLiteral {
|
||||
if !is_map {
|
||||
c.error('type mismatch, should use e.g. `${node.name}(it > 2)`', arg_expr.pos)
|
||||
}
|
||||
}
|
||||
else {}
|
||||
}
|
||||
}
|
||||
|
21
vlib/v/checker/tests/array_filter_arg_mismatch_err.out
Normal file
21
vlib/v/checker/tests/array_filter_arg_mismatch_err.out
Normal file
@ -0,0 +1,21 @@
|
||||
vlib/v/checker/tests/array_filter_arg_mismatch_err.vv:17:20: error: type mismatch, should use e.g. `filter(it > 2)`
|
||||
15 | }]
|
||||
16 |
|
||||
17 | a1 := list.filter('it.value > 2')
|
||||
| ~~~~~~~~~~~~~~
|
||||
18 | println(a1)
|
||||
19 |
|
||||
vlib/v/checker/tests/array_filter_arg_mismatch_err.vv:20:17: error: type mismatch, should use e.g. `any(it > 2)`
|
||||
18 | println(a1)
|
||||
19 |
|
||||
20 | a2 := list.any('it.value > 2')
|
||||
| ~~~~~~~~~~~~~~
|
||||
21 | println(a2)
|
||||
22 |
|
||||
vlib/v/checker/tests/array_filter_arg_mismatch_err.vv:23:17: error: type mismatch, should use e.g. `all(it > 2)`
|
||||
21 | println(a2)
|
||||
22 |
|
||||
23 | a3 := list.all('it.value > 2')
|
||||
| ~~~~~~~~~~~~~~
|
||||
24 | println(a3)
|
||||
25 | }
|
25
vlib/v/checker/tests/array_filter_arg_mismatch_err.vv
Normal file
25
vlib/v/checker/tests/array_filter_arg_mismatch_err.vv
Normal file
@ -0,0 +1,25 @@
|
||||
module main
|
||||
|
||||
pub struct Row {
|
||||
pub mut:
|
||||
value int
|
||||
}
|
||||
|
||||
fn main() {
|
||||
mut list := [Row{
|
||||
value: 1
|
||||
}, Row{
|
||||
value: 2
|
||||
}, Row{
|
||||
value: 3
|
||||
}]
|
||||
|
||||
a1 := list.filter('it.value > 2')
|
||||
println(a1)
|
||||
|
||||
a2 := list.any('it.value > 2')
|
||||
println(a2)
|
||||
|
||||
a3 := list.all('it.value > 2')
|
||||
println(a3)
|
||||
}
|
Loading…
Reference in New Issue
Block a user