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
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 45 additions and 194 deletions

1
.gitignore vendored
View File

@ -126,3 +126,4 @@ Cargo.lock
grpc/google/
**/Package.resolved
.clangd/**
package-lock.json

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";

View File

@ -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;
};

View File

@ -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;
};

View File

@ -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;
};

View File

@ -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;
};

View File

@ -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;
};

View File

@ -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;
};