From aebfa4b28e5d92e493010593f4177f53249aa6b2 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Mon, 9 Aug 2021 17:39:38 +0100 Subject: [PATCH] Allow `len` and `cap` to return a `uint` if a type hint is `uint` to aid people wanting to use unsigned integers --- src/check_builtin.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/check_builtin.cpp b/src/check_builtin.cpp index 1b68728a0..ea89ec007 100644 --- a/src/check_builtin.cpp +++ b/src/check_builtin.cpp @@ -406,6 +406,16 @@ bool check_builtin_procedure(CheckerContext *c, Operand *operand, Ast *call, i32 Type *op_type = type_deref(operand->type); Type *type = t_int; + if (type_hint != nullptr) { + Type *bt = type_hint; + // bt = base_type(bt); + if (bt == t_int) { + type = type_hint; + } else if (bt == t_uint) { + type = type_hint; + } + } + AddressingMode mode = Addressing_Invalid; ExactValue value = {}; if (is_type_string(op_type) && id == BuiltinProc_len) {