Merge pull request #71197 from adamscott/add-default-virtual-path-gdscript

Add default virtual `gdscript://` path to `GDScript` instances
This commit is contained in:
Rémi Verschelde 2023-01-12 17:56:09 +01:00
commit 40b9c246b6
No known key found for this signature in database
GPG key ID: C3336907360768E1
3 changed files with 26 additions and 1 deletions

View file

@ -1037,7 +1037,7 @@ String GDScript::get_script_path() const {
}
Error GDScript::load_source_code(const String &p_path) {
if (p_path.is_empty() || ResourceLoader::get_resource_type(p_path.get_slice("::", 0)) == "PackedScene") {
if (p_path.is_empty() || p_path.begins_with("gdscript://") || ResourceLoader::get_resource_type(p_path.get_slice("::", 0)) == "PackedScene") {
return OK;
}
@ -1363,6 +1363,8 @@ GDScript::GDScript() :
GDScriptLanguage::get_singleton()->script_list.add(&script_list);
}
path = vformat("gdscript://%d.gd", get_instance_id());
}
void GDScript::_save_orphaned_subclasses(GDScript::ClearData *p_clear_data) {

View file

@ -0,0 +1,20 @@
func test():
var gdscr: = GDScript.new()
gdscr.source_code = '''
extends Resource
func test() -> void:
prints("Outer")
var inner = InnerClass.new()
class InnerClass:
func _init() -> void:
prints("Inner")
'''
@warning_ignore(return_value_discarded)
gdscr.reload()
var inst = gdscr.new()
@warning_ignore(unsafe_method_access)
inst.test()

View file

@ -0,0 +1,3 @@
GDTEST_OK
Outer
Inner