1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-07 12:30:27 +00:00

Use type information to enable GDScript introspection

This makes the Script API provide accurate information when requesting
property or method info.
This commit is contained in:
George Marques
2018-05-29 23:16:57 -03:00
parent 4b18c4e448
commit e3d72d14ff
6 changed files with 129 additions and 98 deletions

View File

@@ -62,48 +62,7 @@ public:
Ref<Script> script_type;
ClassNode *class_type;
String to_string() const {
if (!has_type) return "var";
switch (kind) {
case BUILTIN: {
if (builtin_type == Variant::NIL) return "null";
return Variant::get_type_name(builtin_type);
} break;
case NATIVE: {
if (is_meta_type) {
return "GDScriptNativeClass";
}
return native_type.operator String();
} break;
case SCRIPT:
case GDSCRIPT: {
if (is_meta_type) {
return script_type->get_class_name().operator String();
}
String name = script_type->get_name();
if (name != String()) {
return name;
}
name = script_type->get_path().get_file();
if (name != String()) {
return name;
}
return native_type.operator String();
} break;
case CLASS: {
ERR_FAIL_COND_V(!class_type, String());
if (is_meta_type) {
return "GDScript";
}
if (class_type->name == StringName()) {
return "self";
}
return class_type->name.operator String();
} break;
}
return "Unresolved";
}
String to_string() const;
bool operator==(const DataType &other) const {
if (!has_type || !other.has_type) {