Skip to content

Commit c68b436

Browse files
Eliminate duplicate name/baseName checks in instanceOf type guards when name equals baseName
1 parent 37bad16 commit c68b436

6 files changed

Lines changed: 17 additions & 6 deletions

File tree

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptFetchClientCodegen.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1382,6 +1382,7 @@ public ExtendedCodegenProperty(CodegenProperty cp) {
13821382
this.xmlName = cp.xmlName;
13831383
this.xmlNamespace = cp.xmlNamespace;
13841384
this.isXmlWrapped = cp.isXmlWrapped;
1385+
this.setHasSanitizedName(cp.getHasSanitizedName());
13851386
}
13861387

13871388
@Override

modules/openapi-generator/src/main/resources/typescript-fetch/modelGeneric.mustache

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,23 @@ import { type {{modelName}}, {{modelName}}FromJSONTyped, {{modelName}}ToJSON, {{
2525
export function instanceOf{{classname}}(value: object): value is {{classname}} {
2626
{{#vars}}
2727
{{#required}}
28+
{{#hasSanitizedName}}
2829
if ((!('{{name}}' in value) && !('{{baseName}}' in value)) || (value['{{name}}'] === undefined && value['{{baseName}}'] === undefined)) return false;
30+
{{/hasSanitizedName}}
31+
{{^hasSanitizedName}}
32+
if (!('{{name}}' in value) || value['{{name}}'] === undefined) return false;
33+
{{/hasSanitizedName}}
2934
{{#isEnum}}
3035
{{#allowableValues}}
3136
{{#values}}
3237
{{#-first}}
3338
{{#-last}}
39+
{{#hasSanitizedName}}
3440
if (value['{{name}}'] !== '{{.}}' && value['{{baseName}}'] !== '{{.}}') return false;
41+
{{/hasSanitizedName}}
42+
{{^hasSanitizedName}}
43+
if (value['{{name}}'] !== '{{.}}') return false;
44+
{{/hasSanitizedName}}
3545
{{/-last}}
3646
{{/-first}}
3747
{{/values}}

samples/client/petstore/typescript-fetch/builds/oneOf/models/OptionOne.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@ export type OptionOneDiscriminatorFieldEnum = typeof OptionOneDiscriminatorField
4141
* Check if a given object implements the OptionOne interface.
4242
*/
4343
export function instanceOfOptionOne(value: object): value is OptionOne {
44-
if ((!('discriminatorField' in value) && !('discriminatorField' in value)) || (value['discriminatorField'] === undefined && value['discriminatorField'] === undefined)) return false;
45-
if (value['discriminatorField'] !== 'optionOne' && value['discriminatorField'] !== 'optionOne') return false;
44+
if (!('discriminatorField' in value) || value['discriminatorField'] === undefined) return false;
45+
if (value['discriminatorField'] !== 'optionOne') return false;
4646
return true;
4747
}
4848

samples/client/petstore/typescript-fetch/builds/oneOf/models/OptionTwo.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@ export type OptionTwoDiscriminatorFieldEnum = typeof OptionTwoDiscriminatorField
4141
* Check if a given object implements the OptionTwo interface.
4242
*/
4343
export function instanceOfOptionTwo(value: object): value is OptionTwo {
44-
if ((!('discriminatorField' in value) && !('discriminatorField' in value)) || (value['discriminatorField'] === undefined && value['discriminatorField'] === undefined)) return false;
45-
if (value['discriminatorField'] !== 'optionTwo' && value['discriminatorField'] !== 'optionTwo') return false;
44+
if (!('discriminatorField' in value) || value['discriminatorField'] === undefined) return false;
45+
if (value['discriminatorField'] !== 'optionTwo') return false;
4646
return true;
4747
}
4848

samples/client/petstore/typescript-fetch/builds/oneOf/models/TestA.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ export interface TestA {
3131
* Check if a given object implements the TestA interface.
3232
*/
3333
export function instanceOfTestA(value: object): value is TestA {
34-
if ((!('foo' in value) && !('foo' in value)) || (value['foo'] === undefined && value['foo'] === undefined)) return false;
34+
if (!('foo' in value) || value['foo'] === undefined) return false;
3535
return true;
3636
}
3737

samples/client/petstore/typescript-fetch/builds/oneOf/models/TestB.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ export interface TestB {
3131
* Check if a given object implements the TestB interface.
3232
*/
3333
export function instanceOfTestB(value: object): value is TestB {
34-
if ((!('bar' in value) && !('bar' in value)) || (value['bar'] === undefined && value['bar'] === undefined)) return false;
34+
if (!('bar' in value) || value['bar'] === undefined) return false;
3535
return true;
3636
}
3737

0 commit comments

Comments
 (0)