1
0
mirror of https://github.com/vlang/v.git synced 2023-08-10 21:13:21 +03:00

builtin: deprecate array.reduce in favour of arrays.fold (#16001)

This commit is contained in:
ChAoS_UnItY 2022-10-09 15:29:50 +08:00 committed by GitHub
parent fe6197fe2d
commit 95f57e9206
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 10 additions and 7 deletions

View File

@ -898,7 +898,9 @@ pub fn copy(mut dst []u8, src []u8) int {
// reduce executes a given reducer function on each element of the array,
// resulting in a single output value.
// NOTE: It exists as a method on `[]int` types only.
// See also `arrays.fold`.
// See also `arrays.reduce` for same name or `arrays.fold` for same functionality.
[deprecated: 'use arrays.fold instead, this function has less flexibility than arrays.fold']
[deprecated_after: '2022-10-11']
pub fn (a []int) reduce(iter fn (int, int) int, accum_start int) int {
mut accum_ := accum_start
for i in a {

View File

@ -1,5 +1,6 @@
module native
import arrays
import v.ast
import v.token
@ -1675,12 +1676,12 @@ pub fn (mut g Gen) call_fn_amd64(node ast.CallExpr) {
}
stack_args << i
}
reg_size := reg_args.map((args_size[it] + 7) / 8).reduce(fn (a int, b int) int {
return a + b
}, 0)
stack_size := stack_args.map((args_size[it] + 7) / 8).reduce(fn (a int, b int) int {
return a + b
}, 0)
reg_size := arrays.fold(reg_args.map((args_size[it] + 7) / 8), 0, fn (acc int, elem int) int {
return acc + elem
})
stack_size := arrays.fold(stack_args.map((args_size[it] + 7) / 8), 0, fn (acc int, elem int) int {
return acc + elem
})
// not aligned now XOR pushed args will be odd
is_16bit_aligned := if mut g.code_gen is Amd64 { g.code_gen.is_16bit_aligned } else { true } != (stack_size % 2 == 1)