GDScript: Removed spurious UNASSIGNED_VARIABLE warning for locals
Variable->assignment needs to be incremented when assigned a value. Also fixed and improved unit test 'variable_declaration.gd'. Fixes #52551
This commit is contained in:
parent
68563b5760
commit
1d1aa7a02f
3 changed files with 21 additions and 14 deletions
|
@ -2369,9 +2369,13 @@ GDScriptParser::ExpressionNode *GDScriptParser::parse_assignment(ExpressionNode
|
|||
}
|
||||
|
||||
#ifdef DEBUG_ENABLED
|
||||
if (has_operator && source_variable != nullptr && source_variable->assignments == 0) {
|
||||
if (source_variable != nullptr) {
|
||||
if (has_operator && source_variable->assignments == 0) {
|
||||
push_warning(assignment, GDScriptWarning::UNASSIGNED_VARIABLE_OP_ASSIGN, source_variable->identifier->name);
|
||||
}
|
||||
|
||||
source_variable->assignments += 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
return assignment;
|
||||
|
|
|
@ -1,12 +1,19 @@
|
|||
var a # No init.
|
||||
var b = 42 # Init.
|
||||
var m1 # No init.
|
||||
var m2 = 22 # Init.
|
||||
var m3: String # No init, typed.
|
||||
var m4: String = "44" # Init, typed.
|
||||
|
||||
func test():
|
||||
var c # No init, local.
|
||||
var d = 23 # Init, local.
|
||||
var loc5 # No init, local.
|
||||
var loc6 = 66 # Init, local.
|
||||
var loc7: String # No init, typed.
|
||||
var loc8: String = "88" # Init, typed.
|
||||
|
||||
a = 1
|
||||
c = 2
|
||||
m1 = 11
|
||||
m3 = "33"
|
||||
|
||||
prints(a, b, c, d)
|
||||
loc5 = 55
|
||||
loc7 = "77"
|
||||
|
||||
prints(m1, m2, m3, m4, loc5, loc6, loc7, loc8)
|
||||
print("OK")
|
||||
|
|
|
@ -1,7 +1,3 @@
|
|||
GDTEST_OK
|
||||
>> WARNING
|
||||
>> Line: 5
|
||||
>> UNASSIGNED_VARIABLE
|
||||
>> The variable 'c' was used but never assigned a value.
|
||||
1 42 2 23
|
||||
11 22 33 44 55 66 77 88
|
||||
OK
|
||||
|
|
Loading…
Reference in a new issue