GDScript: Add @warning_ignore_start and @warning_ignore_restore annotations

This commit is contained in:
Danil Alexeev 2024-12-06 10:25:59 +03:00
parent eb5103093c
commit 7d65d0a908
No known key found for this signature in database
GPG key ID: 5A52F75A8679EC57
22 changed files with 221 additions and 89 deletions

View file

@ -13,7 +13,7 @@ func param_inferred(param := variant()) -> void: print(param)
func return_untyped(): return variant()
func return_typed() -> Variant: return variant()
@warning_ignore("unused_variable", "inference_on_variant")
@warning_ignore_start("unused_variable", "inference_on_variant")
func test() -> void:
var weak = variant()
var typed: Variant = variant()
@ -32,4 +32,4 @@ func test() -> void:
if typed != null: pass
if typed is Node: pass
print('ok')
print("ok")

View file

@ -123,4 +123,4 @@ func test():
Utils.check((const_null is A) == false)
Utils.check(is_instance_of(const_null, A) == false)
print('ok')
print("ok")

View file

@ -20,9 +20,7 @@ class Members:
Utils.check(str(two) == '[486]')
return true
@warning_ignore("unsafe_method_access")
@warning_ignore("return_value_discarded")
@warning_ignore_start('unsafe_method_access', 'return_value_discarded')
func test():
var untyped_basic = [459]
Utils.check(str(untyped_basic) == '[459]')
@ -207,7 +205,7 @@ func test():
var a := A.new()
var typed_natives: Array[RefCounted] = [a]
var typed_scripts = Array(typed_natives, TYPE_OBJECT, "RefCounted", A)
var typed_scripts = Array(typed_natives, TYPE_OBJECT, 'RefCounted', A)
Utils.check(typed_scripts[0] == a)

View file

@ -21,9 +21,7 @@ class Members:
return true
@warning_ignore("unsafe_method_access")
@warning_ignore("assert_always_true")
@warning_ignore("return_value_discarded")
@warning_ignore_start("unsafe_method_access", "return_value_discarded")
func test():
var untyped_basic = { 459: 954 }
Utils.check(str(untyped_basic) == '{ 459: 954 }')

View file

@ -1,6 +1,6 @@
signal ok()
@warning_ignore("return_value_discarded")
@warning_ignore_start("return_value_discarded")
func test():
ok.connect(func(): print('ok'))
emit_signal(&'ok')
ok.connect(func(): print("ok"))
emit_signal(&"ok")

View file

@ -1,6 +1,7 @@
GDTEST_OK
~~ WARNING at line 3: (CONFUSABLE_IDENTIFIER) The identifier "my_vАr" has misleading characters and might be confused with something else.
~~ WARNING at line 8: (NARROWING_CONVERSION) Narrowing conversion (float is converted to int and loses precision).
~~ WARNING at line 14: (NARROWING_CONVERSION) Narrowing conversion (float is converted to int and loses precision).
~~ WARNING at line 19: (NARROWING_CONVERSION) Narrowing conversion (float is converted to int and loses precision).
~~ WARNING at line 24: (NARROWING_CONVERSION) Narrowing conversion (float is converted to int and loses precision).
~~ WARNING at line 27: (CONFUSABLE_IDENTIFIER) The identifier "_my_vАr" has misleading characters and might be confused with something else.

View file

@ -4,11 +4,10 @@ extends ShadowingBase
var member: int = 0
var print_debug := 'print_debug'
@warning_ignore("shadowed_global_identifier")
@warning_ignore('shadowed_global_identifier')
var print := 'print'
@warning_ignore("unused_variable")
@warning_ignore("unused_local_constant")
@warning_ignore_start('unused_variable', 'unused_local_constant')
func test():
var Array := 'Array'
var Node := 'Node'

View file

@ -1,13 +1,13 @@
GDTEST_OK
~~ WARNING at line 6: (SHADOWED_GLOBAL_IDENTIFIER) The variable "print_debug" has the same name as a built-in function.
~~ WARNING at line 13: (SHADOWED_GLOBAL_IDENTIFIER) The variable "Array" has the same name as a built-in type.
~~ WARNING at line 14: (SHADOWED_GLOBAL_IDENTIFIER) The variable "Node" has the same name as a native class.
~~ WARNING at line 15: (SHADOWED_GLOBAL_IDENTIFIER) The variable "is_same" has the same name as a built-in function.
~~ WARNING at line 16: (SHADOWED_GLOBAL_IDENTIFIER) The variable "sqrt" has the same name as a built-in function.
~~ WARNING at line 17: (SHADOWED_VARIABLE) The local variable "member" is shadowing an already-declared variable at line 4 in the current class.
~~ WARNING at line 18: (SHADOWED_VARIABLE_BASE_CLASS) The local variable "reference" is shadowing an already-declared method in the base class "RefCounted".
~~ WARNING at line 19: (SHADOWED_GLOBAL_IDENTIFIER) The variable "ShadowedClass" has the same name as a global class defined in "shadowning.gd".
~~ WARNING at line 20: (SHADOWED_VARIABLE_BASE_CLASS) The local variable "base_variable_member" is shadowing an already-declared variable at line 4 in the base class "ShadowingBase".
~~ WARNING at line 21: (SHADOWED_VARIABLE_BASE_CLASS) The local constant "base_function_member" is shadowing an already-declared function at line 6 in the base class "ShadowingBase".
~~ WARNING at line 22: (SHADOWED_VARIABLE_BASE_CLASS) The local variable "base_const_member" is shadowing an already-declared constant at line 3 in the base class "ShadowingBase".
~~ WARNING at line 12: (SHADOWED_GLOBAL_IDENTIFIER) The variable "Array" has the same name as a built-in type.
~~ WARNING at line 13: (SHADOWED_GLOBAL_IDENTIFIER) The variable "Node" has the same name as a native class.
~~ WARNING at line 14: (SHADOWED_GLOBAL_IDENTIFIER) The variable "is_same" has the same name as a built-in function.
~~ WARNING at line 15: (SHADOWED_GLOBAL_IDENTIFIER) The variable "sqrt" has the same name as a built-in function.
~~ WARNING at line 16: (SHADOWED_VARIABLE) The local variable "member" is shadowing an already-declared variable at line 4 in the current class.
~~ WARNING at line 17: (SHADOWED_VARIABLE_BASE_CLASS) The local variable "reference" is shadowing an already-declared method in the base class "RefCounted".
~~ WARNING at line 18: (SHADOWED_GLOBAL_IDENTIFIER) The variable "ShadowedClass" has the same name as a global class defined in "shadowning.gd".
~~ WARNING at line 19: (SHADOWED_VARIABLE_BASE_CLASS) The local variable "base_variable_member" is shadowing an already-declared variable at line 4 in the base class "ShadowingBase".
~~ WARNING at line 20: (SHADOWED_VARIABLE_BASE_CLASS) The local constant "base_function_member" is shadowing an already-declared function at line 6 in the base class "ShadowingBase".
~~ WARNING at line 21: (SHADOWED_VARIABLE_BASE_CLASS) The local variable "base_const_member" is shadowing an already-declared constant at line 3 in the base class "ShadowingBase".
warn

View file

@ -0,0 +1,5 @@
@warning_ignore_start("unreachable_code")
@warning_ignore_start("unreachable_code")
func test():
pass

View file

@ -0,0 +1,2 @@
GDTEST_PARSER_ERROR
Warning "UNREACHABLE_CODE" is already being ignored by "@warning_ignore_start" at line 1.

View file

@ -0,0 +1,4 @@
@warning_ignore_restore("unreachable_code")
func test():
pass

View file

@ -0,0 +1,2 @@
GDTEST_PARSER_ERROR
Warning "UNREACHABLE_CODE" is not being ignored by "@warning_ignore_start".

View file

@ -1,6 +1,6 @@
# https://github.com/godotengine/godot/issues/50285
@warning_ignore("unused_local_constant")
@warning_ignore_start("unused_local_constant")
func test():
const CONST_INNER_DICTIONARY = { "key": true }
const CONST_NESTED_DICTIONARY_OLD_WORKAROUND = {

View file

@ -1,3 +1,5 @@
@warning_ignore_start("unused_signal")
# No parentheses.
signal a
@ -17,12 +19,5 @@ signal d(
# 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")

View file

@ -0,0 +1,26 @@
@warning_ignore_start("unreachable_code", "narrowing_conversion")
var _a = 1
@warning_ignore_start("unused_private_class_variable")
var _b = 2
var _c = 3
@warning_ignore_restore("unused_private_class_variable")
var _d = 4
func test():
return
var a = 1
@warning_ignore_start("unused_variable")
var b = 2
var c = 3
@warning_ignore_restore("unused_variable")
var d = 4
var _x: int = 1.0
@warning_ignore_restore("narrowing_conversion")
var _y: int = 1.0
func test_2():
return
print(42)

View file

@ -0,0 +1,6 @@
GDTEST_OK
~~ WARNING at line 3: (UNUSED_PRIVATE_CLASS_VARIABLE) The class variable "_a" is declared but never used in the class.
~~ WARNING at line 8: (UNUSED_PRIVATE_CLASS_VARIABLE) The class variable "_d" is declared but never used in the class.
~~ WARNING at line 13: (UNUSED_VARIABLE) The local variable "a" is declared but never used in the block. If this is intended, prefix it with an underscore: "_a".
~~ WARNING at line 18: (UNUSED_VARIABLE) The local variable "d" is declared but never used in the block. If this is intended, prefix it with an underscore: "_d".
~~ WARNING at line 22: (NARROWING_CONVERSION) Narrowing conversion (float is converted to int and loses precision).

View file

@ -1,6 +1,6 @@
# https://github.com/godotengine/godot/issues/75832
@warning_ignore("narrowing_conversion")
@warning_ignore_start("narrowing_conversion")
func test():
var hf := 2.0
var sf = 2.0

View file

@ -56,6 +56,7 @@ func test_func_hard_int() -> int: return 1
func test_func_args_1(_a: int, _b: Array[int], _c: Dictionary[int, int], _d: int = 1, _e = 2): pass
func test_func_args_2(_a = 1, _b = _a, _c = [2], _d = 3): pass
@warning_ignore_start("unused_signal")
signal test_signal_1()
signal test_signal_2(a: Variant, b)
signal test_signal_3(a: int, b: Array[int], c: Dictionary[int, int])
@ -64,16 +65,7 @@ signal test_signal_5(a: MyEnum, b: Array[MyEnum], c: Dictionary[MyEnum, MyEnum])
signal test_signal_6(a: Resource, b: Array[Resource], c: Dictionary[Resource, Resource])
signal test_signal_7(a: TestMemberInfo, b: Array[TestMemberInfo], c: Dictionary[TestMemberInfo, TestMemberInfo])
signal test_signal_8(a: MyClass, b: Array[MyClass], c: Dictionary[MyClass, 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()
@warning_ignore_restore("unused_signal")
func test():
var script: Script = get_script()