summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBjörn Harrtell <bjornharrtell@users.noreply.github.com>2023-04-06 03:26:05 +0200
committerGitHub <noreply@github.com>2023-04-06 01:26:05 +0000
commit0888e7cb4d4d3b3a54aefd761b04d36215cb31ed (patch)
treedde967bd1630cc80ba9ee1c55b66756b98b1cf9c
parent876a64aae138be5d9eb9245348719a18161d8e09 (diff)
downloadflatbuffers-0888e7cb4d4d3b3a54aefd761b04d36215cb31ed.tar.gz
flatbuffers-0888e7cb4d4d3b3a54aefd761b04d36215cb31ed.tar.bz2
flatbuffers-0888e7cb4d4d3b3a54aefd761b04d36215cb31ed.zip
TS/JS: Use minvalue from enum if not found (#7888)
Co-authored-by: Derek Bailey <derekbailey@google.com>
-rw-r--r--src/idl_gen_ts.cpp15
-rw-r--r--tests/ts/arrays_test_complex/arrays_test_complex_generated.cjs4
-rw-r--r--tests/ts/monster_test_generated.cjs10
-rw-r--r--tests/ts/my-game/example/vec3.js3
-rw-r--r--tests/ts/my-game/example/vec3.ts2
-rw-r--r--tests/ts/typescript_keywords_generated.cjs17
-rw-r--r--tests/ts/union_vector/union_vector_generated.cjs4
7 files changed, 11 insertions, 44 deletions
diff --git a/src/idl_gen_ts.cpp b/src/idl_gen_ts.cpp
index af0836ac..ca072f1c 100644
--- a/src/idl_gen_ts.cpp
+++ b/src/idl_gen_ts.cpp
@@ -474,14 +474,13 @@ class TsGenerator : public BaseGenerator {
return "BigInt('" + value.constant + "')";
}
default: {
- if (auto val = value.type.enum_def->FindByValue(value.constant)) {
- return AddImport(imports, *value.type.enum_def,
- *value.type.enum_def)
- .name +
- "." + namer_.Variant(*val);
- } else {
- return value.constant;
- }
+ EnumVal *val = value.type.enum_def->FindByValue(value.constant);
+ if (val == nullptr)
+ val = const_cast<EnumVal *>(value.type.enum_def->MinValue());
+ return AddImport(imports, *value.type.enum_def,
+ *value.type.enum_def)
+ .name +
+ "." + namer_.Variant(*val);
}
}
}
diff --git a/tests/ts/arrays_test_complex/arrays_test_complex_generated.cjs b/tests/ts/arrays_test_complex/arrays_test_complex_generated.cjs
index ec2df633..3ae6bcd0 100644
--- a/tests/ts/arrays_test_complex/arrays_test_complex_generated.cjs
+++ b/tests/ts/arrays_test_complex/arrays_test_complex_generated.cjs
@@ -18,10 +18,6 @@ var __copyProps = (to, from, except, desc) => {
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
- // If the importer is in node compatibility mode or this is not an ESM
- // file that has been converted to a CommonJS file using a Babel-
- // compatible transform (i.e. "__esModule" has not been set), then set
- // "default" to the CommonJS "module.exports" for node compatibility.
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
mod
));
diff --git a/tests/ts/monster_test_generated.cjs b/tests/ts/monster_test_generated.cjs
index 8eb338e6..3f05fd0a 100644
--- a/tests/ts/monster_test_generated.cjs
+++ b/tests/ts/monster_test_generated.cjs
@@ -18,10 +18,6 @@ var __copyProps = (to, from, except, desc) => {
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
- // If the importer is in node compatibility mode or this is not an ESM
- // file that has been converted to a CommonJS file using a Babel-
- // compatible transform (i.e. "__esModule" has not been set), then set
- // "default" to the CommonJS "module.exports" for node compatibility.
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
mod
));
@@ -818,7 +814,7 @@ var Vec3 = class {
}
};
var Vec3T = class {
- constructor(x = 0, y = 0, z = 0, test1 = 0, test2 = 0, test3 = null) {
+ constructor(x = 0, y = 0, z = 0, test1 = 0, test2 = Color.Red, test3 = null) {
this.x = x;
this.y = y;
this.z = z;
@@ -932,10 +928,6 @@ var Monster2 = class {
const offset = this.bb.__offset(this.bb_pos, 24);
return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0;
}
- /**
- * an example documentation comment: this will end up in the generated code
- * multiline too
- */
testarrayoftables(index, obj) {
const offset = this.bb.__offset(this.bb_pos, 26);
return offset ? (obj || new Monster2()).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos + offset) + index * 4), this.bb) : null;
diff --git a/tests/ts/my-game/example/vec3.js b/tests/ts/my-game/example/vec3.js
index 655fa7e5..cd5b0346 100644
--- a/tests/ts/my-game/example/vec3.js
+++ b/tests/ts/my-game/example/vec3.js
@@ -1,4 +1,5 @@
// automatically generated by the FlatBuffers compiler, do not modify
+import { Color } from '../../my-game/example/color.js';
import { Test } from '../../my-game/example/test.js';
export class Vec3 {
constructor() {
@@ -83,7 +84,7 @@ export class Vec3 {
}
}
export class Vec3T {
- constructor(x = 0.0, y = 0.0, z = 0.0, test1 = 0.0, test2 = 0, test3 = null) {
+ constructor(x = 0.0, y = 0.0, z = 0.0, test1 = 0.0, test2 = Color.Red, test3 = null) {
this.x = x;
this.y = y;
this.z = z;
diff --git a/tests/ts/my-game/example/vec3.ts b/tests/ts/my-game/example/vec3.ts
index ad6cafaa..9e31323b 100644
--- a/tests/ts/my-game/example/vec3.ts
+++ b/tests/ts/my-game/example/vec3.ts
@@ -118,7 +118,7 @@ constructor(
public y: number = 0.0,
public z: number = 0.0,
public test1: number = 0.0,
- public test2: Color = 0,
+ public test2: Color = Color.Red,
public test3: TestT|null = null
){}
diff --git a/tests/ts/typescript_keywords_generated.cjs b/tests/ts/typescript_keywords_generated.cjs
index 5e2e1a87..a25f9adb 100644
--- a/tests/ts/typescript_keywords_generated.cjs
+++ b/tests/ts/typescript_keywords_generated.cjs
@@ -18,10 +18,6 @@ var __copyProps = (to, from, except, desc) => {
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
- // If the importer is in node compatibility mode or this is not an ESM
- // file that has been converted to a CommonJS file using a Babel-
- // compatible transform (i.e. "__esModule" has not been set), then set
- // "default" to the CommonJS "module.exports" for node compatibility.
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
mod
));
@@ -250,9 +246,6 @@ var Type = class {
this.bb.writeUint16(this.bb_pos + offset, value);
return true;
}
- /**
- * The size (octets) of the `base_type` field.
- */
baseSize() {
const offset = this.bb.__offset(this.bb_pos, 12);
return offset ? this.bb.readUint32(this.bb_pos + offset) : 4;
@@ -265,9 +258,6 @@ var Type = class {
this.bb.writeUint32(this.bb_pos + offset, value);
return true;
}
- /**
- * The size (octets) of the `element` field, if present.
- */
elementSize() {
const offset = this.bb.__offset(this.bb_pos, 14);
return offset ? this.bb.readUint32(this.bb_pos + offset) : 0;
@@ -789,9 +779,6 @@ var Field = class {
this.bb.writeInt8(this.bb_pos + offset, +value);
return true;
}
- /**
- * Number of padding octets to always add after this field. Structs only.
- */
padding() {
const offset = this.bb.__offset(this.bb_pos, 28);
return offset ? this.bb.readUint16(this.bb_pos + offset) : 0;
@@ -1564,10 +1551,6 @@ var Schema = class {
this.bb.writeUint64(this.bb_pos + offset, value);
return true;
}
- /**
- * All the files used in this compilation. Files are relative to where
- * flatc was invoked.
- */
fbsFiles(index, obj) {
const offset = this.bb.__offset(this.bb_pos, 18);
return offset ? (obj || new SchemaFile()).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos + offset) + index * 4), this.bb) : null;
diff --git a/tests/ts/union_vector/union_vector_generated.cjs b/tests/ts/union_vector/union_vector_generated.cjs
index b63140cd..ab4b0dcf 100644
--- a/tests/ts/union_vector/union_vector_generated.cjs
+++ b/tests/ts/union_vector/union_vector_generated.cjs
@@ -18,10 +18,6 @@ var __copyProps = (to, from, except, desc) => {
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
- // If the importer is in node compatibility mode or this is not an ESM
- // file that has been converted to a CommonJS file using a Babel-
- // compatible transform (i.e. "__esModule" has not been set), then set
- // "default" to the CommonJS "module.exports" for node compatibility.
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
mod
));