gajus / eslint-plugin-jsdoc

JSDoc specific linting rules for ESLint.
Other
1.09k stars 157 forks source link

`jsdoc/match-name` do not match correctly when default value of `@template` contains spaces #1233

Closed Arkellys closed 4 months ago

Arkellys commented 4 months ago

Expected behavior

I expect the rule jsdoc/match-name to ignore the default param passed to @template when testing the name, whether or not the value contains spaces. It works correctly when the same rules are applied on @property.

Actual behavior

Currently jsdoc/match-name fails when the default value passed to a @template contains space.

ESLint Config

"jsdoc/match-name": ["warn", {
   match: [
    {
      allowName: "/^[A-Z]{1}$/",
      message: "The name should be a single capital letter.",
      tags: ["template"]
    }
  ]
}]

Full config available here.

ESLint sample

This fails:

/**
 * @template {string} [T=typeof FOO]  ->  The name should be a single capital letter. eslint(jsdoc/match-name)
 * @typedef {object} Test
 * @property {T} test
 */

These passes:

/**
 * @template {string} [T="foo"]
 * @typedef {object} Test
 * @property {T} test
 */
/**
 * @template {string} T
 * @typedef {object} Test
 * @property {T} test
 */

Note that the space also messes up with the rule jsdoc/require-hyphen-before-param-description, and auto fix will do:

@template [T=typeof - FOO]

Environment

github-actions[bot] commented 4 months ago

:tada: This issue has been resolved in version 48.2.7 :tada:

The release is available on:

Your semantic-release bot :package::rocket: