Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[TS] Allows object API to set 0 for a null-default scalar. #7864

Merged
merged 13 commits into from
Sep 12, 2023
Merged
6 changes: 1 addition & 5 deletions src/idl_gen_ts.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2000,11 +2000,7 @@ class TsGenerator : public BaseGenerator {
if (!IsScalar(field.value.type.base_type)) {
code += "0";
} else if (HasNullDefault(field)) {
if (IsLong(field.value.type.base_type)) {
code += "BigInt(0)";
} else {
code += "0";
}
code += "null";
} else {
if (field.value.type.base_type == BASE_TYPE_BOOL) { code += "+"; }
code += GenDefaultValue(field, imports);
Expand Down
4 changes: 2 additions & 2 deletions tests/TestAll.sh
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ sh PythonTest.sh

echo "************************ TypeScript:"

python3 TypeScriptTest.py
python3 ts/TypeScriptTest.py

echo "************************ C++:"

Expand Down Expand Up @@ -56,4 +56,4 @@ echo "************************ Swift:"

cd FlatBuffers.Test.Swift
sh SwiftTest.sh
cd ..
cd ..
24 changes: 12 additions & 12 deletions tests/ts/optional-scalars/scalar-stuff.ts
Original file line number Diff line number Diff line change
Expand Up @@ -222,7 +222,7 @@ static addJustI8(builder:flatbuffers.Builder, justI8:number) {
}

static addMaybeI8(builder:flatbuffers.Builder, maybeI8:number) {
builder.addFieldInt8(1, maybeI8, 0);
builder.addFieldInt8(1, maybeI8, null);
}

static addDefaultI8(builder:flatbuffers.Builder, defaultI8:number) {
Expand All @@ -234,7 +234,7 @@ static addJustU8(builder:flatbuffers.Builder, justU8:number) {
}

static addMaybeU8(builder:flatbuffers.Builder, maybeU8:number) {
builder.addFieldInt8(4, maybeU8, 0);
builder.addFieldInt8(4, maybeU8, null);
}

static addDefaultU8(builder:flatbuffers.Builder, defaultU8:number) {
Expand All @@ -246,7 +246,7 @@ static addJustI16(builder:flatbuffers.Builder, justI16:number) {
}

static addMaybeI16(builder:flatbuffers.Builder, maybeI16:number) {
builder.addFieldInt16(7, maybeI16, 0);
builder.addFieldInt16(7, maybeI16, null);
}

static addDefaultI16(builder:flatbuffers.Builder, defaultI16:number) {
Expand All @@ -258,7 +258,7 @@ static addJustU16(builder:flatbuffers.Builder, justU16:number) {
}

static addMaybeU16(builder:flatbuffers.Builder, maybeU16:number) {
builder.addFieldInt16(10, maybeU16, 0);
builder.addFieldInt16(10, maybeU16, null);
}

static addDefaultU16(builder:flatbuffers.Builder, defaultU16:number) {
Expand All @@ -270,7 +270,7 @@ static addJustI32(builder:flatbuffers.Builder, justI32:number) {
}

static addMaybeI32(builder:flatbuffers.Builder, maybeI32:number) {
builder.addFieldInt32(13, maybeI32, 0);
builder.addFieldInt32(13, maybeI32, null);
}

static addDefaultI32(builder:flatbuffers.Builder, defaultI32:number) {
Expand All @@ -282,7 +282,7 @@ static addJustU32(builder:flatbuffers.Builder, justU32:number) {
}

static addMaybeU32(builder:flatbuffers.Builder, maybeU32:number) {
builder.addFieldInt32(16, maybeU32, 0);
builder.addFieldInt32(16, maybeU32, null);
}

static addDefaultU32(builder:flatbuffers.Builder, defaultU32:number) {
Expand All @@ -294,7 +294,7 @@ static addJustI64(builder:flatbuffers.Builder, justI64:bigint) {
}

static addMaybeI64(builder:flatbuffers.Builder, maybeI64:bigint) {
builder.addFieldInt64(19, maybeI64, BigInt(0));
builder.addFieldInt64(19, maybeI64, null);
}

static addDefaultI64(builder:flatbuffers.Builder, defaultI64:bigint) {
Expand All @@ -306,7 +306,7 @@ static addJustU64(builder:flatbuffers.Builder, justU64:bigint) {
}

static addMaybeU64(builder:flatbuffers.Builder, maybeU64:bigint) {
builder.addFieldInt64(22, maybeU64, BigInt(0));
builder.addFieldInt64(22, maybeU64, null);
}

static addDefaultU64(builder:flatbuffers.Builder, defaultU64:bigint) {
Expand All @@ -318,7 +318,7 @@ static addJustF32(builder:flatbuffers.Builder, justF32:number) {
}

static addMaybeF32(builder:flatbuffers.Builder, maybeF32:number) {
builder.addFieldFloat32(25, maybeF32, 0);
builder.addFieldFloat32(25, maybeF32, null);
}

static addDefaultF32(builder:flatbuffers.Builder, defaultF32:number) {
Expand All @@ -330,7 +330,7 @@ static addJustF64(builder:flatbuffers.Builder, justF64:number) {
}

static addMaybeF64(builder:flatbuffers.Builder, maybeF64:number) {
builder.addFieldFloat64(28, maybeF64, 0);
builder.addFieldFloat64(28, maybeF64, null);
}

static addDefaultF64(builder:flatbuffers.Builder, defaultF64:number) {
Expand All @@ -342,7 +342,7 @@ static addJustBool(builder:flatbuffers.Builder, justBool:boolean) {
}

static addMaybeBool(builder:flatbuffers.Builder, maybeBool:boolean) {
builder.addFieldInt8(31, +maybeBool, 0);
builder.addFieldInt8(31, +maybeBool, null);
}

static addDefaultBool(builder:flatbuffers.Builder, defaultBool:boolean) {
Expand All @@ -354,7 +354,7 @@ static addJustEnum(builder:flatbuffers.Builder, justEnum:OptionalByte) {
}

static addMaybeEnum(builder:flatbuffers.Builder, maybeEnum:OptionalByte) {
builder.addFieldInt8(34, maybeEnum, 0);
builder.addFieldInt8(34, maybeEnum, null);
}

static addDefaultEnum(builder:flatbuffers.Builder, defaultEnum:OptionalByte) {
Expand Down
12 changes: 6 additions & 6 deletions ts/builder.ts
Original file line number Diff line number Diff line change
Expand Up @@ -202,42 +202,42 @@ export class Builder {
this.writeFloat64(value);
}

addFieldInt8(voffset: number, value: number, defaultValue: number): void {
addFieldInt8(voffset: number, value: number, defaultValue: number|null): void {
if (this.force_defaults || value != defaultValue) {
this.addInt8(value);
this.slot(voffset);
}
}

addFieldInt16(voffset: number, value: number, defaultValue: number): void {
addFieldInt16(voffset: number, value: number, defaultValue: number|null): void {
if (this.force_defaults || value != defaultValue) {
this.addInt16(value);
this.slot(voffset);
}
}

addFieldInt32(voffset: number, value: number, defaultValue: number): void {
addFieldInt32(voffset: number, value: number, defaultValue: number|null): void {
if (this.force_defaults || value != defaultValue) {
this.addInt32(value);
this.slot(voffset);
}
}

addFieldInt64(voffset: number, value: bigint, defaultValue: bigint): void {
addFieldInt64(voffset: number, value: bigint, defaultValue: bigint|null): void {
if (this.force_defaults || value !== defaultValue) {
this.addInt64(value);
this.slot(voffset);
}
}

addFieldFloat32(voffset: number, value: number, defaultValue: number): void {
addFieldFloat32(voffset: number, value: number, defaultValue: number|null): void {
if (this.force_defaults || value != defaultValue) {
this.addFloat32(value);
this.slot(voffset);
}
}

addFieldFloat64(voffset: number, value: number, defaultValue: number): void {
addFieldFloat64(voffset: number, value: number, defaultValue: number|null): void {
if (this.force_defaults || value != defaultValue) {
this.addFloat64(value);
this.slot(voffset);
Expand Down