From 1f064763430367380d09cad59d5d946977a20983 Mon Sep 17 00:00:00 2001 From: Alexander Medvednikov Date: Mon, 9 Oct 2023 00:18:43 +0300 Subject: [PATCH] cgen: fix maps with i32 keys --- vlib/builtin/string.v | 18 ++++++++++++++++++ vlib/v/gen/c/cgen.v | 5 +++-- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/vlib/builtin/string.v b/vlib/builtin/string.v index e555c15c1b7ce3..a970b54654313e 100644 --- a/vlib/builtin/string.v +++ b/vlib/builtin/string.v @@ -1488,6 +1488,24 @@ pub fn (s string) capitalize() string { return res } +// uncapitalize returns the string with the first character uncapitalized. +// Example: assert 'Hello, Bob!'.uncapitalize() == 'hello, Bob!' +[direct_array_access] +pub fn (s string) uncapitalize() string { + if s.len == 0 { + return '' + } + s0 := s[0] + letter := s0.ascii_str() + uletter := letter.to_lower() + if s.len == 1 { + return uletter + } + srest := s[1..] + res := uletter + srest + return res +} + // is_capital returns `true`, if the first character in the string `s`, // is a capital letter, and the rest are NOT. // Example: assert 'Hello'.is_capital() == true diff --git a/vlib/v/gen/c/cgen.v b/vlib/v/gen/c/cgen.v index bd5ec5503844fe..f0a9cef56d4410 100644 --- a/vlib/v/gen/c/cgen.v +++ b/vlib/v/gen/c/cgen.v @@ -3107,7 +3107,8 @@ fn (mut g Gen) map_fn_ptrs(key_typ ast.TypeSymbol) (string, string, string, stri key_eq_fn = '&map_eq_int_2' clone_fn = '&map_clone_int_2' } - .int, .u32, .rune, .f32, .enum_ { + .int, .i32, .u32, .rune, .f32, .enum_ { + // XTODO i64 hash_fn = '&map_hash_int_4' key_eq_fn = '&map_eq_int_4' clone_fn = '&map_clone_int_4' @@ -3132,7 +3133,7 @@ fn (mut g Gen) map_fn_ptrs(key_typ ast.TypeSymbol) (string, string, string, stri free_fn = '&map_free_string' } else { - verror('map key type not supported') + verror('map key type `${key_typ.name}` not supported') } } return hash_fn, key_eq_fn, clone_fn, free_fn