diff options
Diffstat (limited to 'modules/gdscript/tests/scripts/parser')
31 files changed, 472 insertions, 82 deletions
diff --git a/modules/gdscript/tests/scripts/parser/errors/dollar-assignment-bug-53696.gd b/modules/gdscript/tests/scripts/parser/errors/dollar_assignment_bug_53696.gd index e9690ee93d..e9690ee93d 100644 --- a/modules/gdscript/tests/scripts/parser/errors/dollar-assignment-bug-53696.gd +++ b/modules/gdscript/tests/scripts/parser/errors/dollar_assignment_bug_53696.gd diff --git a/modules/gdscript/tests/scripts/parser/errors/dollar-assignment-bug-53696.out b/modules/gdscript/tests/scripts/parser/errors/dollar_assignment_bug_53696.out index 9fafcb5a64..9fafcb5a64 100644 --- a/modules/gdscript/tests/scripts/parser/errors/dollar-assignment-bug-53696.out +++ b/modules/gdscript/tests/scripts/parser/errors/dollar_assignment_bug_53696.out diff --git a/modules/gdscript/tests/scripts/parser/errors/duplicate_tool.out b/modules/gdscript/tests/scripts/parser/errors/duplicate_tool.out index 26fe23fb78..497d361204 100644 --- a/modules/gdscript/tests/scripts/parser/errors/duplicate_tool.out +++ b/modules/gdscript/tests/scripts/parser/errors/duplicate_tool.out @@ -1,2 +1,2 @@ -GDTEST_ANALYZER_ERROR +GDTEST_PARSER_ERROR "@tool" annotation can only be used once. 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/errors/mixing_tabs_spaces.gd b/modules/gdscript/tests/scripts/parser/errors/mixing_tabs_spaces.textonly.gd index 9ad77f1432..9ad77f1432 100644 --- a/modules/gdscript/tests/scripts/parser/errors/mixing_tabs_spaces.gd +++ b/modules/gdscript/tests/scripts/parser/errors/mixing_tabs_spaces.textonly.gd diff --git a/modules/gdscript/tests/scripts/parser/errors/mixing_tabs_spaces.out b/modules/gdscript/tests/scripts/parser/errors/mixing_tabs_spaces.textonly.out index 31bed2dbc7..31bed2dbc7 100644 --- a/modules/gdscript/tests/scripts/parser/errors/mixing_tabs_spaces.out +++ b/modules/gdscript/tests/scripts/parser/errors/mixing_tabs_spaces.textonly.out diff --git a/modules/gdscript/tests/scripts/parser/features/annotations.gd b/modules/gdscript/tests/scripts/parser/features/annotations.gd index 13c89a0a09..7a7d6d953e 100644 --- a/modules/gdscript/tests/scripts/parser/features/annotations.gd +++ b/modules/gdscript/tests/scripts/parser/features/annotations.gd @@ -1,48 +1,49 @@ extends Node -@export_enum("A", "B", "C") var a0 -@export_enum("A", "B", "C",) var a1 +const Utils = preload("../../utils.notest.gd") + +@export_enum("A", "B", "C") var test_1 +@export_enum("A", "B", "C",) var test_2 @export_enum( "A", "B", "C" -) var a2 +) var test_3 @export_enum( "A", "B", "C", -) var a3 +) var test_4 @export -var a4: int +var test_5: int @export() -var a5: int +var test_6: int -@export() var a6: int -@warning_ignore("onready_with_export") @onready @export var a7: int -@warning_ignore("onready_with_export") @onready() @export() var a8: int +@export() var test_7: int = 42 +@warning_ignore("onready_with_export") @onready @export var test_8: int = 42 +@warning_ignore("onready_with_export") @onready() @export() var test_9: int = 42 @warning_ignore("onready_with_export") @onready @export -var a9: int +var test_10: int = 42 @warning_ignore("onready_with_export") @onready() @export() -var a10: int +var test_11: int = 42 @warning_ignore("onready_with_export") @onready() @export() -var a11: int - +var test_12: int = 42 func test(): for property in get_property_list(): - if property.usage & PROPERTY_USAGE_SCRIPT_VARIABLE: - print(property) + if str(property.name).begins_with("test_"): + Utils.print_property_extended_info(property, self) diff --git a/modules/gdscript/tests/scripts/parser/features/annotations.out b/modules/gdscript/tests/scripts/parser/features/annotations.out index 3af0436c53..2ba9dd7496 100644 --- a/modules/gdscript/tests/scripts/parser/features/annotations.out +++ b/modules/gdscript/tests/scripts/parser/features/annotations.out @@ -1,13 +1,25 @@ GDTEST_OK -{ "name": "a0", "class_name": &"", "type": 2, "hint": 2, "hint_string": "A,B,C", "usage": 4102 } -{ "name": "a1", "class_name": &"", "type": 2, "hint": 2, "hint_string": "A,B,C", "usage": 4102 } -{ "name": "a2", "class_name": &"", "type": 2, "hint": 2, "hint_string": "A,B,C", "usage": 4102 } -{ "name": "a3", "class_name": &"", "type": 2, "hint": 2, "hint_string": "A,B,C", "usage": 4102 } -{ "name": "a4", "class_name": &"", "type": 2, "hint": 0, "hint_string": "int", "usage": 4102 } -{ "name": "a5", "class_name": &"", "type": 2, "hint": 0, "hint_string": "int", "usage": 4102 } -{ "name": "a6", "class_name": &"", "type": 2, "hint": 0, "hint_string": "int", "usage": 4102 } -{ "name": "a7", "class_name": &"", "type": 2, "hint": 0, "hint_string": "int", "usage": 4102 } -{ "name": "a8", "class_name": &"", "type": 2, "hint": 0, "hint_string": "int", "usage": 4102 } -{ "name": "a9", "class_name": &"", "type": 2, "hint": 0, "hint_string": "int", "usage": 4102 } -{ "name": "a10", "class_name": &"", "type": 2, "hint": 0, "hint_string": "int", "usage": 4102 } -{ "name": "a11", "class_name": &"", "type": 2, "hint": 0, "hint_string": "int", "usage": 4102 } +var test_1: int = null + hint=ENUM hint_string="A,B,C" usage=DEFAULT|SCRIPT_VARIABLE +var test_2: int = null + hint=ENUM hint_string="A,B,C" usage=DEFAULT|SCRIPT_VARIABLE +var test_3: int = null + hint=ENUM hint_string="A,B,C" usage=DEFAULT|SCRIPT_VARIABLE +var test_4: int = null + hint=ENUM hint_string="A,B,C" usage=DEFAULT|SCRIPT_VARIABLE +var test_5: int = 0 + hint=NONE hint_string="int" usage=DEFAULT|SCRIPT_VARIABLE +var test_6: int = 0 + hint=NONE hint_string="int" usage=DEFAULT|SCRIPT_VARIABLE +var test_7: int = 42 + hint=NONE hint_string="int" usage=DEFAULT|SCRIPT_VARIABLE +var test_8: int = 0 + hint=NONE hint_string="int" usage=DEFAULT|SCRIPT_VARIABLE +var test_9: int = 0 + hint=NONE hint_string="int" usage=DEFAULT|SCRIPT_VARIABLE +var test_10: int = 0 + hint=NONE hint_string="int" usage=DEFAULT|SCRIPT_VARIABLE +var test_11: int = 0 + hint=NONE hint_string="int" usage=DEFAULT|SCRIPT_VARIABLE +var test_12: int = 0 + hint=NONE hint_string="int" usage=DEFAULT|SCRIPT_VARIABLE diff --git a/modules/gdscript/tests/scripts/parser/features/class_inheritance_access.gd b/modules/gdscript/tests/scripts/parser/features/class_inheritance_access.gd index eb392672eb..2e1407237f 100644 --- a/modules/gdscript/tests/scripts/parser/features/class_inheritance_access.gd +++ b/modules/gdscript/tests/scripts/parser/features/class_inheritance_access.gd @@ -4,6 +4,7 @@ class Parent: var parent_variable := 2 + @warning_ignore("unused_signal") signal parent_signal var parent_attribute: int: 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 9b2c22dea1..7f0737f4db 100644 --- a/modules/gdscript/tests/scripts/parser/features/export_enum.gd +++ b/modules/gdscript/tests/scripts/parser/features/export_enum.gd @@ -1,15 +1,37 @@ -@export_enum("Red", "Green", "Blue") var untyped +const Utils = preload("../../utils.notest.gd") -@export_enum("Red", "Green", "Blue") var weak_int = 0 -@export_enum("Red", "Green", "Blue") var weak_string = "" +@export_enum("Red", "Green", "Blue") var test_untyped +@export_enum("Red:10", "Green:20", "Blue:30") var test_with_values -@export_enum("Red", "Green", "Blue") var hard_int: int -@export_enum("Red", "Green", "Blue") var hard_string: String +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:10", "Green:20", "Blue:30") var with_values +@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", "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(): - if property.name in ["untyped", "weak_int", "weak_string", "hard_int", - "hard_string", "with_values"]: - prints(property.name, property.type, property.hint_string) + if str(property.name).begins_with("test_"): + Utils.print_property_extended_info(property, self) diff --git a/modules/gdscript/tests/scripts/parser/features/export_enum.out b/modules/gdscript/tests/scripts/parser/features/export_enum.out index 330b7eaf01..c87f9b17f0 100644 --- a/modules/gdscript/tests/scripts/parser/features/export_enum.out +++ b/modules/gdscript/tests/scripts/parser/features/export_enum.out @@ -1,7 +1,41 @@ GDTEST_OK -untyped 2 Red,Green,Blue -weak_int 2 Red,Green,Blue -weak_string 4 Red,Green,Blue -hard_int 2 Red,Green,Blue -hard_string 4 Red,Green,Blue -with_values 2 Red:10,Green:20,Blue:30 +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_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.gd b/modules/gdscript/tests/scripts/parser/features/export_variable.gd index c9d05a7e68..2a218774de 100644 --- a/modules/gdscript/tests/scripts/parser/features/export_variable.gd +++ b/modules/gdscript/tests/scripts/parser/features/export_variable.gd @@ -1,23 +1,22 @@ extends Node -@export var example = 99 -@export_range(0, 100) var example_range = 100 -@export_range(0, 100, 1) var example_range_step = 101 -@export_range(0, 100, 1, "or_greater") var example_range_step_or_greater = 102 +const Utils = preload("../../utils.notest.gd") -@export var color: Color -@export_color_no_alpha var color_no_alpha: Color -@export_node_path("Sprite2D", "Sprite3D", "Control", "Node") var nodepath := ^"hello" -@export var node: Node -@export var node_array: Array[Node] +@export var test_weak_int = 1 +@export var test_hard_int: int = 2 +@export_storage var test_storage_untyped +@export_storage var test_storage_weak_int = 3 # Property info still `Variant`, unlike `@export`. +@export_storage var test_storage_hard_int: int = 4 +@export_range(0, 100) var test_range = 100 +@export_range(0, 100, 1) var test_range_step = 101 +@export_range(0, 100, 1, "or_greater") var test_range_step_or_greater = 102 +@export var test_color: Color +@export_color_no_alpha var test_color_no_alpha: Color +@export_node_path("Sprite2D", "Sprite3D", "Control", "Node") var test_node_path := ^"hello" +@export var test_node: Node +@export var test_node_array: Array[Node] func test(): - print(example) - print(example_range) - print(example_range_step) - print(example_range_step_or_greater) - print(color) - print(color_no_alpha) - print(nodepath) - print(node) - print(var_to_str(node_array)) + for property in get_property_list(): + if str(property.name).begins_with("test_"): + Utils.print_property_extended_info(property, self) diff --git a/modules/gdscript/tests/scripts/parser/features/export_variable.out b/modules/gdscript/tests/scripts/parser/features/export_variable.out index 5430c975f4..b3f9d0ca9c 100644 --- a/modules/gdscript/tests/scripts/parser/features/export_variable.out +++ b/modules/gdscript/tests/scripts/parser/features/export_variable.out @@ -1,10 +1,27 @@ GDTEST_OK -99 -100 -101 -102 -(0, 0, 0, 1) -(0, 0, 0, 1) -hello -<null> -Array[Node]([]) +var test_weak_int: int = 1 + hint=NONE hint_string="int" usage=DEFAULT|SCRIPT_VARIABLE +var test_hard_int: int = 2 + hint=NONE hint_string="int" usage=DEFAULT|SCRIPT_VARIABLE +var test_storage_untyped: Variant = null + hint=NONE hint_string="" usage=STORAGE|SCRIPT_VARIABLE|NIL_IS_VARIANT +var test_storage_weak_int: Variant = 3 + hint=NONE hint_string="" usage=STORAGE|SCRIPT_VARIABLE|NIL_IS_VARIANT +var test_storage_hard_int: int = 4 + hint=NONE hint_string="" usage=STORAGE|SCRIPT_VARIABLE +var test_range: int = 100 + hint=RANGE hint_string="0,100" usage=DEFAULT|SCRIPT_VARIABLE +var test_range_step: int = 101 + hint=RANGE hint_string="0,100,1" usage=DEFAULT|SCRIPT_VARIABLE +var test_range_step_or_greater: int = 102 + hint=RANGE hint_string="0,100,1,or_greater" usage=DEFAULT|SCRIPT_VARIABLE +var test_color: Color = Color(0, 0, 0, 1) + hint=NONE hint_string="Color" usage=DEFAULT|SCRIPT_VARIABLE +var test_color_no_alpha: Color = Color(0, 0, 0, 1) + hint=COLOR_NO_ALPHA hint_string="" usage=DEFAULT|SCRIPT_VARIABLE +var test_node_path: NodePath = NodePath("hello") + hint=NODE_PATH_VALID_TYPES hint_string="Sprite2D,Sprite3D,Control,Node" usage=DEFAULT|SCRIPT_VARIABLE +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="Object/NODE_TYPE:Node" usage=DEFAULT|SCRIPT_VARIABLE diff --git a/modules/gdscript/tests/scripts/parser/features/is_not_operator.gd b/modules/gdscript/tests/scripts/parser/features/is_not_operator.gd new file mode 100644 index 0000000000..b744e6170b --- /dev/null +++ b/modules/gdscript/tests/scripts/parser/features/is_not_operator.gd @@ -0,0 +1,11 @@ +func test(): + var i: Variant = 123 + var s: Variant = "str" + prints(i is int, i is not int) + prints(s is int, s is not int) + + var a: Variant = false + var b: Variant = true + prints(a == b is int, a == b is not int) + prints(a == (b is int), a == (b is not int)) + prints((a == b) is int, (a == b) is not int) diff --git a/modules/gdscript/tests/scripts/parser/features/is_not_operator.out b/modules/gdscript/tests/scripts/parser/features/is_not_operator.out new file mode 100644 index 0000000000..f0535f9c83 --- /dev/null +++ b/modules/gdscript/tests/scripts/parser/features/is_not_operator.out @@ -0,0 +1,6 @@ +GDTEST_OK +true false +false true +true false +true false +false true diff --git a/modules/gdscript/tests/scripts/parser/features/lambda_ends_with_new_line.gd b/modules/gdscript/tests/scripts/parser/features/lambda_ends_with_new_line.gd index f16c768f7f..46b6856d22 100644 --- a/modules/gdscript/tests/scripts/parser/features/lambda_ends_with_new_line.gd +++ b/modules/gdscript/tests/scripts/parser/features/lambda_ends_with_new_line.gd @@ -14,6 +14,7 @@ func test(): print(v) print() + @warning_ignore("standalone_ternary") v=func(): print(2) if false else print(3) @warning_ignore("unsafe_cast") (v as Callable).call() diff --git a/modules/gdscript/tests/scripts/parser/features/match.gd b/modules/gdscript/tests/scripts/parser/features/match.gd index 59b5ba2426..a2e93c64fd 100644 --- a/modules/gdscript/tests/scripts/parser/features/match.gd +++ b/modules/gdscript/tests/scripts/parser/features/match.gd @@ -14,3 +14,6 @@ func test(): print("This won't match") _: print("This will match") + + match 0: + pass diff --git a/modules/gdscript/tests/scripts/parser/features/multiline_if.gd b/modules/gdscript/tests/scripts/parser/features/multiline_if.gd index 86152f4543..7b82d9b1da 100644 --- a/modules/gdscript/tests/scripts/parser/features/multiline_if.gd +++ b/modules/gdscript/tests/scripts/parser/features/multiline_if.gd @@ -9,6 +9,7 @@ func test(): # Alternatively, backslashes can be used. if 1 == 1 \ + \ and 2 == 2 and \ 3 == 3: pass diff --git a/modules/gdscript/tests/scripts/parser/features/property_setter_getter.gd b/modules/gdscript/tests/scripts/parser/features/property_setter_getter.gd index 9e4b360fb2..82616ee3cf 100644 --- a/modules/gdscript/tests/scripts/parser/features/property_setter_getter.gd +++ b/modules/gdscript/tests/scripts/parser/features/property_setter_getter.gd @@ -6,6 +6,9 @@ var property: set(value): _backing = value - 1000 +var property_2: + get(): # Allow parentheses. + return 123 func test(): print("Not using self:") @@ -35,3 +38,5 @@ func test(): self.property = 5000 print(self.property) print(self._backing) + + print(property_2) diff --git a/modules/gdscript/tests/scripts/parser/features/property_setter_getter.out b/modules/gdscript/tests/scripts/parser/features/property_setter_getter.out index 560e0c3bd7..23f98f44ab 100644 --- a/modules/gdscript/tests/scripts/parser/features/property_setter_getter.out +++ b/modules/gdscript/tests/scripts/parser/features/property_setter_getter.out @@ -17,3 +17,4 @@ Using self: -50 5000 4000 +123 diff --git a/modules/gdscript/tests/scripts/parser/features/signal_declaration.gd b/modules/gdscript/tests/scripts/parser/features/signal_declaration.gd index e4d6a72f90..d02f82d417 100644 --- a/modules/gdscript/tests/scripts/parser/features/signal_declaration.gd +++ b/modules/gdscript/tests/scripts/parser/features/signal_declaration.gd @@ -1,5 +1,3 @@ -#GDTEST_OK - # No parentheses. signal a @@ -16,5 +14,15 @@ signal d( c, ) +# With type hints. +signal e(a: int, b: Variant, c: Node) + +func no_exec(): + a.emit() + b.emit() + c.emit() + d.emit() + e.emit() + func test(): print("Ok") diff --git a/modules/gdscript/tests/scripts/parser/warnings/incompatible_ternary.out b/modules/gdscript/tests/scripts/parser/warnings/incompatible_ternary.out index 7d1558c6fc..ff3e827255 100644 --- a/modules/gdscript/tests/scripts/parser/warnings/incompatible_ternary.out +++ b/modules/gdscript/tests/scripts/parser/warnings/incompatible_ternary.out @@ -2,4 +2,4 @@ GDTEST_OK >> WARNING >> Line: 8 >> INCOMPATIBLE_TERNARY ->> Values of the ternary conditional are not mutually compatible. +>> Values of the ternary operator are not mutually compatible. diff --git a/modules/gdscript/tests/scripts/parser/warnings/standalone_ternary.gd b/modules/gdscript/tests/scripts/parser/warnings/standalone_ternary.gd new file mode 100644 index 0000000000..9b296e02e1 --- /dev/null +++ b/modules/gdscript/tests/scripts/parser/warnings/standalone_ternary.gd @@ -0,0 +1,3 @@ +func test(): + 1 if true else 2 + print(1) if true else print(2) diff --git a/modules/gdscript/tests/scripts/parser/warnings/standalone_ternary.out b/modules/gdscript/tests/scripts/parser/warnings/standalone_ternary.out new file mode 100644 index 0000000000..477449e0e3 --- /dev/null +++ b/modules/gdscript/tests/scripts/parser/warnings/standalone_ternary.out @@ -0,0 +1,10 @@ +GDTEST_OK +>> WARNING +>> Line: 2 +>> STANDALONE_TERNARY +>> Standalone ternary operator: the return value is being discarded. +>> WARNING +>> Line: 3 +>> STANDALONE_TERNARY +>> Standalone ternary operator: the return value is being discarded. +1 diff --git a/modules/gdscript/tests/scripts/parser/warnings/static_called_on_instance.gd b/modules/gdscript/tests/scripts/parser/warnings/static_called_on_instance.gd index 29d8501b78..193faab5d0 100644 --- a/modules/gdscript/tests/scripts/parser/warnings/static_called_on_instance.gd +++ b/modules/gdscript/tests/scripts/parser/warnings/static_called_on_instance.gd @@ -1,11 +1,23 @@ -class Player: - var x = 3 +class_name TestStaticCalledOnInstance + +class Inner: + static func static_func(): + pass + +static func static_func(): + pass func test(): - # These should not emit a warning. - var _player = Player.new() - print(String.num_uint64(8589934592)) # 2 ^ 33 + print(String.num_uint64(8589934592)) + var some_string := String() + print(some_string.num_uint64(8589934592)) # Warning. + + TestStaticCalledOnInstance.static_func() + static_func() + self.static_func() + var other := TestStaticCalledOnInstance.new() + other.static_func() # Warning. - # This should emit a warning. - var some_string = String() - print(some_string.num_uint64(8589934592)) # 2 ^ 33 + Inner.static_func() + var inner := Inner.new() + inner.static_func() # Warning. diff --git a/modules/gdscript/tests/scripts/parser/warnings/static_called_on_instance.out b/modules/gdscript/tests/scripts/parser/warnings/static_called_on_instance.out index 77994ce9ba..c00f3d093a 100644 --- a/modules/gdscript/tests/scripts/parser/warnings/static_called_on_instance.out +++ b/modules/gdscript/tests/scripts/parser/warnings/static_called_on_instance.out @@ -1,7 +1,15 @@ GDTEST_OK >> WARNING ->> Line: 11 +>> Line: 13 >> STATIC_CALLED_ON_INSTANCE >> The function "num_uint64()" is a static function but was called from an instance. Instead, it should be directly called from the type: "String.num_uint64()". +>> WARNING +>> Line: 19 +>> STATIC_CALLED_ON_INSTANCE +>> The function "static_func()" is a static function but was called from an instance. Instead, it should be directly called from the type: "TestStaticCalledOnInstance.static_func()". +>> WARNING +>> Line: 23 +>> STATIC_CALLED_ON_INSTANCE +>> The function "static_func()" is a static function but was called from an instance. Instead, it should be directly called from the type: "Inner.static_func()". 8589934592 8589934592 |