diff --git a/vlib/builtin/array.v b/vlib/builtin/array.v index e733dc4021..26509d4ec7 100644 --- a/vlib/builtin/array.v +++ b/vlib/builtin/array.v @@ -259,6 +259,26 @@ pub fn (a []string) str() string { return sb.str() } +// "[true, true, false]" +pub fn (a []bool) str() string { + mut sb := strings.new_builder(a.len * 3) + sb.write('[') + for i := 0; i < a.len; i++ { + val := a[i] + if val { + sb.write('true') + } else { + sb.write('false') + + } + if i < a.len - 1 { + sb.write(', ') + } + } + sb.write(']') + return sb.str() +} + pub fn (b []byte) hex() string { mut hex := malloc(b.len*2+1) mut ptr := &hex[0] diff --git a/vlib/compiler/comptime.v b/vlib/compiler/comptime.v index 6b035b7760..b7245437f3 100644 --- a/vlib/compiler/comptime.v +++ b/vlib/compiler/comptime.v @@ -375,7 +375,7 @@ fn (p mut Parser) gen_array_filter(str_typ string, method_ph int) { p.close_scope() } -fn (p mut Parser) gen_array_map(str_typ string, method_ph int) { +fn (p mut Parser) gen_array_map(str_typ string, method_ph int) string { /* // V a := [1,2,3,4] @@ -412,4 +412,5 @@ fn (p mut Parser) gen_array_map(str_typ string, method_ph int) { p.gen(tmp) // TODO why does this `gen()` work? p.check(.rpar) p.close_scope() + return 'array_' + map_type } diff --git a/vlib/compiler/parser.v b/vlib/compiler/parser.v index e06d166cee..c4844f3cf1 100644 --- a/vlib/compiler/parser.v +++ b/vlib/compiler/parser.v @@ -1948,8 +1948,7 @@ fn (p mut Parser) dot(str_typ_ string, method_ph int) string { return str_typ } else if field_name == 'map' && str_typ.starts_with('array_') { - p.gen_array_map(str_typ, method_ph) - return str_typ + return p.gen_array_map(str_typ, method_ph) } fname_tidx := p.cur_tok_index()