From e5a727c3e103a270601967503a74c984f40c7e35 Mon Sep 17 00:00:00 2001 From: Swastik Baranwal Date: Tue, 18 Jul 2023 20:00:54 +0530 Subject: [PATCH] checker: fix error msg for index error for int ptr (#18896) --- vlib/v/checker/checker.v | 4 ++-- vlib/v/checker/tests/int_ptr_array_index_err.out | 6 ++++++ vlib/v/checker/tests/int_ptr_array_index_err.vv | 6 ++++++ 3 files changed, 14 insertions(+), 2 deletions(-) create mode 100644 vlib/v/checker/tests/int_ptr_array_index_err.out create mode 100644 vlib/v/checker/tests/int_ptr_array_index_err.vv diff --git a/vlib/v/checker/checker.v b/vlib/v/checker/checker.v index 465abd4dd..378d36241 100644 --- a/vlib/v/checker/checker.v +++ b/vlib/v/checker/checker.v @@ -4076,9 +4076,9 @@ fn (mut c Checker) check_index(typ_sym &ast.TypeSymbol, index ast.Expr, index_ty && (index_type_sym.info as ast.Alias).parent_type.is_int()) || (c.pref.translated && index_type.is_any_kind_of_pointer())) { type_str := if typ_sym.kind == .string { - 'non-integer string index `${index_type_sym.name}`' + 'non-integer string index `${c.table.type_to_str(index_type)}`' } else { - 'non-integer index `${index_type_sym.name}` (array type `${typ_sym.name}`)' + 'non-integer index `${c.table.type_to_str(index_type)}` (array type `${typ_sym.name}`)' } c.error('${type_str}', pos) } diff --git a/vlib/v/checker/tests/int_ptr_array_index_err.out b/vlib/v/checker/tests/int_ptr_array_index_err.out new file mode 100644 index 000000000..f42a700e0 --- /dev/null +++ b/vlib/v/checker/tests/int_ptr_array_index_err.out @@ -0,0 +1,6 @@ +vlib/v/checker/tests/int_ptr_array_index_err.vv:5:14: error: non-integer index `&int` (array type `[]u8`) + 3 | offset += 4 + 4 | } + 5 | return bytes[offset] + | ~~~~~~~~ + 6 | } diff --git a/vlib/v/checker/tests/int_ptr_array_index_err.vv b/vlib/v/checker/tests/int_ptr_array_index_err.vv new file mode 100644 index 000000000..f86d686a1 --- /dev/null +++ b/vlib/v/checker/tests/int_ptr_array_index_err.vv @@ -0,0 +1,6 @@ +pub fn read_int(bytes []u8, mut offset &int) int { + defer { + offset += 4 + } + return bytes[offset] +} -- 2.39.5