diff options
author | Rémi Verschelde <remi@verschelde.fr> | 2021-04-05 15:16:43 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-04-05 15:16:43 +0200 |
commit | 5b2c4ad91c1929a3c4b43d444467b66b41675ce4 (patch) | |
tree | 33f73e57bcc3dcf4839ec1153933e41a0aee2847 /modules/gdscript/gdscript_disassembler.cpp | |
parent | ccdcb29df1bccd3cd0e96eb461b794e1633b75de (diff) | |
parent | 35682d30795498632c0406011e6c56f97a73f1d6 (diff) | |
download | redot-engine-5b2c4ad91c1929a3c4b43d444467b66b41675ce4.tar.gz |
Merge pull request #47569 from vnen/gdscript-typed-return
GDScript: Properly validate return type
Diffstat (limited to 'modules/gdscript/gdscript_disassembler.cpp')
-rw-r--r-- | modules/gdscript/gdscript_disassembler.cpp | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/modules/gdscript/gdscript_disassembler.cpp b/modules/gdscript/gdscript_disassembler.cpp index 259d7b877b..33acbb2a35 100644 --- a/modules/gdscript/gdscript_disassembler.cpp +++ b/modules/gdscript/gdscript_disassembler.cpp @@ -774,6 +774,39 @@ void GDScriptFunction::disassemble(const Vector<String> &p_code_lines) const { incr = 2; } break; + case OPCODE_RETURN_TYPED_BUILTIN: { + text += "return typed builtin ("; + text += Variant::get_type_name((Variant::Type)_code_ptr[ip + 2]); + text += ") "; + text += DADDR(1); + + incr += 3; + } break; + case OPCODE_RETURN_TYPED_ARRAY: { + text += "return typed array "; + text += DADDR(1); + + incr += 5; + } break; + case OPCODE_RETURN_TYPED_NATIVE: { + text += "return typed native ("; + text += DADDR(2); + text += ") "; + text += DADDR(1); + + incr += 3; + } break; + case OPCODE_RETURN_TYPED_SCRIPT: { + Variant script = _constants_ptr[_code_ptr[ip + 2]]; + Script *sc = Object::cast_to<Script>(script.operator Object *()); + + text += "return typed script ("; + text += sc->get_path(); + text += ") "; + text += DADDR(1); + + incr += 3; + } break; #define DISASSEMBLE_ITERATE(m_type) \ case OPCODE_ITERATE_##m_type: { \ |