Merge pull request #47569 from vnen/gdscript-typed-return

GDScript: Properly validate return type
This commit is contained in:
Rémi Verschelde 2021-04-05 15:16:43 +02:00 committed by GitHub
commit 5b2c4ad91c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 304 additions and 6 deletions

View file

@ -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: { \