diff options
author | Rémi Verschelde <rverschelde@gmail.com> | 2024-03-06 09:49:53 +0100 |
---|---|---|
committer | Rémi Verschelde <rverschelde@gmail.com> | 2024-03-06 09:49:53 +0100 |
commit | 0acc4276b6825d872648fddfbd74c00c63d36741 (patch) | |
tree | fe2d3b4be44638e2d455d84ab974891cb107fda1 /modules/gdscript/tests/scripts | |
parent | 1b2e0b32d727ceab387afcabba422f994038e439 (diff) | |
parent | 882441a0ad00fed66bf5d0859e36e7f369d9d509 (diff) | |
download | redot-engine-0acc4276b6825d872648fddfbd74c00c63d36741.tar.gz |
Merge pull request #82952 from AbelToy/gds-export-array
Allow `@export`ed Arrays to set property hints for their elements
Diffstat (limited to 'modules/gdscript/tests/scripts')
10 files changed, 324 insertions, 5 deletions
diff --git a/modules/gdscript/tests/scripts/parser/errors/export_enum_wrong_array_type.gd b/modules/gdscript/tests/scripts/parser/errors/export_enum_wrong_array_type.gd new file mode 100644 index 0000000000..9f1a52856d --- /dev/null +++ b/modules/gdscript/tests/scripts/parser/errors/export_enum_wrong_array_type.gd @@ -0,0 +1,4 @@ +@export_enum("A", "B", "C") var x: Array[Color] + +func test(): + pass diff --git a/modules/gdscript/tests/scripts/parser/errors/export_enum_wrong_array_type.out b/modules/gdscript/tests/scripts/parser/errors/export_enum_wrong_array_type.out new file mode 100644 index 0000000000..1e0455b96d --- /dev/null +++ b/modules/gdscript/tests/scripts/parser/errors/export_enum_wrong_array_type.out @@ -0,0 +1,2 @@ +GDTEST_ANALYZER_ERROR +"@export_enum" annotation requires a variable of type "int", "Array[int]", "PackedByteArray", "PackedInt32Array", "PackedInt64Array", "String", "Array[String]", or "PackedStringArray", but type "Array[Color]" was given instead. diff --git a/modules/gdscript/tests/scripts/parser/errors/export_enum_wrong_type.gd b/modules/gdscript/tests/scripts/parser/errors/export_enum_wrong_type.gd new file mode 100644 index 0000000000..5fe66e7cce --- /dev/null +++ b/modules/gdscript/tests/scripts/parser/errors/export_enum_wrong_type.gd @@ -0,0 +1,4 @@ +@export_enum("A", "B", "C") var x: Color + +func test(): + pass diff --git a/modules/gdscript/tests/scripts/parser/errors/export_enum_wrong_type.out b/modules/gdscript/tests/scripts/parser/errors/export_enum_wrong_type.out new file mode 100644 index 0000000000..43a08acc0a --- /dev/null +++ b/modules/gdscript/tests/scripts/parser/errors/export_enum_wrong_type.out @@ -0,0 +1,2 @@ +GDTEST_ANALYZER_ERROR +"@export_enum" annotation requires a variable of type "int", "Array[int]", "PackedByteArray", "PackedInt32Array", "PackedInt64Array", "String", "Array[String]", or "PackedStringArray", but type "Color" was given instead. diff --git a/modules/gdscript/tests/scripts/parser/features/export_arrays.gd b/modules/gdscript/tests/scripts/parser/features/export_arrays.gd new file mode 100644 index 0000000000..ddfb186aa4 --- /dev/null +++ b/modules/gdscript/tests/scripts/parser/features/export_arrays.gd @@ -0,0 +1,86 @@ +const Utils = preload("../../utils.notest.gd") + +@export_dir var test_dir: Array[String] +@export_dir var test_dir_packed: PackedStringArray +@export_file var test_file: Array[String] +@export_file var test_file_packed: PackedStringArray +@export_global_dir var test_global_dir: Array[String] +@export_global_dir var test_global_dir_packed: PackedStringArray +@export_global_file var test_global_file: Array[String] +@export_global_file var test_global_file_packed: PackedStringArray +@export_flags("A", "B", "C") var test_bit_flag: Array[int] +@export_flags("A", "B", "C") var test_bit_flag_packed_byte: PackedByteArray +@export_flags("A", "B", "C") var test_bit_flag_packed32: PackedInt32Array +@export_flags("A", "B", "C") var test_bit_flag_packed64: PackedInt64Array +@export_flags_2d_navigation var test_bit_flag_2d_nav: Array[int] +@export_flags_2d_navigation var test_bit_flag_2d_nav_packed_byte: PackedByteArray +@export_flags_2d_navigation var test_bit_flag_2d_nav_packed32: PackedInt32Array +@export_flags_2d_navigation var test_bit_flag_2d_nav_packed64: PackedInt64Array +@export_flags_2d_physics var test_bit_flag_2d_phys: Array[int] +@export_flags_2d_physics var test_bit_flag_2d_phys_packed_byte: PackedByteArray +@export_flags_2d_physics var test_bit_flag_2d_phys_packed32: PackedInt32Array +@export_flags_2d_physics var test_bit_flag_2d_phys_packed64: PackedInt64Array +@export_flags_2d_render var test_bit_flag_2d_render: Array[int] +@export_flags_2d_render var test_bit_flag_2d_render_packed_byte: PackedByteArray +@export_flags_2d_render var test_bit_flag_2d_render_packed32: PackedInt32Array +@export_flags_2d_render var test_bit_flag_2d_render_packed64: PackedInt64Array +@export_flags_3d_navigation var test_bit_flag_3d_nav: Array[int] +@export_flags_3d_navigation var test_bit_flag_3d_nav_packed_byte: PackedByteArray +@export_flags_3d_navigation var test_bit_flag_3d_nav_packed32: PackedInt32Array +@export_flags_3d_navigation var test_bit_flag_3d_nav_packed64: PackedInt64Array +@export_flags_3d_physics var test_bit_flag_3d_phys: Array[int] +@export_flags_3d_physics var test_bit_flag_3d_phys_packed_byte: PackedByteArray +@export_flags_3d_physics var test_bit_flag_3d_phys_packed32: PackedInt32Array +@export_flags_3d_physics var test_bit_flag_3d_phys_packed64: PackedInt64Array +@export_flags_3d_render var test_bit_flag_3d_render: Array[int] +@export_flags_3d_render var test_bit_flag_3d_render_packed_byte: PackedByteArray +@export_flags_3d_render var test_bit_flag_3d_render_packed32: PackedInt32Array +@export_flags_3d_render var test_bit_flag_3d_render_packed64: PackedInt64Array +@export_multiline var test_multiline: Array[String] +@export_multiline var test_multiline_packed: PackedStringArray +@export_placeholder("Placeholder") var test_placeholder: Array[String] +@export_placeholder("Placeholder") var test_placeholder_packed: PackedStringArray +@export_range(1, 10) var test_range_int: Array[int] +@export_range(1, 10) var test_range_int_packed_byte: PackedByteArray +@export_range(1, 10) var test_range_int_packed32: PackedInt32Array +@export_range(1, 10) var test_range_int_packed64: PackedInt64Array +@export_range(1, 10, 0.01) var test_range_int_float_step: Array[int] +@export_range(1.0, 10.0) var test_range_float: Array[float] +@export_range(1.0, 10.0) var test_range_float_packed32: PackedFloat32Array +@export_range(1.0, 10.0) var test_range_float_packed64: PackedFloat64Array +@export_exp_easing var test_exp_easing: Array[float] +@export_exp_easing var test_exp_easing_packed32: PackedFloat32Array +@export_exp_easing var test_exp_easing_packed64: PackedFloat64Array +@export_node_path var test_node_path: Array[NodePath] +@export_color_no_alpha var test_color: Array[Color] +@export_color_no_alpha var test_color_packed: PackedColorArray + +var temp_packed_byte_array: PackedByteArray +var temp_packed_int32_array: PackedInt32Array +var temp_packed_int64_array: PackedInt64Array +var temp_packed_float32_array: PackedFloat32Array +var temp_packed_float64_array: PackedFloat64Array +var temp_packed_color_array: PackedColorArray +var temp_packed_vector2_array: PackedVector2Array +var temp_packed_vector3_array: PackedVector3Array + +@export var test_weak_packed_byte_array = temp_packed_byte_array +@export var test_weak_packed_int32_array = temp_packed_int32_array +@export var test_weak_packed_int64_array = temp_packed_int64_array +@export var test_weak_packed_float32_array = temp_packed_float32_array +@export var test_weak_packed_float64_array = temp_packed_float64_array +@export var test_weak_packed_color_array = temp_packed_color_array +@export var test_weak_packed_vector2_array = temp_packed_vector2_array +@export var test_weak_packed_vector3_array = temp_packed_vector3_array + +@export_range(1, 10) var test_range_weak_packed_byte_array = temp_packed_byte_array +@export_range(1, 10) var test_range_weak_packed_int32_array = temp_packed_int32_array +@export_range(1, 10) var test_range_weak_packed_int64_array = temp_packed_int64_array +@export_range(1, 10) var test_range_weak_packed_float32_array = temp_packed_float32_array +@export_range(1, 10) var test_range_weak_packed_float64_array = temp_packed_float64_array +@export_color_no_alpha var test_noalpha_weak_packed_color_array = temp_packed_color_array + +func test(): + for property in get_property_list(): + if str(property.name).begins_with("test_"): + Utils.print_property_extended_info(property) diff --git a/modules/gdscript/tests/scripts/parser/features/export_arrays.out b/modules/gdscript/tests/scripts/parser/features/export_arrays.out new file mode 100644 index 0000000000..00e75fcc43 --- /dev/null +++ b/modules/gdscript/tests/scripts/parser/features/export_arrays.out @@ -0,0 +1,137 @@ +GDTEST_OK +var test_dir: Array + hint=TYPE_STRING hint_string="String/DIR:" usage=DEFAULT|SCRIPT_VARIABLE +var test_dir_packed: PackedStringArray + hint=TYPE_STRING hint_string="String/DIR:" usage=DEFAULT|SCRIPT_VARIABLE +var test_file: Array + hint=TYPE_STRING hint_string="String/FILE:" usage=DEFAULT|SCRIPT_VARIABLE +var test_file_packed: PackedStringArray + hint=TYPE_STRING hint_string="String/FILE:" usage=DEFAULT|SCRIPT_VARIABLE +var test_global_dir: Array + hint=TYPE_STRING hint_string="String/GLOBAL_DIR:" usage=DEFAULT|SCRIPT_VARIABLE +var test_global_dir_packed: PackedStringArray + hint=TYPE_STRING hint_string="String/GLOBAL_DIR:" usage=DEFAULT|SCRIPT_VARIABLE +var test_global_file: Array + hint=TYPE_STRING hint_string="String/GLOBAL_FILE:" usage=DEFAULT|SCRIPT_VARIABLE +var test_global_file_packed: PackedStringArray + hint=TYPE_STRING hint_string="String/GLOBAL_FILE:" usage=DEFAULT|SCRIPT_VARIABLE +var test_bit_flag: Array + hint=TYPE_STRING hint_string="int/FLAGS:A,B,C" usage=DEFAULT|SCRIPT_VARIABLE +var test_bit_flag_packed_byte: PackedByteArray + hint=TYPE_STRING hint_string="int/FLAGS:A,B,C" usage=DEFAULT|SCRIPT_VARIABLE +var test_bit_flag_packed32: PackedInt32Array + hint=TYPE_STRING hint_string="int/FLAGS:A,B,C" usage=DEFAULT|SCRIPT_VARIABLE +var test_bit_flag_packed64: PackedInt64Array + hint=TYPE_STRING hint_string="int/FLAGS:A,B,C" usage=DEFAULT|SCRIPT_VARIABLE +var test_bit_flag_2d_nav: Array + hint=TYPE_STRING hint_string="int/LAYERS_2D_NAVIGATION:" usage=DEFAULT|SCRIPT_VARIABLE +var test_bit_flag_2d_nav_packed_byte: PackedByteArray + hint=TYPE_STRING hint_string="int/LAYERS_2D_NAVIGATION:" usage=DEFAULT|SCRIPT_VARIABLE +var test_bit_flag_2d_nav_packed32: PackedInt32Array + hint=TYPE_STRING hint_string="int/LAYERS_2D_NAVIGATION:" usage=DEFAULT|SCRIPT_VARIABLE +var test_bit_flag_2d_nav_packed64: PackedInt64Array + hint=TYPE_STRING hint_string="int/LAYERS_2D_NAVIGATION:" usage=DEFAULT|SCRIPT_VARIABLE +var test_bit_flag_2d_phys: Array + hint=TYPE_STRING hint_string="int/LAYERS_2D_PHYSICS:" usage=DEFAULT|SCRIPT_VARIABLE +var test_bit_flag_2d_phys_packed_byte: PackedByteArray + hint=TYPE_STRING hint_string="int/LAYERS_2D_PHYSICS:" usage=DEFAULT|SCRIPT_VARIABLE +var test_bit_flag_2d_phys_packed32: PackedInt32Array + hint=TYPE_STRING hint_string="int/LAYERS_2D_PHYSICS:" usage=DEFAULT|SCRIPT_VARIABLE +var test_bit_flag_2d_phys_packed64: PackedInt64Array + hint=TYPE_STRING hint_string="int/LAYERS_2D_PHYSICS:" usage=DEFAULT|SCRIPT_VARIABLE +var test_bit_flag_2d_render: Array + hint=TYPE_STRING hint_string="int/LAYERS_2D_RENDER:" usage=DEFAULT|SCRIPT_VARIABLE +var test_bit_flag_2d_render_packed_byte: PackedByteArray + hint=TYPE_STRING hint_string="int/LAYERS_2D_RENDER:" usage=DEFAULT|SCRIPT_VARIABLE +var test_bit_flag_2d_render_packed32: PackedInt32Array + hint=TYPE_STRING hint_string="int/LAYERS_2D_RENDER:" usage=DEFAULT|SCRIPT_VARIABLE +var test_bit_flag_2d_render_packed64: PackedInt64Array + hint=TYPE_STRING hint_string="int/LAYERS_2D_RENDER:" usage=DEFAULT|SCRIPT_VARIABLE +var test_bit_flag_3d_nav: Array + hint=TYPE_STRING hint_string="int/LAYERS_3D_NAVIGATION:" usage=DEFAULT|SCRIPT_VARIABLE +var test_bit_flag_3d_nav_packed_byte: PackedByteArray + hint=TYPE_STRING hint_string="int/LAYERS_3D_NAVIGATION:" usage=DEFAULT|SCRIPT_VARIABLE +var test_bit_flag_3d_nav_packed32: PackedInt32Array + hint=TYPE_STRING hint_string="int/LAYERS_3D_NAVIGATION:" usage=DEFAULT|SCRIPT_VARIABLE +var test_bit_flag_3d_nav_packed64: PackedInt64Array + hint=TYPE_STRING hint_string="int/LAYERS_3D_NAVIGATION:" usage=DEFAULT|SCRIPT_VARIABLE +var test_bit_flag_3d_phys: Array + hint=TYPE_STRING hint_string="int/LAYERS_3D_PHYSICS:" usage=DEFAULT|SCRIPT_VARIABLE +var test_bit_flag_3d_phys_packed_byte: PackedByteArray + hint=TYPE_STRING hint_string="int/LAYERS_3D_PHYSICS:" usage=DEFAULT|SCRIPT_VARIABLE +var test_bit_flag_3d_phys_packed32: PackedInt32Array + hint=TYPE_STRING hint_string="int/LAYERS_3D_PHYSICS:" usage=DEFAULT|SCRIPT_VARIABLE +var test_bit_flag_3d_phys_packed64: PackedInt64Array + hint=TYPE_STRING hint_string="int/LAYERS_3D_PHYSICS:" usage=DEFAULT|SCRIPT_VARIABLE +var test_bit_flag_3d_render: Array + hint=TYPE_STRING hint_string="int/LAYERS_3D_RENDER:" usage=DEFAULT|SCRIPT_VARIABLE +var test_bit_flag_3d_render_packed_byte: PackedByteArray + hint=TYPE_STRING hint_string="int/LAYERS_3D_RENDER:" usage=DEFAULT|SCRIPT_VARIABLE +var test_bit_flag_3d_render_packed32: PackedInt32Array + hint=TYPE_STRING hint_string="int/LAYERS_3D_RENDER:" usage=DEFAULT|SCRIPT_VARIABLE +var test_bit_flag_3d_render_packed64: PackedInt64Array + hint=TYPE_STRING hint_string="int/LAYERS_3D_RENDER:" usage=DEFAULT|SCRIPT_VARIABLE +var test_multiline: Array + hint=TYPE_STRING hint_string="String/MULTILINE_TEXT:" usage=DEFAULT|SCRIPT_VARIABLE +var test_multiline_packed: PackedStringArray + hint=TYPE_STRING hint_string="String/MULTILINE_TEXT:" usage=DEFAULT|SCRIPT_VARIABLE +var test_placeholder: Array + hint=TYPE_STRING hint_string="String/PLACEHOLDER_TEXT:Placeholder" usage=DEFAULT|SCRIPT_VARIABLE +var test_placeholder_packed: PackedStringArray + hint=TYPE_STRING hint_string="String/PLACEHOLDER_TEXT:Placeholder" usage=DEFAULT|SCRIPT_VARIABLE +var test_range_int: Array + hint=TYPE_STRING hint_string="int/RANGE:1,10" usage=DEFAULT|SCRIPT_VARIABLE +var test_range_int_packed_byte: PackedByteArray + hint=TYPE_STRING hint_string="int/RANGE:1,10" usage=DEFAULT|SCRIPT_VARIABLE +var test_range_int_packed32: PackedInt32Array + hint=TYPE_STRING hint_string="int/RANGE:1,10" usage=DEFAULT|SCRIPT_VARIABLE +var test_range_int_packed64: PackedInt64Array + hint=TYPE_STRING hint_string="int/RANGE:1,10" usage=DEFAULT|SCRIPT_VARIABLE +var test_range_int_float_step: Array + hint=TYPE_STRING hint_string="int/RANGE:1,10,0.01" usage=DEFAULT|SCRIPT_VARIABLE +var test_range_float: Array + hint=TYPE_STRING hint_string="float/RANGE:1,10" usage=DEFAULT|SCRIPT_VARIABLE +var test_range_float_packed32: PackedFloat32Array + hint=TYPE_STRING hint_string="float/RANGE:1,10" usage=DEFAULT|SCRIPT_VARIABLE +var test_range_float_packed64: PackedFloat64Array + hint=TYPE_STRING hint_string="float/RANGE:1,10" usage=DEFAULT|SCRIPT_VARIABLE +var test_exp_easing: Array + hint=TYPE_STRING hint_string="float/EXP_EASING:" usage=DEFAULT|SCRIPT_VARIABLE +var test_exp_easing_packed32: PackedFloat32Array + hint=TYPE_STRING hint_string="float/EXP_EASING:" usage=DEFAULT|SCRIPT_VARIABLE +var test_exp_easing_packed64: PackedFloat64Array + hint=TYPE_STRING hint_string="float/EXP_EASING:" usage=DEFAULT|SCRIPT_VARIABLE +var test_node_path: Array + hint=TYPE_STRING hint_string="NodePath/NODE_PATH_VALID_TYPES:" usage=DEFAULT|SCRIPT_VARIABLE +var test_color: Array + hint=TYPE_STRING hint_string="Color/COLOR_NO_ALPHA:" usage=DEFAULT|SCRIPT_VARIABLE +var test_color_packed: PackedColorArray + hint=TYPE_STRING hint_string="Color/COLOR_NO_ALPHA:" usage=DEFAULT|SCRIPT_VARIABLE +var test_weak_packed_byte_array: PackedByteArray + hint=TYPE_STRING hint_string="int:int" usage=DEFAULT|SCRIPT_VARIABLE +var test_weak_packed_int32_array: PackedInt32Array + hint=TYPE_STRING hint_string="int:int" usage=DEFAULT|SCRIPT_VARIABLE +var test_weak_packed_int64_array: PackedInt64Array + hint=TYPE_STRING hint_string="int:int" usage=DEFAULT|SCRIPT_VARIABLE +var test_weak_packed_float32_array: PackedFloat32Array + hint=TYPE_STRING hint_string="float:float" usage=DEFAULT|SCRIPT_VARIABLE +var test_weak_packed_float64_array: PackedFloat64Array + hint=TYPE_STRING hint_string="float:float" usage=DEFAULT|SCRIPT_VARIABLE +var test_weak_packed_color_array: PackedColorArray + hint=TYPE_STRING hint_string="Color:Color" usage=DEFAULT|SCRIPT_VARIABLE +var test_weak_packed_vector2_array: PackedVector2Array + hint=TYPE_STRING hint_string="Vector2:Vector2" usage=DEFAULT|SCRIPT_VARIABLE +var test_weak_packed_vector3_array: PackedVector3Array + hint=TYPE_STRING hint_string="Vector3:Vector3" usage=DEFAULT|SCRIPT_VARIABLE +var test_range_weak_packed_byte_array: PackedByteArray + hint=TYPE_STRING hint_string="int/RANGE:1,10" usage=DEFAULT|SCRIPT_VARIABLE +var test_range_weak_packed_int32_array: PackedInt32Array + hint=TYPE_STRING hint_string="int/RANGE:1,10" usage=DEFAULT|SCRIPT_VARIABLE +var test_range_weak_packed_int64_array: PackedInt64Array + hint=TYPE_STRING hint_string="int/RANGE:1,10" usage=DEFAULT|SCRIPT_VARIABLE +var test_range_weak_packed_float32_array: PackedFloat32Array + hint=TYPE_STRING hint_string="float/RANGE:1,10" usage=DEFAULT|SCRIPT_VARIABLE +var test_range_weak_packed_float64_array: PackedFloat64Array + hint=TYPE_STRING hint_string="float/RANGE:1,10" usage=DEFAULT|SCRIPT_VARIABLE +var test_noalpha_weak_packed_color_array: PackedColorArray + hint=TYPE_STRING hint_string="Color/COLOR_NO_ALPHA:" usage=DEFAULT|SCRIPT_VARIABLE diff --git a/modules/gdscript/tests/scripts/parser/features/export_enum.gd b/modules/gdscript/tests/scripts/parser/features/export_enum.gd index 4f2a43f4fe..7f0737f4db 100644 --- a/modules/gdscript/tests/scripts/parser/features/export_enum.gd +++ b/modules/gdscript/tests/scripts/parser/features/export_enum.gd @@ -1,14 +1,35 @@ const Utils = preload("../../utils.notest.gd") @export_enum("Red", "Green", "Blue") var test_untyped +@export_enum("Red:10", "Green:20", "Blue:30") var test_with_values + +var temp_array_int: Array[int] +var temp_array_string: Array[String] +var temp_packed_byte_array: PackedByteArray +var temp_packed_int32_array: PackedInt32Array +var temp_packed_int64_array: PackedInt64Array +var temp_packed_string_array: PackedStringArray +@export_enum("Red", "Green", "Blue") var test_weak_variant @export_enum("Red", "Green", "Blue") var test_weak_int = 0 @export_enum("Red", "Green", "Blue") var test_weak_string = "" +@export_enum("Red", "Green", "Blue") var test_weak_array_int = temp_array_int +@export_enum("Red", "Green", "Blue") var test_weak_array_string = temp_array_string +@export_enum("Red", "Green", "Blue") var test_weak_packed_byte_array = temp_packed_byte_array +@export_enum("Red", "Green", "Blue") var test_weak_packed_int32_array = temp_packed_int32_array +@export_enum("Red", "Green", "Blue") var test_weak_packed_int64_array = temp_packed_int64_array +@export_enum("Red", "Green", "Blue") var test_weak_packed_string_array = temp_packed_string_array +@export_enum("Red", "Green", "Blue") var test_hard_variant: Variant @export_enum("Red", "Green", "Blue") var test_hard_int: int @export_enum("Red", "Green", "Blue") var test_hard_string: String +@export_enum("Red", "Green", "Blue") var test_hard_array_int: Array[int] +@export_enum("Red", "Green", "Blue") var test_hard_array_string: Array[String] -@export_enum("Red:10", "Green:20", "Blue:30") var test_with_values +@export_enum("Red", "Green", "Blue") var test_variant_array_int: Variant = temp_array_int +@export_enum("Red", "Green", "Blue") var test_variant_packed_int32_array: Variant = temp_packed_int32_array +@export_enum("Red", "Green", "Blue") var test_variant_array_string: Variant = temp_array_string +@export_enum("Red", "Green", "Blue") var test_variant_packed_string_array: Variant = temp_packed_string_array func test(): for property in get_property_list(): diff --git a/modules/gdscript/tests/scripts/parser/features/export_enum.out b/modules/gdscript/tests/scripts/parser/features/export_enum.out index 43f5e197ad..c87f9b17f0 100644 --- a/modules/gdscript/tests/scripts/parser/features/export_enum.out +++ b/modules/gdscript/tests/scripts/parser/features/export_enum.out @@ -1,13 +1,41 @@ GDTEST_OK var test_untyped: int = null hint=ENUM hint_string="Red,Green,Blue" usage=DEFAULT|SCRIPT_VARIABLE +var test_with_values: int = null + hint=ENUM hint_string="Red:10,Green:20,Blue:30" usage=DEFAULT|SCRIPT_VARIABLE +var test_weak_variant: int = null + hint=ENUM hint_string="Red,Green,Blue" usage=DEFAULT|SCRIPT_VARIABLE var test_weak_int: int = 0 hint=ENUM hint_string="Red,Green,Blue" usage=DEFAULT|SCRIPT_VARIABLE var test_weak_string: String = "" hint=ENUM hint_string="Red,Green,Blue" usage=DEFAULT|SCRIPT_VARIABLE +var test_weak_array_int: Array = Array[int]([]) + hint=TYPE_STRING hint_string="int/ENUM:Red,Green,Blue" usage=DEFAULT|SCRIPT_VARIABLE +var test_weak_array_string: Array = Array[String]([]) + hint=TYPE_STRING hint_string="String/ENUM:Red,Green,Blue" usage=DEFAULT|SCRIPT_VARIABLE +var test_weak_packed_byte_array: PackedByteArray = PackedByteArray() + hint=TYPE_STRING hint_string="int/ENUM:Red,Green,Blue" usage=DEFAULT|SCRIPT_VARIABLE +var test_weak_packed_int32_array: PackedInt32Array = PackedInt32Array() + hint=TYPE_STRING hint_string="int/ENUM:Red,Green,Blue" usage=DEFAULT|SCRIPT_VARIABLE +var test_weak_packed_int64_array: PackedInt64Array = PackedInt64Array() + hint=TYPE_STRING hint_string="int/ENUM:Red,Green,Blue" usage=DEFAULT|SCRIPT_VARIABLE +var test_weak_packed_string_array: PackedStringArray = PackedStringArray() + hint=TYPE_STRING hint_string="String/ENUM:Red,Green,Blue" usage=DEFAULT|SCRIPT_VARIABLE +var test_hard_variant: int = null + hint=ENUM hint_string="Red,Green,Blue" usage=DEFAULT|SCRIPT_VARIABLE var test_hard_int: int = 0 hint=ENUM hint_string="Red,Green,Blue" usage=DEFAULT|SCRIPT_VARIABLE var test_hard_string: String = "" hint=ENUM hint_string="Red,Green,Blue" usage=DEFAULT|SCRIPT_VARIABLE -var test_with_values: int = null - hint=ENUM hint_string="Red:10,Green:20,Blue:30" usage=DEFAULT|SCRIPT_VARIABLE +var test_hard_array_int: Array = Array[int]([]) + hint=TYPE_STRING hint_string="int/ENUM:Red,Green,Blue" usage=DEFAULT|SCRIPT_VARIABLE +var test_hard_array_string: Array = Array[String]([]) + hint=TYPE_STRING hint_string="String/ENUM:Red,Green,Blue" usage=DEFAULT|SCRIPT_VARIABLE +var test_variant_array_int: Array = Array[int]([]) + hint=TYPE_STRING hint_string="int/ENUM:Red,Green,Blue" usage=DEFAULT|SCRIPT_VARIABLE +var test_variant_packed_int32_array: PackedInt32Array = PackedInt32Array() + hint=TYPE_STRING hint_string="int/ENUM:Red,Green,Blue" usage=DEFAULT|SCRIPT_VARIABLE +var test_variant_array_string: Array = Array[String]([]) + hint=TYPE_STRING hint_string="String/ENUM:Red,Green,Blue" usage=DEFAULT|SCRIPT_VARIABLE +var test_variant_packed_string_array: PackedStringArray = PackedStringArray() + hint=TYPE_STRING hint_string="String/ENUM:Red,Green,Blue" usage=DEFAULT|SCRIPT_VARIABLE diff --git a/modules/gdscript/tests/scripts/parser/features/export_variable.out b/modules/gdscript/tests/scripts/parser/features/export_variable.out index baadcd4ee8..b3f9d0ca9c 100644 --- a/modules/gdscript/tests/scripts/parser/features/export_variable.out +++ b/modules/gdscript/tests/scripts/parser/features/export_variable.out @@ -24,4 +24,4 @@ var test_node_path: NodePath = NodePath("hello") var test_node: Node = null hint=NODE_TYPE hint_string="Node" usage=DEFAULT|SCRIPT_VARIABLE var test_node_array: Array = Array[Node]([]) - hint=TYPE_STRING hint_string="24/34:Node" usage=DEFAULT|SCRIPT_VARIABLE + hint=TYPE_STRING hint_string="Object/NODE_TYPE:Node" usage=DEFAULT|SCRIPT_VARIABLE diff --git a/modules/gdscript/tests/scripts/utils.notest.gd b/modules/gdscript/tests/scripts/utils.notest.gd index 31818c9d01..1cf46c179e 100644 --- a/modules/gdscript/tests/scripts/utils.notest.gd +++ b/modules/gdscript/tests/scripts/utils.notest.gd @@ -39,11 +39,46 @@ static func get_property_signature(property: Dictionary, base: Object = null, is return result +static func get_human_readable_hint_string(property: Dictionary) -> String: + if property.type >= TYPE_ARRAY and property.hint == PROPERTY_HINT_TYPE_STRING: + var type_hint_prefixes: String = "" + var hint_string: String = property.hint_string + + while true: + if not hint_string.contains(":"): + push_error("Invalid PROPERTY_HINT_TYPE_STRING format.") + var elem_type_hint: String = hint_string.get_slice(":", 0) + hint_string = hint_string.substr(elem_type_hint.length() + 1) + + var elem_type: int + var elem_hint: int + + if elem_type_hint.is_valid_int(): + elem_type = elem_type_hint.to_int() + type_hint_prefixes += type_string(elem_type) + ":" + else: + if elem_type_hint.count("/") != 1: + push_error("Invalid PROPERTY_HINT_TYPE_STRING format.") + elem_type = elem_type_hint.get_slice("/", 0).to_int() + elem_hint = elem_type_hint.get_slice("/", 1).to_int() + type_hint_prefixes += "%s/%s:" % [ + type_string(elem_type), + get_property_hint_name(elem_hint).trim_prefix("PROPERTY_HINT_"), + ] + + if elem_type < TYPE_ARRAY: + break + + return type_hint_prefixes + hint_string + + return property.hint_string + + static func print_property_extended_info(property: Dictionary, base: Object = null, is_static: bool = false) -> void: print(get_property_signature(property, base, is_static)) print(' hint=%s hint_string="%s" usage=%s' % [ get_property_hint_name(property.hint).trim_prefix("PROPERTY_HINT_"), - str(property.hint_string).c_escape(), + get_human_readable_hint_string(property), get_property_usage_string(property.usage).replace("PROPERTY_USAGE_", ""), ]) |