Skip to content

Commit e17a5a7

Browse files
authored
Merge pull request godotengine#1794 from bruvzg/fix_typed_dict_ref
Fix binding generation for `TypedArray`/`TypedDictionary` with refcounted elements.
2 parents 5a0d656 + ed53a70 commit e17a5a7

File tree

1 file changed

+15
-2
lines changed

1 file changed

+15
-2
lines changed

binding_generator.py

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2755,9 +2755,22 @@ def correct_type(type_name, meta=None, use_alias=True):
27552755
if type_name in type_conversion:
27562756
return type_conversion[type_name]
27572757
if type_name.startswith("typedarray::"):
2758-
return type_name.replace("typedarray::", "TypedArray<") + ">"
2758+
arr_type_name = type_name.replace("typedarray::", "")
2759+
if is_refcounted(arr_type_name):
2760+
arr_type_name = "Ref<" + arr_type_name + ">"
2761+
return "TypedArray<" + arr_type_name + ">"
27592762
if type_name.startswith("typeddictionary::"):
2760-
return type_name.replace("typeddictionary::", "TypedDictionary<").replace(";", ", ") + ">"
2763+
dict_type_name = type_name.replace("typeddictionary::", "")
2764+
dict_type_names = dict_type_name.split(";")
2765+
if is_refcounted(dict_type_names[0]):
2766+
key_name = "Ref<" + dict_type_names[0] + ">"
2767+
else:
2768+
key_name = dict_type_names[0]
2769+
if is_refcounted(dict_type_names[1]):
2770+
val_name = "Ref<" + dict_type_names[1] + ">"
2771+
else:
2772+
val_name = dict_type_names[1]
2773+
return "TypedDictionary<" + key_name + ", " + val_name + ">"
27612774
if is_enum(type_name):
27622775
if is_bitfield(type_name):
27632776
base_class = get_enum_class(type_name)

0 commit comments

Comments
 (0)