mirror of
https://github.com/godotengine/godot.git
synced 2024-11-22 04:06:14 +00:00
Merge pull request #70859 from vonagam/fix-preload-native-type
GDScript: Fix wrong native type for preloaded class
This commit is contained in:
commit
8203e09330
@ -3998,10 +3998,8 @@ GDScriptParser::DataType GDScriptAnalyzer::type_from_variant(const Variant &p_va
|
|||||||
scr = obj->get_script();
|
scr = obj->get_script();
|
||||||
}
|
}
|
||||||
if (scr.is_valid()) {
|
if (scr.is_valid()) {
|
||||||
result.script_path = scr->get_path();
|
|
||||||
Ref<GDScript> gds = scr;
|
Ref<GDScript> gds = scr;
|
||||||
if (gds.is_valid()) {
|
if (gds.is_valid()) {
|
||||||
result.kind = GDScriptParser::DataType::CLASS;
|
|
||||||
// This might be an inner class, so we want to get the parser for the root.
|
// This might be an inner class, so we want to get the parser for the root.
|
||||||
// But still get the inner class from that tree.
|
// But still get the inner class from that tree.
|
||||||
String script_path = gds->get_script_path();
|
String script_path = gds->get_script_path();
|
||||||
@ -4027,11 +4025,14 @@ GDScriptParser::DataType GDScriptAnalyzer::type_from_variant(const Variant &p_va
|
|||||||
return error_type;
|
return error_type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
result.kind = GDScriptParser::DataType::CLASS;
|
||||||
|
result.native_type = found->get_datatype().native_type;
|
||||||
result.class_type = found;
|
result.class_type = found;
|
||||||
result.script_path = ref->get_parser()->script_path;
|
result.script_path = ref->get_parser()->script_path;
|
||||||
} else {
|
} else {
|
||||||
result.kind = GDScriptParser::DataType::SCRIPT;
|
result.kind = GDScriptParser::DataType::SCRIPT;
|
||||||
result.native_type = scr->get_instance_base_type();
|
result.native_type = scr->get_instance_base_type();
|
||||||
|
result.script_path = scr->get_path();
|
||||||
}
|
}
|
||||||
result.script_type = scr;
|
result.script_type = scr;
|
||||||
} else {
|
} else {
|
||||||
|
@ -0,0 +1,15 @@
|
|||||||
|
const Preloaded := preload( 'preload_script_native_type.notest.gd' )
|
||||||
|
|
||||||
|
func test() -> void:
|
||||||
|
var inferred := Preloaded.new()
|
||||||
|
var inferred_owner := inferred.owner
|
||||||
|
|
||||||
|
var typed: Preloaded
|
||||||
|
typed = Preloaded.new()
|
||||||
|
var typed_owner := typed.owner
|
||||||
|
|
||||||
|
print(typed_owner == inferred_owner)
|
||||||
|
|
||||||
|
inferred.free()
|
||||||
|
typed.free()
|
||||||
|
print('ok')
|
@ -0,0 +1 @@
|
|||||||
|
extends Node
|
@ -0,0 +1,3 @@
|
|||||||
|
GDTEST_OK
|
||||||
|
true
|
||||||
|
ok
|
Loading…
Reference in New Issue
Block a user