From: Matt Corallo Date: Fri, 6 Oct 2023 17:52:57 +0000 (+0000) Subject: [TS] Don't null-check array conversions that aren't nullable X-Git-Tag: v0.0.117.0~7 X-Git-Url: http://git.bitcoin.ninja/index.cgi?p=ldk-java;a=commitdiff_plain;h=6dad8d8221975adb587ef0637960783c8496b528 [TS] Don't null-check array conversions that aren't nullable These can generate a warning in calling methods that actually don't allow null. --- diff --git a/csharp_strings.py b/csharp_strings.py index b5f816ed..74830d04 100644 --- a/csharp_strings.py +++ b/csharp_strings.py @@ -494,7 +494,7 @@ namespace org { namespace ldk { namespace structs { else: return "FREE(" + arr_name + ")" - def map_hu_array_elems(self, arr_name, conv_name, arr_ty, elem_ty): + def map_hu_array_elems(self, arr_name, conv_name, arr_ty, elem_ty, is_nullable): if elem_ty.java_hu_ty == "UInt5": return arr_name + " != null ? InternalUtils.convUInt5Array(" + arr_name + ") : null" elif elem_ty.java_hu_ty == "WitnessVersion": diff --git a/gen_type_mapping.py b/gen_type_mapping.py index 2dfdd641..f68ce6de 100644 --- a/gen_type_mapping.py +++ b/gen_type_mapping.py @@ -224,11 +224,11 @@ class TypeMappingGenerator: else: hu_conv_b = iterator[0] + subty.from_hu_conv[1] + ";" + iterator[1] if from_hu_conv is not None: - arr_conv = self.consts.primitive_arr_from_hu(ty_info, None, self.consts.map_hu_array_elems(arr_name, conv_name, ty_info, subty)) + arr_conv = self.consts.primitive_arr_from_hu(ty_info, None, self.consts.map_hu_array_elems(arr_name, conv_name, ty_info, subty, is_nullable)) assert arr_conv[1] == "" from_hu_conv = (arr_conv[0], hu_conv_b) else: - from_hu_conv = (self.consts.map_hu_array_elems(arr_name, conv_name, ty_info, subty), hu_conv_b) + from_hu_conv = (self.consts.map_hu_array_elems(arr_name, conv_name, ty_info, subty, is_nullable), hu_conv_b) return ConvInfo(ty_info = ty_info, arg_name = ty_info.var_name, arg_conv = arg_conv, arg_conv_name = arg_conv_name, arg_conv_cleanup = arg_conv_cleanup, diff --git a/java_strings.py b/java_strings.py index 946e1650..abe038d0 100644 --- a/java_strings.py +++ b/java_strings.py @@ -707,7 +707,7 @@ import javax.annotation.Nullable; else: return "(*env)->Release" + ty_info.java_ty.strip("[]").title() + "ArrayElements(env, " + arr_name + ", " + dest_name + ", 0)" - def map_hu_array_elems(self, arr_name, conv_name, arr_ty, elem_ty): + def map_hu_array_elems(self, arr_name, conv_name, arr_ty, elem_ty, is_nullable): if elem_ty.java_ty == "long" and elem_ty.java_hu_ty != "long": return arr_name + " != null ? Arrays.stream(" + arr_name + ").mapToLong(" + conv_name + " -> " + elem_ty.from_hu_conv[0] + ").toArray() : null" elif elem_ty.java_ty == "long": diff --git a/typescript_strings.py b/typescript_strings.py index b9f63b38..92c734ac 100644 --- a/typescript_strings.py +++ b/typescript_strings.py @@ -799,11 +799,14 @@ import * as bindings from '../bindings.mjs' else: return "FREE(" + arr_name + ")" - def map_hu_array_elems(self, arr_name, conv_name, arr_ty, elem_ty): + def map_hu_array_elems(self, arr_name, conv_name, arr_ty, elem_ty, is_nullable): if elem_ty.rust_obj == "LDKU5": return arr_name + " != null ? bindings.uint5ArrToBytes(" + arr_name + ") : null" assert elem_ty.c_ty == "uint64_t" or elem_ty.c_ty.endswith("Array") or elem_ty.rust_obj == "LDKStr" - return arr_name + " != null ? " + arr_name + ".map(" + conv_name + " => " + elem_ty.from_hu_conv[0] + ") : null" + if is_nullable: + return arr_name + " != null ? " + arr_name + ".map(" + conv_name + " => " + elem_ty.from_hu_conv[0] + ") : null" + else: + return arr_name + ".map(" + conv_name + " => " + elem_ty.from_hu_conv[0] + ")" def str_ref_to_native_call(self, var_name, str_len): return "str_ref_to_ts(" + var_name + ", " + str_len + ")"