From 1e578b11445c390eb36d1f3e97f3a27ab3667d0a Mon Sep 17 00:00:00 2001 From: Turiiya <34311583+ttytm@users.noreply.github.com> Date: Sun, 29 Oct 2023 13:25:15 +0100 Subject: [PATCH] checker: extend byte deprecation warnings to return types (#19668) --- vlib/builtin/string.v | 6 ++---- vlib/json/json_primitives.v | 4 ++-- vlib/v/checker/fn.v | 3 +++ 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/vlib/builtin/string.v b/vlib/builtin/string.v index 59298546fd28f8..71f2d4622fd372 100644 --- a/vlib/builtin/string.v +++ b/vlib/builtin/string.v @@ -1735,15 +1735,13 @@ pub fn (s string) str() string { // at returns the byte at index `idx`. // Example: assert 'ABC'.at(1) == u8(`B`) -fn (s string) at(idx int) byte { +fn (s string) at(idx int) u8 { $if !no_bounds_checking { if idx < 0 || idx >= s.len { panic('string index out of range: ${idx} / ${s.len}') } } - unsafe { - return s.str[idx] - } + return unsafe { s.str[idx] } } // version of `at()` that is used in `a[i] or {` diff --git a/vlib/json/json_primitives.v b/vlib/json/json_primitives.v index a2b18af4a940c7..64b5e877888a0e 100644 --- a/vlib/json/json_primitives.v +++ b/vlib/json/json_primitives.v @@ -86,8 +86,8 @@ fn decode_i64(root &C.cJSON) i64 { // TODO: remove when `byte` is removed [markused] -fn decode_byte(root &C.cJSON) byte { - return byte(decode_u8(root)) +fn decode_byte(root &C.cJSON) u8 { + return decode_u8(root) } [markused] diff --git a/vlib/v/checker/fn.v b/vlib/v/checker/fn.v index c6ca201bdbcdbf..43382eb949dc6a 100644 --- a/vlib/v/checker/fn.v +++ b/vlib/v/checker/fn.v @@ -126,6 +126,9 @@ fn (mut c Checker) fn_decl(mut node ast.FnDecl) { c.table.find_or_register_array_fixed(parent_sym.info.elem_type, parent_sym.info.size, parent_sym.info.size_expr, true) } + if return_sym.name == 'byte' { + c.warn('byte is deprecated, use u8 instead', node.return_type_pos) + } } final_return_sym := c.table.final_sym(node.return_type) if final_return_sym.info is ast.MultiReturn {