Merge pull request #57591 from vnen/gdscript-enum-fixes
This commit is contained in:
+10
@@ -0,0 +1,10 @@
|
||||
enum MyEnum { ENUM_VALUE_1, ENUM_VALUE_2 }
|
||||
enum MyOtherEnum { OTHER_ENUM_VALUE_1, OTHER_ENUM_VALUE_2 }
|
||||
|
||||
# Different enum types can't be assigned without casting.
|
||||
var class_var: MyEnum = MyEnum.ENUM_VALUE_1
|
||||
|
||||
func test():
|
||||
print(class_var)
|
||||
class_var = MyOtherEnum.OTHER_ENUM_VALUE_2
|
||||
print(class_var)
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Cannot assign a value of type "MyOtherEnum (enum)" to a target of type "MyEnum (enum)".
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
enum MyEnum { ENUM_VALUE_1, ENUM_VALUE_2 }
|
||||
enum MyOtherEnum { OTHER_ENUM_VALUE_1, OTHER_ENUM_VALUE_2 }
|
||||
|
||||
# Different enum types can't be assigned without casting.
|
||||
var class_var: MyEnum = MyOtherEnum.OTHER_ENUM_VALUE_1
|
||||
|
||||
func test():
|
||||
print(class_var)
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Value of type "MyOtherEnum (enum)" cannot be assigned to a variable of type "MyEnum (enum)".
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
enum MyEnum { ENUM_VALUE_1, ENUM_VALUE_2 }
|
||||
enum MyOtherEnum { OTHER_ENUM_VALUE_1, OTHER_ENUM_VALUE_2 }
|
||||
|
||||
func test():
|
||||
var local_var: MyEnum = MyEnum.ENUM_VALUE_1
|
||||
print(local_var)
|
||||
local_var = MyOtherEnum.OTHER_ENUM_VALUE_2
|
||||
print(local_var)
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Cannot assign a value of type "MyOtherEnum (enum)" to a target of type "MyEnum (enum)".
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
enum MyEnum { ENUM_VALUE_1, ENUM_VALUE_2 }
|
||||
enum MyOtherEnum { OTHER_ENUM_VALUE_1, OTHER_ENUM_VALUE_2 }
|
||||
|
||||
func test():
|
||||
var local_var: MyEnum = MyOtherEnum.OTHER_ENUM_VALUE_1
|
||||
print(local_var)
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Value of type "MyOtherEnum (enum)" cannot be assigned to a variable of type "MyEnum (enum)".
|
||||
@@ -0,0 +1,13 @@
|
||||
enum MyEnum { ENUM_VALUE_1, ENUM_VALUE_2 }
|
||||
|
||||
var class_var: int = MyEnum.ENUM_VALUE_1
|
||||
|
||||
func test():
|
||||
print(class_var)
|
||||
class_var = MyEnum.ENUM_VALUE_2
|
||||
print(class_var)
|
||||
|
||||
var local_var: int = MyEnum.ENUM_VALUE_1
|
||||
print(local_var)
|
||||
local_var = MyEnum.ENUM_VALUE_2
|
||||
print(local_var)
|
||||
@@ -0,0 +1,5 @@
|
||||
GDTEST_OK
|
||||
0
|
||||
1
|
||||
0
|
||||
1
|
||||
@@ -0,0 +1,13 @@
|
||||
enum MyEnum { ENUM_VALUE_1, ENUM_VALUE_2 }
|
||||
|
||||
var class_var: MyEnum = 0 as MyEnum
|
||||
|
||||
func test():
|
||||
print(class_var)
|
||||
class_var = 1 as MyEnum
|
||||
print(class_var)
|
||||
|
||||
var local_var: MyEnum = 0 as MyEnum
|
||||
print(local_var)
|
||||
local_var = 1 as MyEnum
|
||||
print(local_var)
|
||||
@@ -0,0 +1,5 @@
|
||||
GDTEST_OK
|
||||
0
|
||||
1
|
||||
0
|
||||
1
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
enum MyEnum { ENUM_VALUE_1, ENUM_VALUE_2 }
|
||||
enum MyOtherEnum { OTHER_ENUM_VALUE_1, OTHER_ENUM_VALUE_2 }
|
||||
|
||||
var class_var: MyEnum = MyOtherEnum.OTHER_ENUM_VALUE_1 as MyEnum
|
||||
|
||||
func test():
|
||||
print(class_var)
|
||||
class_var = MyOtherEnum.OTHER_ENUM_VALUE_2 as MyEnum
|
||||
print(class_var)
|
||||
|
||||
var local_var: MyEnum = MyOtherEnum.OTHER_ENUM_VALUE_1 as MyEnum
|
||||
print(local_var)
|
||||
local_var = MyOtherEnum.OTHER_ENUM_VALUE_2 as MyEnum
|
||||
print(local_var)
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
GDTEST_OK
|
||||
0
|
||||
1
|
||||
0
|
||||
1
|
||||
@@ -0,0 +1,13 @@
|
||||
enum MyEnum { ENUM_VALUE_1, ENUM_VALUE_2 }
|
||||
|
||||
var class_var: MyEnum = MyEnum.ENUM_VALUE_1
|
||||
|
||||
func test():
|
||||
print(class_var)
|
||||
class_var = MyEnum.ENUM_VALUE_2
|
||||
print(class_var)
|
||||
|
||||
var local_var: MyEnum = MyEnum.ENUM_VALUE_1
|
||||
print(local_var)
|
||||
local_var = MyEnum.ENUM_VALUE_2
|
||||
print(local_var)
|
||||
@@ -0,0 +1,5 @@
|
||||
GDTEST_OK
|
||||
0
|
||||
1
|
||||
0
|
||||
1
|
||||
@@ -0,0 +1,21 @@
|
||||
# Enum is equivalent to int for comparisons and operations.
|
||||
enum MyEnum {
|
||||
ZERO,
|
||||
ONE,
|
||||
TWO,
|
||||
}
|
||||
|
||||
enum OtherEnum {
|
||||
ZERO,
|
||||
ONE,
|
||||
TWO,
|
||||
}
|
||||
|
||||
func test():
|
||||
print(MyEnum.ZERO == OtherEnum.ZERO)
|
||||
print(MyEnum.ZERO == 1)
|
||||
print(MyEnum.ZERO != OtherEnum.ONE)
|
||||
print(MyEnum.ZERO != 0)
|
||||
|
||||
print(MyEnum.ONE + OtherEnum.TWO)
|
||||
print(2 - MyEnum.ONE)
|
||||
@@ -0,0 +1,7 @@
|
||||
GDTEST_OK
|
||||
true
|
||||
false
|
||||
true
|
||||
false
|
||||
3
|
||||
1
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
enum MyEnum {
|
||||
ZERO,
|
||||
ONE,
|
||||
TWO,
|
||||
}
|
||||
|
||||
func test():
|
||||
for key in MyEnum.keys():
|
||||
prints(key, MyEnum[key])
|
||||
|
||||
# https://github.com/godotengine/godot/issues/55491
|
||||
for key in MyEnum:
|
||||
prints(key, MyEnum[key])
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
GDTEST_OK
|
||||
ZERO 0
|
||||
ONE 1
|
||||
TWO 2
|
||||
ZERO 0
|
||||
ONE 1
|
||||
TWO 2
|
||||
@@ -0,0 +1,15 @@
|
||||
enum MyEnum { ENUM_VALUE_1, ENUM_VALUE_2 }
|
||||
|
||||
# Assigning int value to enum-typed variable without explicit cast causes a warning.
|
||||
# While it is valid it may be a mistake in the assignment.
|
||||
var class_var: MyEnum = 0
|
||||
|
||||
func test():
|
||||
print(class_var)
|
||||
class_var = 1
|
||||
print(class_var)
|
||||
|
||||
var local_var: MyEnum = 0
|
||||
print(local_var)
|
||||
local_var = 1
|
||||
print(local_var)
|
||||
@@ -0,0 +1,21 @@
|
||||
GDTEST_OK
|
||||
>> WARNING
|
||||
>> Line: 5
|
||||
>> INT_ASSIGNED_TO_ENUM
|
||||
>> Integer used when an enum value is expected. If this is intended cast the integer to the enum type.
|
||||
>> WARNING
|
||||
>> Line: 9
|
||||
>> INT_ASSIGNED_TO_ENUM
|
||||
>> Integer used when an enum value is expected. If this is intended cast the integer to the enum type.
|
||||
>> WARNING
|
||||
>> Line: 12
|
||||
>> INT_ASSIGNED_TO_ENUM
|
||||
>> Integer used when an enum value is expected. If this is intended cast the integer to the enum type.
|
||||
>> WARNING
|
||||
>> Line: 14
|
||||
>> INT_ASSIGNED_TO_ENUM
|
||||
>> Integer used when an enum value is expected. If this is intended cast the integer to the enum type.
|
||||
0
|
||||
1
|
||||
0
|
||||
1
|
||||
@@ -1,3 +1,4 @@
|
||||
#debug-only
|
||||
func test():
|
||||
var node := Node.new()
|
||||
var inside_tree = node.is_inside_tree
|
||||
|
||||
@@ -2,5 +2,5 @@ GDTEST_RUNTIME_ERROR
|
||||
>> SCRIPT ERROR
|
||||
>> on function: test()
|
||||
>> runtime/errors/callable_call_after_free_object.gd
|
||||
>> 5
|
||||
>> 6
|
||||
>> Attempt to call function 'null::is_inside_tree (Callable)' on a null instance.
|
||||
|
||||
Reference in New Issue
Block a user