fixed mutating inline values (#5942)

Co-authored-by: Kamil Rojewski <kamil.rojewski@gmail.com>
This commit is contained in:
Kamil Rojewski
2020-06-04 18:08:41 +02:00
committed by GitHub
parent d026e6f071
commit 38ed69eb3d
8 changed files with 45 additions and 194 deletions

View File

@@ -1625,19 +1625,25 @@ class JsTsGenerator : public BaseGenerator {
" = function(value) {\n";
}
code += " var offset = " + GenBBAccess() + ".__offset(this.bb_pos, " +
NumToString(field.value.offset) + ");\n\n";
code += " if (offset === 0) {\n";
code += " return false;\n";
code += " }\n\n";
if (struct_def.fixed) {
code += " " + GenBBAccess() + ".write" +
MakeCamel(GenType(field.value.type)) +
"(this.bb_pos + " + NumToString(field.value.offset) + ", ";
} else {
code += " var offset = " + GenBBAccess() + ".__offset(this.bb_pos, " +
NumToString(field.value.offset) + ");\n\n";
code += " if (offset === 0) {\n";
code += " return false;\n";
code += " }\n\n";
// special case for bools, which are treated as uint8
code += " " + GenBBAccess() + ".write" +
MakeCamel(GenType(field.value.type)) +
"(this.bb_pos + offset, ";
if (field.value.type.base_type == BASE_TYPE_BOOL &&
lang_.language == IDLOptions::kTs) {
code += "+";
// special case for bools, which are treated as uint8
code += " " + GenBBAccess() + ".write" +
MakeCamel(GenType(field.value.type)) +
"(this.bb_pos + offset, ";
if (field.value.type.base_type == BASE_TYPE_BOOL &&
lang_.language == IDLOptions::kTs) {
code += "+";
}
}
code += "value);\n";