Skip to content

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

Closed
@Arkellys

Description

@Arkellys

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

  • Node version: 20.9.0
  • ESLint version: 8.57.0
  • eslint-plugin-jsdoc version: 48.2.6

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions