godot: `@warning_ignore()` annotation don't work with all warnings
Godot version
4.0.dev.custom_build.096a13b3b
System information
Linux, 5.16.0-1-MANJARO
Issue description
The annotation “@warning_ignore” don’t ignore all warnings properly, some are still raised even with the annotation
Properly ignored warnings:
- UNASSIGNED_VARIABLE
- UNUSED_VARIABLE
- UNUSED_LOCAL_CONSTANT
- SHADOWED_VARIABLE
- VOID_ASSIGNMENT
- NARROWING_CONVERSION
- INCOMPATIBLE_TERNARY
- INTEGER_DIVISION
- ASSERT_ALWAYS_TRUE
- ASSERT_ALWAYS_FALSE
- REDUNDANT_AWAIT
Not ignored warnings:
- UNUSED_PARAMETER
- UNASSIGNED_VARIABLE_OP_ASSIGN
- STANDALONE_EXPRESSION
- UNREACHABLE_CODE
Untested warnings:
- SHADOWED_VARIABLE_BASE_CLASS (not sure what it is exactly)
- UNUSED_PRIVATE_CLASS_VARIABLE (don’t know how to make private class variable)
- UNREACHABLE_PATTERN (don’t know what it is)
- STANDALONE_TERNARY (was raised as STANDALONE_EXPRESSION)
- UNUSED_SIGNAL (was not raised)
- RETURN_VALUE_DISCARDED (was not raised)
Steps to reproduce
Use this code as a new script and look at the warning section.
extends Node
@warning_ignore(unused_signal)
signal unused_signal # UNUSED_SIGNAL not shown
signal awaited_signal
class test_entity:
var shadowed_variable
var shadowed_variable_base_class
var property_used_as_function
var active
func void_assign() -> void:
return
func get_two() -> int:
return 2
@warning_ignore(unused_parameter)
func test_function(unused_parameter: int) -> void: # UNUSED_PARAMETER
@warning_ignore(unassigned_variable)
var unassigned_var # UNASSIGNED_VARIABLE
var a = unassigned_var
print(a)
var unassigned_var_op_assign
@warning_ignore(unassigned_variable_op_assign)
unassigned_var_op_assign += 1 # UNASSIGNED_VARIABLE_OP_ASSIGN
print(unassigned_var_op_assign)
@warning_ignore(unused_variable)
var unused_variable = 1 # UNUSED_VARIABLE
@warning_ignore(unused_local_constant)
const unused_constant = 1 # UNUSED_LOCAL_CONSTANT
@warning_ignore(shadowed_variable)
var shadowed_variable = 2 # SHADOWED_VARIABLE
print(shadowed_variable)
@warning_ignore(standalone_expression)
2 + 2 # STANDALONE_EXPRESSION
@warning_ignore(void_assignment)
var void_assignment = void_assign() # VOID_ASSIGNMENT
print(void_assignment)
var test_float : float = 3.3
@warning_ignore(narrowing_conversion)
var test_int : int = test_float # NARROWING_CONVERSION
print("%f %d" % [test_float, test_int])
@warning_ignore(incompatible_ternary)
test_float = 1 if 1 > 2 else null #INCOMPATIBLE_TERNARY
@warning_ignore(return_value_discarded)
get_two() #RETURN_VALUE_DISCARDED not shown
@warning_ignore(integer_division)
test_int = test_int / test_int # INTEGER_DIVISION
@warning_ignore(standalone_ternary)
42 if active else 0 # raise STANDALONE_EXPRESSION instead of STANDALONE_TERNARY
@warning_ignore(assert_always_true)
assert(true) # ASSERT_ALWAYS_TRUE
@warning_ignore(assert_always_false)
assert(false) # ASSERT_ALWAYS_FALSE
@warning_ignore(redundant_await)
await null # REDUNDANT_AWAIT
return
@warning_ignore(unreachable_code)
print("unreachable code") # UNREACHABLE_CODE
class entity_child extends test_entity:
func bidule() -> void:
@warning_ignore(shadowed_variable_base_class)
var shadowed_variable_base_class = 2# SHADOWED_VARIABLE, should have been SHADOWED_VARIABLE_BASE_CLASS ?
print(shadowed_variable_base_class)
Minimal reproduction project
About this issue
- Original URL
- State: closed
- Created 2 years ago
- Reactions: 14
- Comments: 21 (8 by maintainers)
There are no updates yet, as far as I know. I plan to take a look later (added to my TODO list).