1
0
mirror of https://github.com/godotengine/godot.git synced 2025-12-06 17:25:19 +00:00

GDScript: Fix @warning_ignore annotation issues

This commit is contained in:
Danil Alexeev
2024-02-28 17:23:11 +03:00
parent 61282068f4
commit ef1909fca3
25 changed files with 603 additions and 209 deletions

View File

@@ -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

View File

@@ -1,4 +0,0 @@
GDTEST_OK
test
0
done

View File

@@ -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

View File

@@ -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).

View File

@@ -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

View File

@@ -0,0 +1 @@
GDTEST_OK

View File

@@ -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.

View File

@@ -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

View File

@@ -0,0 +1,5 @@
GDTEST_OK
>> WARNING
>> Line: 3
>> UNUSED_SIGNAL
>> The signal "s3" is declared but never explicitly used in the class.

View File

@@ -1,2 +1,2 @@
GDTEST_ANALYZER_ERROR
GDTEST_PARSER_ERROR
"@tool" annotation can only be used once.

View File

@@ -4,6 +4,7 @@ class Parent:
var parent_variable := 2
@warning_ignore("unused_signal")
signal parent_signal
var parent_attribute: int:

View File

@@ -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()

View File

@@ -14,3 +14,6 @@ func test():
print("This won't match")
_:
print("This will match")
match 0:
pass

View File

@@ -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")

View File

@@ -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.

View File

@@ -0,0 +1,3 @@
func test():
1 if true else 2
print(1) if true else print(2)

View File

@@ -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

View File

@@ -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():

View File

@@ -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():