Skip to content

Commit 736a23b

Browse files
committedJul 20, 2024·
fix(require-template, check-template-names): avoid erring out with missing or bad typedef type; partial fix for #1269
1 parent 6fb0b3e commit 736a23b

File tree

6 files changed

+46
-6
lines changed

6 files changed

+46
-6
lines changed
 

‎docs/rules/check-template-names.md

+5
Original file line numberDiff line numberDiff line change
@@ -125,5 +125,10 @@ export type Extras<D, U, V> = [D, U, V | undefined];
125125
* @typedef {[D, U, V | undefined]} Extras
126126
* @typedef {[D, U, V | undefined]} Extras
127127
*/
128+
129+
/**
130+
* @typedef Foo
131+
* @prop {string} bar
132+
*/
128133
````
129134

‎docs/rules/require-template.md

+5
Original file line numberDiff line numberDiff line change
@@ -143,5 +143,10 @@ export type Extras<D, U, V> = [D, U, V | undefined];
143143
* @typedef {[D, U, V | undefined]} Extras
144144
* @typedef {[D, U, V | undefined]} Extras
145145
*/
146+
147+
/**
148+
* @typedef Foo
149+
* @prop {string} bar
150+
*/
146151
````
147152

‎src/rules/checkTemplateNames.js

+10-3
Original file line numberDiff line numberDiff line change
@@ -65,9 +65,16 @@ export default iterateJsdoc(({
6565
}
6666

6767
const potentialType = typedefTags[0].type;
68-
const parsedType = mode === 'permissive' ?
69-
tryParseType(/** @type {string} */ (potentialType)) :
70-
parseType(/** @type {string} */ (potentialType), mode)
68+
69+
let parsedType;
70+
try {
71+
parsedType = mode === 'permissive' ?
72+
tryParseType(/** @type {string} */ (potentialType)) :
73+
parseType(/** @type {string} */ (potentialType), mode)
74+
} catch {
75+
// Todo: Should handle types in @prop/erty
76+
return;
77+
}
7178

7279
traverse(parsedType, (nde) => {
7380
const {

‎src/rules/requireTemplate.js

+10-3
Original file line numberDiff line numberDiff line change
@@ -76,9 +76,16 @@ export default iterateJsdoc(({
7676
}
7777

7878
const potentialType = typedefTags[0].type;
79-
const parsedType = mode === 'permissive' ?
80-
tryParseType(/** @type {string} */ (potentialType)) :
81-
parseType(/** @type {string} */ (potentialType), mode)
79+
80+
let parsedType;
81+
try {
82+
parsedType = mode === 'permissive' ?
83+
tryParseType(/** @type {string} */ (potentialType)) :
84+
parseType(/** @type {string} */ (potentialType), mode)
85+
} catch {
86+
// Todo: Should handle types in @prop/erty
87+
return;
88+
}
8289

8390
traverse(parsedType, (nde) => {
8491
const {

‎test/rules/assertions/checkTemplateNames.js

+8
Original file line numberDiff line numberDiff line change
@@ -193,5 +193,13 @@ export default {
193193
*/
194194
`,
195195
},
196+
{
197+
code: `
198+
/**
199+
* @typedef Foo
200+
* @prop {string} bar
201+
*/
202+
`,
203+
},
196204
],
197205
};

‎test/rules/assertions/requireTemplate.js

+8
Original file line numberDiff line numberDiff line change
@@ -205,5 +205,13 @@ export default {
205205
*/
206206
`,
207207
},
208+
{
209+
code: `
210+
/**
211+
* @typedef Foo
212+
* @prop {string} bar
213+
*/
214+
`,
215+
},
208216
],
209217
};

0 commit comments

Comments
 (0)
Please sign in to comment.