GDScript: Fix false positive `REDUNDANT_AWAIT` warning
This commit is contained in:
parent
bdefdc866b
commit
c0eeb32e38
|
@ -2548,7 +2548,7 @@ void GDScriptAnalyzer::reduce_await(GDScriptParser::AwaitNode *p_await) {
|
|||
|
||||
#ifdef DEBUG_ENABLED
|
||||
GDScriptParser::DataType to_await_type = p_await->to_await->get_datatype();
|
||||
if (!(to_await_type.has_no_type() || to_await_type.is_coroutine || to_await_type.builtin_type == Variant::SIGNAL)) {
|
||||
if (!to_await_type.is_coroutine && !to_await_type.is_variant() && to_await_type.builtin_type != Variant::SIGNAL) {
|
||||
parser->push_warning(p_await, GDScriptWarning::REDUNDANT_AWAIT);
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -11,5 +11,5 @@ func test():
|
|||
|
||||
print("done")
|
||||
|
||||
func regular_func():
|
||||
func regular_func() -> int:
|
||||
return 0
|
||||
|
|
|
@ -0,0 +1,53 @@
|
|||
signal my_signal()
|
||||
|
||||
# CI cannot test async things.
|
||||
func test_signals():
|
||||
await my_signal
|
||||
var t: Signal = my_signal
|
||||
await t
|
||||
|
||||
func coroutine() -> void:
|
||||
@warning_ignore("redundant_await")
|
||||
await 0
|
||||
|
||||
func not_coroutine_variant():
|
||||
pass
|
||||
|
||||
func not_coroutine_void() -> void:
|
||||
pass
|
||||
|
||||
func test():
|
||||
const CONST_NULL = null
|
||||
var var_null = null
|
||||
var var_int: int = 1
|
||||
var var_variant: Variant = 1
|
||||
var var_array: Array = [1]
|
||||
|
||||
await CONST_NULL
|
||||
await var_null
|
||||
await var_int
|
||||
await var_variant
|
||||
await var_array[0]
|
||||
|
||||
await coroutine
|
||||
await coroutine()
|
||||
await coroutine.call()
|
||||
await self.coroutine()
|
||||
await call(&"coroutine")
|
||||
|
||||
await not_coroutine_variant
|
||||
await not_coroutine_variant()
|
||||
await self.not_coroutine_variant()
|
||||
await not_coroutine_variant.call()
|
||||
await call(&"not_coroutine_variant")
|
||||
|
||||
await not_coroutine_void
|
||||
await not_coroutine_void()
|
||||
await self.not_coroutine_void()
|
||||
await not_coroutine_void.call()
|
||||
await call(&"not_coroutine_void")
|
||||
|
||||
var callable: Callable = coroutine
|
||||
await callable
|
||||
await callable.call()
|
||||
await callable.get_method()
|
|
@ -0,0 +1,37 @@
|
|||
GDTEST_OK
|
||||
>> WARNING
|
||||
>> Line: 26
|
||||
>> REDUNDANT_AWAIT
|
||||
>> "await" keyword not needed in this case, because the expression isn't a coroutine nor a signal.
|
||||
>> WARNING
|
||||
>> Line: 28
|
||||
>> REDUNDANT_AWAIT
|
||||
>> "await" keyword not needed in this case, because the expression isn't a coroutine nor a signal.
|
||||
>> WARNING
|
||||
>> Line: 32
|
||||
>> REDUNDANT_AWAIT
|
||||
>> "await" keyword not needed in this case, because the expression isn't a coroutine nor a signal.
|
||||
>> WARNING
|
||||
>> Line: 38
|
||||
>> REDUNDANT_AWAIT
|
||||
>> "await" keyword not needed in this case, because the expression isn't a coroutine nor a signal.
|
||||
>> WARNING
|
||||
>> Line: 44
|
||||
>> REDUNDANT_AWAIT
|
||||
>> "await" keyword not needed in this case, because the expression isn't a coroutine nor a signal.
|
||||
>> WARNING
|
||||
>> Line: 45
|
||||
>> REDUNDANT_AWAIT
|
||||
>> "await" keyword not needed in this case, because the expression isn't a coroutine nor a signal.
|
||||
>> WARNING
|
||||
>> Line: 46
|
||||
>> REDUNDANT_AWAIT
|
||||
>> "await" keyword not needed in this case, because the expression isn't a coroutine nor a signal.
|
||||
>> WARNING
|
||||
>> Line: 51
|
||||
>> REDUNDANT_AWAIT
|
||||
>> "await" keyword not needed in this case, because the expression isn't a coroutine nor a signal.
|
||||
>> WARNING
|
||||
>> Line: 53
|
||||
>> REDUNDANT_AWAIT
|
||||
>> "await" keyword not needed in this case, because the expression isn't a coroutine nor a signal.
|
|
@ -4,5 +4,5 @@ func test():
|
|||
print(await not_coroutine())
|
||||
|
||||
|
||||
func not_coroutine():
|
||||
func not_coroutine() -> String:
|
||||
return "awaited"
|
||||
|
|
Loading…
Reference in New Issue