mirror of
https://github.com/godotengine/godot.git
synced 2025-11-09 10:01:15 +00:00
Allow booleanization of all types
We now allow booleanization of all types. This means that empty versions
of all types now evaluate to false. So a Vector2(0,0), Dictionary(),
etc.
This allows you to write GDScript like:
if not Dictionary():
print("Empty dict")
Booleanization can now also no longer fail. There is no more valid flag,
this changes Variant and GDNative API.
This commit is contained in:
parent
85641c545b
commit
833c3917b2
6 changed files with 20 additions and 105 deletions
|
|
@ -982,15 +982,8 @@ Variant GDFunction::call(GDInstance *p_instance, const Variant **p_args, int p_a
|
|||
|
||||
GET_VARIANT_PTR(test, 1);
|
||||
|
||||
bool valid;
|
||||
bool result = test->booleanize(valid);
|
||||
#ifdef DEBUG_ENABLED
|
||||
if (!valid) {
|
||||
bool result = test->booleanize();
|
||||
|
||||
err_text = "cannot evaluate conditional expression of type: " + Variant::get_type_name(test->get_type());
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
if (result) {
|
||||
int to = _code_ptr[ip + 2];
|
||||
GD_ERR_BREAK(to < 0 || to > _code_size);
|
||||
|
|
@ -1006,15 +999,8 @@ Variant GDFunction::call(GDInstance *p_instance, const Variant **p_args, int p_a
|
|||
|
||||
GET_VARIANT_PTR(test, 1);
|
||||
|
||||
bool valid;
|
||||
bool result = test->booleanize(valid);
|
||||
#ifdef DEBUG_ENABLED
|
||||
if (!valid) {
|
||||
bool result = test->booleanize();
|
||||
|
||||
err_text = "cannot evaluate conditional expression of type: " + Variant::get_type_name(test->get_type());
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
if (!result) {
|
||||
int to = _code_ptr[ip + 2];
|
||||
GD_ERR_BREAK(to < 0 || to > _code_size);
|
||||
|
|
@ -1107,14 +1093,7 @@ Variant GDFunction::call(GDInstance *p_instance, const Variant **p_args, int p_a
|
|||
GET_VARIANT_PTR(test, 1);
|
||||
|
||||
#ifdef DEBUG_ENABLED
|
||||
bool valid;
|
||||
bool result = test->booleanize(valid);
|
||||
|
||||
if (!valid) {
|
||||
|
||||
err_text = "cannot evaluate conditional expression of type: " + Variant::get_type_name(test->get_type());
|
||||
break;
|
||||
}
|
||||
bool result = test->booleanize();
|
||||
|
||||
if (!result) {
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue