Add default virtual `gdscript://` path to `GDScript` instances

This commit is contained in:
Adam Scott 2023-01-10 20:08:46 -05:00
parent 4ac649d838
commit e3e55b29ce
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