Merge pull request #90580 from vnen/gdscript-allow-enum-to-int-cast
GDScript: Allow casting enum to int
This commit is contained in:
commit
c9a595afb5
3 changed files with 13 additions and 0 deletions
|
@ -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) {
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
GDTEST_OK
|
||||||
|
1
|
Loading…
Reference in a new issue