Browse Source

Fix named enums to use int64 type

Yuri Rubinsky 2 years ago
parent
commit
f11b66b084

+ 1 - 2
modules/gdscript/gdscript_compiler.cpp

@@ -2432,9 +2432,8 @@ Error GDScriptCompiler::_parse_class_level(GDScript *p_script, const GDScriptPar
 				// TODO: Make enums not be just a dictionary?
 				Dictionary new_enum;
 				for (int j = 0; j < enum_n->values.size(); j++) {
-					int value = enum_n->values[j].value;
 					// Needs to be string because Variant::get will convert to String.
-					new_enum[String(enum_n->values[j].identifier->name)] = value;
+					new_enum[String(enum_n->values[j].identifier->name)] = enum_n->values[j].value;
 				}
 
 				p_script->constants.insert(enum_n->identifier->name, new_enum);

+ 1 - 1
modules/gdscript/gdscript_parser.cpp

@@ -3802,7 +3802,7 @@ bool GDScriptParser::export_annotations(const AnnotationNode *p_annotation, Node
 
 				String enum_hint_string;
 				bool first = true;
-				for (const KeyValue<StringName, int> &E : export_type.enum_values) {
+				for (const KeyValue<StringName, int64_t> &E : export_type.enum_values) {
 					if (!first) {
 						enum_hint_string += ",";
 					} else {

+ 1 - 1
modules/gdscript/gdscript_parser.h

@@ -131,7 +131,7 @@ public:
 		ClassNode *class_type = nullptr;
 
 		MethodInfo method_info; // For callable/signals.
-		HashMap<StringName, int> enum_values; // For enums.
+		HashMap<StringName, int64_t> enum_values; // For enums.
 
 		_FORCE_INLINE_ bool is_set() const { return kind != UNRESOLVED; }
 		_FORCE_INLINE_ bool has_no_type() const { return type_source == UNDETECTED; }