GDScript: Don't add implicit constructor to the list of functions

So it's not shown on docs or when listing the methods. This also avoids
being able to call it using the `call()` function.
This commit is contained in:
George Marques 2022-06-17 14:48:07 -03:00
parent 307dfa9fe9
commit 81cac4907f
No known key found for this signature in database
GPG key ID: 046BD46A3201E43D
2 changed files with 9 additions and 1 deletions

View file

@ -1254,6 +1254,10 @@ GDScript::~GDScript() {
memdelete(E.value);
}
if (implicit_initializer) {
memdelete(implicit_initializer);
}
if (GDScriptCache::singleton) { // Cache may have been already destroyed at engine shutdown.
GDScriptCache::remove_script(get_path());
}

View file

@ -2140,7 +2140,7 @@ GDScriptFunction *GDScriptCompiler::_parse_function(Error &r_error, GDScript *p_
#endif
}
if (!p_for_lambda) {
if (!is_implicit_initializer && !p_for_lambda) {
p_script->member_functions[func_name] = gd_function;
}
@ -2208,11 +2208,15 @@ Error GDScriptCompiler::_parse_class_level(GDScript *p_script, const GDScriptPar
for (const KeyValue<StringName, GDScriptFunction *> &E : p_script->member_functions) {
memdelete(E.value);
}
if (p_script->implicit_initializer) {
memdelete(p_script->implicit_initializer);
}
p_script->member_functions.clear();
p_script->member_indices.clear();
p_script->member_info.clear();
p_script->_signals.clear();
p_script->initializer = nullptr;
p_script->implicit_initializer = nullptr;
p_script->tool = parser->is_tool();
p_script->name = p_class->identifier ? p_class->identifier->name : "";