diff --git a/docs/rules/check-template-names.md b/docs/rules/check-template-names.md index 7626ad57..8007ca1d 100644 --- a/docs/rules/check-template-names.md +++ b/docs/rules/check-template-names.md @@ -125,5 +125,10 @@ export type Extras = [D, U, V | undefined]; * @typedef {[D, U, V | undefined]} Extras * @typedef {[D, U, V | undefined]} Extras */ + +/** + * @typedef Foo + * @prop {string} bar + */ ```` diff --git a/docs/rules/require-template.md b/docs/rules/require-template.md index 8bef1adf..186c9f7a 100644 --- a/docs/rules/require-template.md +++ b/docs/rules/require-template.md @@ -143,5 +143,10 @@ export type Extras = [D, U, V | undefined]; * @typedef {[D, U, V | undefined]} Extras * @typedef {[D, U, V | undefined]} Extras */ + +/** + * @typedef Foo + * @prop {string} bar + */ ```` diff --git a/src/rules/checkTemplateNames.js b/src/rules/checkTemplateNames.js index 439597c6..c84516f9 100644 --- a/src/rules/checkTemplateNames.js +++ b/src/rules/checkTemplateNames.js @@ -65,9 +65,16 @@ export default iterateJsdoc(({ } const potentialType = typedefTags[0].type; - const parsedType = mode === 'permissive' ? - tryParseType(/** @type {string} */ (potentialType)) : - parseType(/** @type {string} */ (potentialType), mode) + + let parsedType; + try { + parsedType = mode === 'permissive' ? + tryParseType(/** @type {string} */ (potentialType)) : + parseType(/** @type {string} */ (potentialType), mode) + } catch { + // Todo: Should handle types in @prop/erty + return; + } traverse(parsedType, (nde) => { const { diff --git a/src/rules/requireTemplate.js b/src/rules/requireTemplate.js index 015902eb..0f0730d1 100644 --- a/src/rules/requireTemplate.js +++ b/src/rules/requireTemplate.js @@ -76,9 +76,16 @@ export default iterateJsdoc(({ } const potentialType = typedefTags[0].type; - const parsedType = mode === 'permissive' ? - tryParseType(/** @type {string} */ (potentialType)) : - parseType(/** @type {string} */ (potentialType), mode) + + let parsedType; + try { + parsedType = mode === 'permissive' ? + tryParseType(/** @type {string} */ (potentialType)) : + parseType(/** @type {string} */ (potentialType), mode) + } catch { + // Todo: Should handle types in @prop/erty + return; + } traverse(parsedType, (nde) => { const { diff --git a/test/rules/assertions/checkTemplateNames.js b/test/rules/assertions/checkTemplateNames.js index afe55f67..a9bdb794 100644 --- a/test/rules/assertions/checkTemplateNames.js +++ b/test/rules/assertions/checkTemplateNames.js @@ -193,5 +193,13 @@ export default { */ `, }, + { + code: ` + /** + * @typedef Foo + * @prop {string} bar + */ + `, + }, ], }; diff --git a/test/rules/assertions/requireTemplate.js b/test/rules/assertions/requireTemplate.js index 6bb092b4..b3ef8c4b 100644 --- a/test/rules/assertions/requireTemplate.js +++ b/test/rules/assertions/requireTemplate.js @@ -205,5 +205,13 @@ export default { */ `, }, + { + code: ` + /** + * @typedef Foo + * @prop {string} bar + */ + `, + }, ], };