diff --git a/.gitignore b/.gitignore index 80fe14273..ae7aa58ad 100644 --- a/.gitignore +++ b/.gitignore @@ -126,3 +126,4 @@ Cargo.lock grpc/google/ **/Package.resolved .clangd/** +package-lock.json diff --git a/src/idl_gen_js_ts.cpp b/src/idl_gen_js_ts.cpp index b09de5a5e..ad1d8a0c2 100644 --- a/src/idl_gen_js_ts.cpp +++ b/src/idl_gen_js_ts.cpp @@ -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"; diff --git a/tests/monster_test_generated.js b/tests/monster_test_generated.js index 7339a7340..fedc2c0e1 100644 --- a/tests/monster_test_generated.js +++ b/tests/monster_test_generated.js @@ -322,13 +322,7 @@ MyGame.Example.Test.prototype.a = function() { * @returns {boolean} */ MyGame.Example.Test.prototype.mutate_a = function(value) { - var offset = this.bb.__offset(this.bb_pos, 0); - - if (offset === 0) { - return false; - } - - this.bb.writeInt16(this.bb_pos + offset, value); + this.bb.writeInt16(this.bb_pos + 0, value); return true; }; @@ -344,13 +338,7 @@ MyGame.Example.Test.prototype.b = function() { * @returns {boolean} */ MyGame.Example.Test.prototype.mutate_b = function(value) { - var offset = this.bb.__offset(this.bb_pos, 2); - - if (offset === 0) { - return false; - } - - this.bb.writeInt8(this.bb_pos + offset, value); + this.bb.writeInt8(this.bb_pos + 2, value); return true; }; @@ -509,13 +497,7 @@ MyGame.Example.Vec3.prototype.x = function() { * @returns {boolean} */ MyGame.Example.Vec3.prototype.mutate_x = function(value) { - var offset = this.bb.__offset(this.bb_pos, 0); - - if (offset === 0) { - return false; - } - - this.bb.writeFloat32(this.bb_pos + offset, value); + this.bb.writeFloat32(this.bb_pos + 0, value); return true; }; @@ -531,13 +513,7 @@ MyGame.Example.Vec3.prototype.y = function() { * @returns {boolean} */ MyGame.Example.Vec3.prototype.mutate_y = function(value) { - var offset = this.bb.__offset(this.bb_pos, 4); - - if (offset === 0) { - return false; - } - - this.bb.writeFloat32(this.bb_pos + offset, value); + this.bb.writeFloat32(this.bb_pos + 4, value); return true; }; @@ -553,13 +529,7 @@ MyGame.Example.Vec3.prototype.z = function() { * @returns {boolean} */ MyGame.Example.Vec3.prototype.mutate_z = function(value) { - var offset = this.bb.__offset(this.bb_pos, 8); - - if (offset === 0) { - return false; - } - - this.bb.writeFloat32(this.bb_pos + offset, value); + this.bb.writeFloat32(this.bb_pos + 8, value); return true; }; @@ -575,13 +545,7 @@ MyGame.Example.Vec3.prototype.test1 = function() { * @returns {boolean} */ MyGame.Example.Vec3.prototype.mutate_test1 = function(value) { - var offset = this.bb.__offset(this.bb_pos, 16); - - if (offset === 0) { - return false; - } - - this.bb.writeFloat64(this.bb_pos + offset, value); + this.bb.writeFloat64(this.bb_pos + 16, value); return true; }; @@ -597,13 +561,7 @@ MyGame.Example.Vec3.prototype.test2 = function() { * @returns {boolean} */ MyGame.Example.Vec3.prototype.mutate_test2 = function(value) { - var offset = this.bb.__offset(this.bb_pos, 24); - - if (offset === 0) { - return false; - } - - this.bb.writeUint8(this.bb_pos + offset, value); + this.bb.writeUint8(this.bb_pos + 24, value); return true; }; @@ -681,13 +639,7 @@ MyGame.Example.Ability.prototype.id = function() { * @returns {boolean} */ MyGame.Example.Ability.prototype.mutate_id = function(value) { - var offset = this.bb.__offset(this.bb_pos, 0); - - if (offset === 0) { - return false; - } - - this.bb.writeUint32(this.bb_pos + offset, value); + this.bb.writeUint32(this.bb_pos + 0, value); return true; }; @@ -703,13 +655,7 @@ MyGame.Example.Ability.prototype.distance = function() { * @returns {boolean} */ MyGame.Example.Ability.prototype.mutate_distance = function(value) { - var offset = this.bb.__offset(this.bb_pos, 4); - - if (offset === 0) { - return false; - } - - this.bb.writeUint32(this.bb_pos + offset, value); + this.bb.writeUint32(this.bb_pos + 4, value); return true; }; diff --git a/tests/monster_test_generated.ts b/tests/monster_test_generated.ts index b9918f079..fdf75892e 100644 --- a/tests/monster_test_generated.ts +++ b/tests/monster_test_generated.ts @@ -356,13 +356,7 @@ a():number { * @returns boolean */ mutate_a(value:number):boolean { - var offset = this.bb!.__offset(this.bb_pos, 0); - - if (offset === 0) { - return false; - } - - this.bb!.writeInt16(this.bb_pos + offset, value); + this.bb!.writeInt16(this.bb_pos + 0, value); return true; }; @@ -378,13 +372,7 @@ b():number { * @returns boolean */ mutate_b(value:number):boolean { - var offset = this.bb!.__offset(this.bb_pos, 2); - - if (offset === 0) { - return false; - } - - this.bb!.writeInt8(this.bb_pos + offset, value); + this.bb!.writeInt8(this.bb_pos + 2, value); return true; }; @@ -604,13 +592,7 @@ x():number { * @returns boolean */ mutate_x(value:number):boolean { - var offset = this.bb!.__offset(this.bb_pos, 0); - - if (offset === 0) { - return false; - } - - this.bb!.writeFloat32(this.bb_pos + offset, value); + this.bb!.writeFloat32(this.bb_pos + 0, value); return true; }; @@ -626,13 +608,7 @@ y():number { * @returns boolean */ mutate_y(value:number):boolean { - var offset = this.bb!.__offset(this.bb_pos, 4); - - if (offset === 0) { - return false; - } - - this.bb!.writeFloat32(this.bb_pos + offset, value); + this.bb!.writeFloat32(this.bb_pos + 4, value); return true; }; @@ -648,13 +624,7 @@ z():number { * @returns boolean */ mutate_z(value:number):boolean { - var offset = this.bb!.__offset(this.bb_pos, 8); - - if (offset === 0) { - return false; - } - - this.bb!.writeFloat32(this.bb_pos + offset, value); + this.bb!.writeFloat32(this.bb_pos + 8, value); return true; }; @@ -670,13 +640,7 @@ test1():number { * @returns boolean */ mutate_test1(value:number):boolean { - var offset = this.bb!.__offset(this.bb_pos, 16); - - if (offset === 0) { - return false; - } - - this.bb!.writeFloat64(this.bb_pos + offset, value); + this.bb!.writeFloat64(this.bb_pos + 16, value); return true; }; @@ -692,13 +656,7 @@ test2():MyGame.Example.Color { * @returns boolean */ mutate_test2(value:MyGame.Example.Color):boolean { - var offset = this.bb!.__offset(this.bb_pos, 24); - - if (offset === 0) { - return false; - } - - this.bb!.writeUint8(this.bb_pos + offset, value); + this.bb!.writeUint8(this.bb_pos + 24, value); return true; }; @@ -833,13 +791,7 @@ id():number { * @returns boolean */ mutate_id(value:number):boolean { - var offset = this.bb!.__offset(this.bb_pos, 0); - - if (offset === 0) { - return false; - } - - this.bb!.writeUint32(this.bb_pos + offset, value); + this.bb!.writeUint32(this.bb_pos + 0, value); return true; }; @@ -855,13 +807,7 @@ distance():number { * @returns boolean */ mutate_distance(value:number):boolean { - var offset = this.bb!.__offset(this.bb_pos, 4); - - if (offset === 0) { - return false; - } - - this.bb!.writeUint32(this.bb_pos + offset, value); + this.bb!.writeUint32(this.bb_pos + 4, value); return true; }; diff --git a/tests/namespace_test/namespace_test1_generated.js b/tests/namespace_test/namespace_test1_generated.js index 256dce7df..2886cccbf 100644 --- a/tests/namespace_test/namespace_test1_generated.js +++ b/tests/namespace_test/namespace_test1_generated.js @@ -171,13 +171,7 @@ NamespaceA.NamespaceB.StructInNestedNS.prototype.a = function() { * @returns {boolean} */ NamespaceA.NamespaceB.StructInNestedNS.prototype.mutate_a = function(value) { - var offset = this.bb.__offset(this.bb_pos, 0); - - if (offset === 0) { - return false; - } - - this.bb.writeInt32(this.bb_pos + offset, value); + this.bb.writeInt32(this.bb_pos + 0, value); return true; }; @@ -193,13 +187,7 @@ NamespaceA.NamespaceB.StructInNestedNS.prototype.b = function() { * @returns {boolean} */ NamespaceA.NamespaceB.StructInNestedNS.prototype.mutate_b = function(value) { - var offset = this.bb.__offset(this.bb_pos, 4); - - if (offset === 0) { - return false; - } - - this.bb.writeInt32(this.bb_pos + offset, value); + this.bb.writeInt32(this.bb_pos + 4, value); return true; }; diff --git a/tests/namespace_test/namespace_test1_generated.ts b/tests/namespace_test/namespace_test1_generated.ts index eb59054d0..fde55fbbc 100644 --- a/tests/namespace_test/namespace_test1_generated.ts +++ b/tests/namespace_test/namespace_test1_generated.ts @@ -170,13 +170,7 @@ a():number { * @returns boolean */ mutate_a(value:number):boolean { - var offset = this.bb!.__offset(this.bb_pos, 0); - - if (offset === 0) { - return false; - } - - this.bb!.writeInt32(this.bb_pos + offset, value); + this.bb!.writeInt32(this.bb_pos + 0, value); return true; }; @@ -192,13 +186,7 @@ b():number { * @returns boolean */ mutate_b(value:number):boolean { - var offset = this.bb!.__offset(this.bb_pos, 4); - - if (offset === 0) { - return false; - } - - this.bb!.writeInt32(this.bb_pos + offset, value); + this.bb!.writeInt32(this.bb_pos + 4, value); return true; }; diff --git a/tests/union_vector/union_vector_generated.js b/tests/union_vector/union_vector_generated.js index 2507c31f2..8b8c765a0 100644 --- a/tests/union_vector/union_vector_generated.js +++ b/tests/union_vector/union_vector_generated.js @@ -167,13 +167,7 @@ Rapunzel.prototype.hairLength = function() { * @returns {boolean} */ Rapunzel.prototype.mutate_hair_length = function(value) { - var offset = this.bb.__offset(this.bb_pos, 0); - - if (offset === 0) { - return false; - } - - this.bb.writeInt32(this.bb_pos + offset, value); + this.bb.writeInt32(this.bb_pos + 0, value); return true; }; @@ -226,13 +220,7 @@ BookReader.prototype.booksRead = function() { * @returns {boolean} */ BookReader.prototype.mutate_books_read = function(value) { - var offset = this.bb.__offset(this.bb_pos, 0); - - if (offset === 0) { - return false; - } - - this.bb.writeInt32(this.bb_pos + offset, value); + this.bb.writeInt32(this.bb_pos + 0, value); return true; }; diff --git a/tests/union_vector/union_vector_generated.ts b/tests/union_vector/union_vector_generated.ts index d8f9f4f37..402f04fc5 100644 --- a/tests/union_vector/union_vector_generated.ts +++ b/tests/union_vector/union_vector_generated.ts @@ -202,13 +202,7 @@ hairLength():number { * @returns boolean */ mutate_hair_length(value:number):boolean { - var offset = this.bb!.__offset(this.bb_pos, 0); - - if (offset === 0) { - return false; - } - - this.bb!.writeInt32(this.bb_pos + offset, value); + this.bb!.writeInt32(this.bb_pos + 0, value); return true; }; @@ -290,13 +284,7 @@ booksRead():number { * @returns boolean */ mutate_books_read(value:number):boolean { - var offset = this.bb!.__offset(this.bb_pos, 0); - - if (offset === 0) { - return false; - } - - this.bb!.writeInt32(this.bb_pos + offset, value); + this.bb!.writeInt32(this.bb_pos + 0, value); return true; };