From 0edec06eac595e630f2e1b7e76fe464ed02aa90e Mon Sep 17 00:00:00 2001 From: Nick Treleaven Date: Mon, 21 Dec 2020 13:37:19 +0000 Subject: [PATCH] gen: use new_map, new_map_init_1 functions (#7444) --- vlib/builtin/map_test.v | 1 + vlib/v/gen/cgen.v | 12 +++++++----- vlib/v/gen/json.v | 2 +- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/vlib/builtin/map_test.v b/vlib/builtin/map_test.v index 17c359b129..981db08a41 100644 --- a/vlib/builtin/map_test.v +++ b/vlib/builtin/map_test.v @@ -460,5 +460,6 @@ fn test_map_or() { 'second': 2 'third': 3 } + _ = m // num := m['first'] or { return } } diff --git a/vlib/v/gen/cgen.v b/vlib/v/gen/cgen.v index 3350dbe9d3..0fec9754d2 100644 --- a/vlib/v/gen/cgen.v +++ b/vlib/v/gen/cgen.v @@ -2515,9 +2515,9 @@ fn (mut g Gen) expr(node ast.Expr) { } if size > 0 { if value_typ.kind == .function { - g.write('new_map_init($size, sizeof(voidptr), _MOV(($key_typ_str[$size]){') + g.write('new_map_init_1($size, sizeof($key_typ_str), sizeof(voidptr), _MOV(($key_typ_str[$size]){') } else { - g.write('new_map_init($size, sizeof($value_typ_str), _MOV(($key_typ_str[$size]){') + g.write('new_map_init_1($size, sizeof($key_typ_str), sizeof($value_typ_str), _MOV(($key_typ_str[$size]){') } for expr in node.keys { g.expr(expr) @@ -2534,7 +2534,7 @@ fn (mut g Gen) expr(node ast.Expr) { } g.write('}))') } else { - g.write('new_map_1(sizeof($value_typ_str))') + g.write('new_map(sizeof($key_typ_str), sizeof($value_typ_str))') } if g.is_shared { g.write(', .mtx = sync__new_rwmutex()}') @@ -5447,8 +5447,10 @@ fn (mut g Gen) type_default(typ_ table.Type) string { return '__new_array(0, 1, sizeof($elem_type_str))' } if sym.kind == .map { - value_type_str := g.typ(sym.map_info().value_type) - return 'new_map_1(sizeof($value_type_str))' + info := sym.map_info() + key_type_str := g.typ(info.key_type) + value_type_str := g.typ(info.value_type) + return 'new_map(sizeof($key_type_str), sizeof($value_type_str))' } // User struct defined in another module. // if typ.contains('__') { diff --git a/vlib/v/gen/json.v b/vlib/v/gen/json.v index 11b4c98134..c4725d85f8 100644 --- a/vlib/v/gen/json.v +++ b/vlib/v/gen/json.v @@ -258,7 +258,7 @@ fn (mut g Gen) decode_map(key_type table.Type, value_type table.Type) string { Option err = v_error( string_add(_SLIT("Json element is not an object: "), tos2(cJSON_PrintUnformatted(root))) ); return *(Option_map_${styp}_$styp_v *)&err; } - res = new_map_1(sizeof($styp_v)); + res = new_map(sizeof($styp), sizeof($styp_v)); cJSON *jsval = NULL; cJSON_ArrayForEach(jsval, root) {