Merge pull request #90580 from vnen/gdscript-allow-enum-to-int-cast

GDScript: Allow casting enum to int
This commit is contained in:
Rémi Verschelde 2024-04-13 11:30:34 +02:00
commit c9a595afb5
No known key found for this signature in database
GPG key ID: C3336907360768E1
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) { if (op_type.builtin_type == Variant::INT && cast_type.kind == GDScriptParser::DataType::ENUM) {
mark_node_unsafe(p_cast); mark_node_unsafe(p_cast);
valid = true; 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) { } 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); 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) { } 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