GDScript: Allow casting enum to int

An enum value is always an integer so the cast is valid. The code here
now consider this case to avoid giving an error message.
This commit is contained in:
George Marques 2024-04-12 11:49:21 -03:00
parent 30e71782af
commit 030995c10d
No known key found for this signature in database
GPG key ID: 046BD46A3201E43D
3 changed files with 13 additions and 0 deletions

View file

@ -3469,6 +3469,8 @@ void GDScriptAnalyzer::reduce_cast(GDScriptParser::CastNode *p_cast) {
if (op_type.builtin_type == Variant::INT && cast_type.kind == GDScriptParser::DataType::ENUM) {
mark_node_unsafe(p_cast);
valid = true;
} else if (op_type.kind == GDScriptParser::DataType::ENUM && cast_type.builtin_type == Variant::INT) {
valid = true;
} else if (op_type.kind == GDScriptParser::DataType::BUILTIN && cast_type.kind == GDScriptParser::DataType::BUILTIN) {
valid = Variant::can_convert(op_type.builtin_type, cast_type.builtin_type);
} else if (op_type.kind != GDScriptParser::DataType::BUILTIN && cast_type.kind != GDScriptParser::DataType::BUILTIN) {

View file

@ -0,0 +1,9 @@
# GH-85882
enum Foo { A, B, C }
func test():
var a := Foo.A
var b := a as int + 1
print(b)

View file

@ -0,0 +1,2 @@
GDTEST_OK
1