Skip to content

Bug: isDefinitionFile utility doesn't consider arbitrary extensions #10911

Closed
@ronami

Description

@ronami

Before You File a Bug Report Please Confirm You Have Done The Following...

  • I have tried restarting my IDE and the issue persists.
  • I have updated to the latest version of the packages.
  • I have searched for related issues and found none that matched my issue.
  • I have read the FAQ and my problem is not listed.

Relevant Package

eslint-plugin

Playground Link

No response

Repro Code

// not applicable

ESLint Config

module.exports = {
  parser: "@typescript-eslint/parser",
  rules: {},
};

tsconfig

{
  "compilerOptions": {
    "allowArbitraryExtensions": true,
  }
}

Expected Result

I expected isDefinitionFile to return true for file names like .d.css.ts (or the more general form of {file basename}.d.{extension}.ts) when allowArbitraryExtensions is enabled.

Actual Result

The utility function doesn't seem to consider allowArbitraryExtensions.

Additional Info

This is a follow-up to the discussion in #10714 (comment).

TypeScript v5.0 added support for allowArbitraryExtensions. This seems to affect several rules that use the isDefinitionFile utility:

  • no-empty-interface
  • no-namespace
  • no-shadow
  • no-unused-vars
  • no-useless-empty-export

Versions

package version
@typescript-eslint/eslint-plugin 8.24.1
@typescript-eslint/parser 8.24.1
@typescript-eslint/rule-tester 8.24.1
@typescript-eslint/scope-manager 8.24.1
@typescript-eslint/typescript-estree 8.24.1
@typescript-eslint/type-utils 8.24.1
@typescript-eslint/utils 8.24.1
TypeScript 5.7.3
ESLint 9.21.0
node 22.14.0

Metadata

Metadata

Assignees

No one assigned

    Labels

    accepting prsGo ahead, send a pull request that resolves this issuebugSomething isn't workinggood first issueGood for newcomerslocked due to agePlease open a new issue if you'd like to say more. See https://typescript-eslint.io/contributing.package: eslint-pluginIssues related to @typescript-eslint/eslint-plugin

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions