diff options
Diffstat (limited to 'modules/gdscript/tests/scripts')
19 files changed, 284 insertions, 25 deletions
diff --git a/modules/gdscript/tests/scripts/analyzer/features/warning_ignore_annotation.gd b/modules/gdscript/tests/scripts/analyzer/features/warning_ignore_annotation.gd deleted file mode 100644 index 292db30bcd..0000000000 --- a/modules/gdscript/tests/scripts/analyzer/features/warning_ignore_annotation.gd +++ /dev/null @@ -1,15 +0,0 @@ -@warning_ignore("unused_private_class_variable") -var _unused = 2 - -@warning_ignore("unused_variable") -func test(): - print("test") - var unused = 3 - - @warning_ignore("redundant_await") - print(await regular_func()) - - print("done") - -func regular_func() -> int: - return 0 diff --git a/modules/gdscript/tests/scripts/analyzer/features/warning_ignore_annotation.out b/modules/gdscript/tests/scripts/analyzer/features/warning_ignore_annotation.out deleted file mode 100644 index 42292774a0..0000000000 --- a/modules/gdscript/tests/scripts/analyzer/features/warning_ignore_annotation.out +++ /dev/null @@ -1,4 +0,0 @@ -GDTEST_OK -test -0 -done diff --git a/modules/gdscript/tests/scripts/analyzer/features/warning_ignore_targets.gd b/modules/gdscript/tests/scripts/analyzer/features/warning_ignore_targets.gd new file mode 100644 index 0000000000..10eca33647 --- /dev/null +++ b/modules/gdscript/tests/scripts/analyzer/features/warning_ignore_targets.gd @@ -0,0 +1,35 @@ +@warning_ignore("confusable_identifier") +class MyClАss: + var my_vАr + +@warning_ignore("narrowing_conversion") +var i: int = f: + get: + return f + +var f: float + +@warning_ignore("narrowing_conversion") +func test_func(_i: int = f): + i = f + +func test(): + @warning_ignore("narrowing_conversion") + if signi(f): # TODO: Allow `@warning_ignore` before `elif`? + i = f + + @warning_ignore("narrowing_conversion") + match signi(f): + 1: + i = f + @warning_ignore("confusable_identifier") + var my_vАr: + var _my_vАr: Variant = my_vАr + + @warning_ignore("narrowing_conversion") + for j in signi(f): + i = f + + @warning_ignore("narrowing_conversion") + while signi(f): + i = f diff --git a/modules/gdscript/tests/scripts/analyzer/features/warning_ignore_targets.out b/modules/gdscript/tests/scripts/analyzer/features/warning_ignore_targets.out new file mode 100644 index 0000000000..032af0322b --- /dev/null +++ b/modules/gdscript/tests/scripts/analyzer/features/warning_ignore_targets.out @@ -0,0 +1,29 @@ +GDTEST_OK +>> WARNING +>> Line: 3 +>> CONFUSABLE_IDENTIFIER +>> The identifier "my_vАr" has misleading characters and might be confused with something else. +>> WARNING +>> Line: 8 +>> NARROWING_CONVERSION +>> Narrowing conversion (float is converted to int and loses precision). +>> WARNING +>> Line: 19 +>> NARROWING_CONVERSION +>> Narrowing conversion (float is converted to int and loses precision). +>> WARNING +>> Line: 24 +>> NARROWING_CONVERSION +>> Narrowing conversion (float is converted to int and loses precision). +>> WARNING +>> Line: 27 +>> CONFUSABLE_IDENTIFIER +>> The identifier "_my_vАr" has misleading characters and might be confused with something else. +>> WARNING +>> Line: 31 +>> NARROWING_CONVERSION +>> Narrowing conversion (float is converted to int and loses precision). +>> WARNING +>> Line: 35 +>> NARROWING_CONVERSION +>> Narrowing conversion (float is converted to int and loses precision). diff --git a/modules/gdscript/tests/scripts/analyzer/features/warning_ignore_warnings.gd b/modules/gdscript/tests/scripts/analyzer/features/warning_ignore_warnings.gd new file mode 100644 index 0000000000..8a1ab6f406 --- /dev/null +++ b/modules/gdscript/tests/scripts/analyzer/features/warning_ignore_warnings.gd @@ -0,0 +1,156 @@ +@warning_ignore("redundant_static_unload") +@static_unload +extends Node + +class A extends Node: + static func static_called_on_instance(): + pass + + @warning_ignore("get_node_default_without_onready") + var get_node_default_without_onready = $Node + +@warning_ignore("unused_private_class_variable") +var _unused_private_class_variable + +@warning_ignore("onready_with_export") +@onready @export var onready_with_export = 1 + +var shadowed_variable +var confusable_local_usage + +@warning_ignore("unused_signal") +signal unused_signal() + +func variant_func() -> Variant: + return null + +func int_func() -> int: + return 1 + +@warning_ignore("unused_parameter") +func test_warnings(unused_private_class_variable): + var t = 1 + + @warning_ignore("unassigned_variable") + var unassigned_variable + print(unassigned_variable) + + var _unassigned_variable_op_assign + @warning_ignore("unassigned_variable_op_assign") + _unassigned_variable_op_assign += t + + @warning_ignore("unused_variable") + var unused_variable + + @warning_ignore("unused_local_constant") + const unused_local_constant = 1 + + @warning_ignore("shadowed_variable") + var shadowed_variable = 1 + print(shadowed_variable) + + @warning_ignore("shadowed_variable_base_class") + var name = "test" + print(name) + + @warning_ignore("shadowed_global_identifier") + var var_to_str = 1 + print(var_to_str) + + @warning_ignore("standalone_expression") + 1 + 2 + + @warning_ignore("standalone_ternary") + 1 if 2 else 3 + + @warning_ignore("incompatible_ternary") + t = 1 if 2 else false + + @warning_ignore("unsafe_property_access") + self.unsafe_property_access = 1 + + var node: Node = null + @warning_ignore("unsafe_method_access") + node.unsafe_method_access() + + @warning_ignore("unsafe_cast") + print(variant_func().x as int) + + var key: Variant = "key" + @warning_ignore("unsafe_call_argument") + set(key, 1) + + variant_func() # No warning (intended?). + @warning_ignore("return_value_discarded") + int_func() + + var a: A = null + @warning_ignore("static_called_on_instance") + a.static_called_on_instance() + + @warning_ignore("redundant_await") + await 1 + + @warning_ignore("assert_always_true") + assert(true) + + assert(false) # No warning (intended). + @warning_ignore("assert_always_false") + assert(false and false) + + @warning_ignore("integer_division") + var _integer_division = 5 / 2 + + @warning_ignore("narrowing_conversion") + var _narrowing_conversion: int = floorf(2.5) + + @warning_ignore("int_as_enum_without_cast") + var _int_as_enum_without_cast: Variant.Type = 1 + + @warning_ignore("int_as_enum_without_cast", "int_as_enum_without_match") + var _int_as_enum_without_match: Variant.Type = 255 + + @warning_ignore("confusable_identifier") + var _cОnfusable_identifier = 1 + + if true: + @warning_ignore("confusable_local_declaration") + var _confusable_local_declaration = 1 + var _confusable_local_declaration = 2 + + @warning_ignore("confusable_local_usage") + print(confusable_local_usage) + @warning_ignore("shadowed_variable") + var confusable_local_usage = 2 + print(confusable_local_usage) + + @warning_ignore("inference_on_variant") + var _inference_on_variant := variant_func() + +func test_unreachable_code(): + return + @warning_ignore("unreachable_code") + print(1) + +func test_unreachable_pattern(): + match 1: + _: + print(0) + @warning_ignore("unreachable_pattern") + 1: + print(1) + +func test_unsafe_void_return_variant() -> void: + return variant_func() # No warning (intended?). + +func test_unsafe_void_return() -> void: + @warning_ignore("unsafe_method_access", "unsafe_void_return") + return variant_func().f() + +@warning_ignore("native_method_override") +func get_class(): + pass + +# We don't want to execute it because of errors, just analyze. +func test(): + pass diff --git a/modules/gdscript/tests/scripts/analyzer/features/warning_ignore_warnings.out b/modules/gdscript/tests/scripts/analyzer/features/warning_ignore_warnings.out new file mode 100644 index 0000000000..d73c5eb7cd --- /dev/null +++ b/modules/gdscript/tests/scripts/analyzer/features/warning_ignore_warnings.out @@ -0,0 +1 @@ +GDTEST_OK diff --git a/modules/gdscript/tests/scripts/analyzer/warnings/unused_private_class_variable.out b/modules/gdscript/tests/scripts/analyzer/warnings/unused_private_class_variable.out index fd88d23950..c902676a5d 100644 --- a/modules/gdscript/tests/scripts/analyzer/warnings/unused_private_class_variable.out +++ b/modules/gdscript/tests/scripts/analyzer/warnings/unused_private_class_variable.out @@ -2,8 +2,8 @@ GDTEST_OK >> WARNING >> Line: 3 >> UNUSED_PRIVATE_CLASS_VARIABLE ->> The class variable "_a" is declared but never used in the script. +>> The class variable "_a" is declared but never used in the class. >> WARNING >> Line: 7 >> UNUSED_PRIVATE_CLASS_VARIABLE ->> The class variable "_d" is declared but never used in the script. +>> The class variable "_d" is declared but never used in the class. diff --git a/modules/gdscript/tests/scripts/analyzer/warnings/unused_signal.gd b/modules/gdscript/tests/scripts/analyzer/warnings/unused_signal.gd new file mode 100644 index 0000000000..d937dfdcfe --- /dev/null +++ b/modules/gdscript/tests/scripts/analyzer/warnings/unused_signal.gd @@ -0,0 +1,12 @@ +signal s1() +signal s2() +signal s3() +@warning_ignore("unused_signal") +signal s4() + +func no_exec(): + s1.emit() + print(s2) + +func test(): + pass diff --git a/modules/gdscript/tests/scripts/analyzer/warnings/unused_signal.out b/modules/gdscript/tests/scripts/analyzer/warnings/unused_signal.out new file mode 100644 index 0000000000..ff57017830 --- /dev/null +++ b/modules/gdscript/tests/scripts/analyzer/warnings/unused_signal.out @@ -0,0 +1,5 @@ +GDTEST_OK +>> WARNING +>> Line: 3 +>> UNUSED_SIGNAL +>> The signal "s3" is declared but never explicitly used in the class. 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/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/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/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/runtime/features/member_info.gd b/modules/gdscript/tests/scripts/runtime/features/member_info.gd index 6fe9647b4d..d7485f49e6 100644 --- a/modules/gdscript/tests/scripts/runtime/features/member_info.gd +++ b/modules/gdscript/tests/scripts/runtime/features/member_info.gd @@ -56,6 +56,16 @@ signal test_signal_6(a: Resource, b: Array[Resource]) signal test_signal_7(a: TestMemberInfo, b: Array[TestMemberInfo]) signal test_signal_8(a: MyClass, b: Array[MyClass]) +func no_exec(): + test_signal_1.emit() + test_signal_2.emit() + test_signal_3.emit() + test_signal_4.emit() + test_signal_5.emit() + test_signal_6.emit() + test_signal_7.emit() + test_signal_8.emit() + func test(): var script: Script = get_script() for property in script.get_property_list(): diff --git a/modules/gdscript/tests/scripts/runtime/features/member_info_inheritance.gd b/modules/gdscript/tests/scripts/runtime/features/member_info_inheritance.gd index 563c6ce569..ee5c1e1267 100644 --- a/modules/gdscript/tests/scripts/runtime/features/member_info_inheritance.gd +++ b/modules/gdscript/tests/scripts/runtime/features/member_info_inheritance.gd @@ -11,7 +11,9 @@ class A: static func test_static_func_a2(): pass func test_func_a1(): pass func test_func_a2(): pass + @warning_ignore("unused_signal") signal test_signal_a1() + @warning_ignore("unused_signal") signal test_signal_a2() class B extends A: @@ -23,7 +25,9 @@ class B extends A: static func test_static_func_b2(): pass func test_func_b1(): pass func test_func_b2(): pass + @warning_ignore("unused_signal") signal test_signal_b1() + @warning_ignore("unused_signal") signal test_signal_b2() func test(): |