diff options
author | Juan Linietsky <reduzio@gmail.com> | 2016-06-06 20:08:39 -0300 |
---|---|---|
committer | Juan Linietsky <reduzio@gmail.com> | 2016-06-06 20:08:39 -0300 |
commit | 5aa40704388be838c4fecc9989dd69bc6b5d9077 (patch) | |
tree | 6bb83dd8a8ea585ae16ffe0068a37ec8eaa0a3f4 | |
parent | 9df4c1885362103baef02f01bf2012d8aa64e0a0 (diff) | |
parent | 3acbf8e71f15c682bcf4fee248f58180e689df1c (diff) |
Merge pull request #5054 from eska014/fix-implicit-extends
Fix implicit GDScript Reference inheritance
-rw-r--r-- | modules/gdscript/gd_compiler.cpp | 6 | ||||
-rw-r--r-- | modules/gdscript/gd_script.cpp | 7 |
2 files changed, 8 insertions, 5 deletions
diff --git a/modules/gdscript/gd_compiler.cpp b/modules/gdscript/gd_compiler.cpp index d51f1a4ddc..072c53fb9f 100644 --- a/modules/gdscript/gd_compiler.cpp +++ b/modules/gdscript/gd_compiler.cpp @@ -1588,6 +1588,12 @@ Error GDCompiler::_parse_class(GDScript *p_script, GDScript *p_owner, const GDPa } + } else { + // without extends, implicitly extend Reference + int native_idx = GDScriptLanguage::get_singleton()->get_global_map()["Reference"]; + native = GDScriptLanguage::get_singleton()->get_global_array()[native_idx]; + ERR_FAIL_COND_V(native.is_null(), ERR_BUG); + p_script->native=native; } diff --git a/modules/gdscript/gd_script.cpp b/modules/gdscript/gd_script.cpp index dcd0641f76..12fc36d8c1 100644 --- a/modules/gdscript/gd_script.cpp +++ b/modules/gdscript/gd_script.cpp @@ -145,11 +145,8 @@ Variant GDScript::_new(const Variant** p_args,int p_argcount,Variant::CallError& _baseptr=_baseptr->_base; } - if (_baseptr->native.ptr()) { - owner=_baseptr->native->instance(); - } else { - owner=memnew( Reference ); //by default, no base means use reference - } + ERR_FAIL_COND_V(_baseptr->native.is_null(), Variant()); + owner=_baseptr->native->instance(); Reference *r=owner->cast_to<Reference>(); if (r) { |