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
|
#ifdef DEBUG_ENABLED
|
||||||
GDScriptParser::DataType to_await_type = p_await->to_await->get_datatype();
|
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);
|
parser->push_warning(p_await, GDScriptWarning::REDUNDANT_AWAIT);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -11,5 +11,5 @@ func test():
|
||||||
|
|
||||||
print("done")
|
print("done")
|
||||||
|
|
||||||
func regular_func():
|
func regular_func() -> int:
|
||||||
return 0
|
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())
|
print(await not_coroutine())
|
||||||
|
|
||||||
|
|
||||||
func not_coroutine():
|
func not_coroutine() -> String:
|
||||||
return "awaited"
|
return "awaited"
|
||||||
|
|
Loading…
Reference in New Issue