-
-
Notifications
You must be signed in to change notification settings - Fork 2.8k
Closed
Labels
bugSomething isn't workingSomething isn't workingpackage: eslint-pluginIssues related to @typescript-eslint/eslint-pluginIssues related to @typescript-eslint/eslint-plugin
Description
Hello, prefer-regexp-exec
rule seems to crash in certain cases. This issue was spotted by automated CI run - it is not blocking my development or anything.
AriPerkkio/eslint-remote-tester#271 (comment)
- I have tried restarting my IDE and the issue persists.
- I have updated to the latest version of the packages.
- I have read the FAQ and my problem is not listed.
Repro
{
"root": true,
"env": {
"es6": true
},
"parser": "@typescript-eslint/parser",
"parserOptions": {
"tsconfigRootDir": "./",
"project": ["./tsconfig.json"],
"ecmaVersion": 2020,
"sourceType": "module"
},
"plugins": ["@typescript-eslint/eslint-plugin"],
"rules": {
"@typescript-eslint/prefer-regexp-exec": "error"
}
}
export function temp(text: string): void {
// OK
text.match(new RegExp(`${"hello"}`));
// Crash
text.match(new RegExp(`${"hello".toString()}`));
}
{
"include": ["./index.ts"],
"compilerOptions": {
"lib": ["es2020", "DOM"],
"target": "es6",
"module": "esnext",
"moduleResolution": "node"
}
}
Expected Result
Should not crash
Actual Result
Oops! Something went wrong! :(
ESLint: 7.32.0
TypeError: Cannot read property 'type' of undefined
Occurred while linting /workspaces/eslint-demo-repro/index.tsx:6
at isLikelyToContainGlobalFlag (/workspaces/eslint-demo-repro/node_modules/@typescript-eslint/eslint-plugin/dist/rules/prefer-regexp-exec.js:84:31)
at CallExpression[arguments.length=1] > MemberExpression.callee[property.name='match'][computed=false] (/workspaces/eslint-demo-repro/node_modules/@typescript-eslint/eslint-plugin/dist/rules/prefer-regexp-exec.js:100:40)
at /workspaces/eslint-demo-repro/node_modules/eslint/lib/linter/safe-emitter.js:45:58
at Array.forEach (<anonymous>)
at Object.emit (/workspaces/eslint-demo-repro/node_modules/eslint/lib/linter/safe-emitter.js:45:38)
at NodeEventGenerator.applySelector (/workspaces/eslint-demo-repro/node_modules/eslint/lib/linter/node-event-generator.js:293:26)
at NodeEventGenerator.applySelectors (/workspaces/eslint-demo-repro/node_modules/eslint/lib/linter/node-event-generator.js:322:22)
at NodeEventGenerator.enterNode (/workspaces/eslint-demo-repro/node_modules/eslint/lib/linter/node-event-generator.js:336:14)
at CodePathAnalyzer.enterNode (/workspaces/eslint-demo-repro/node_modules/eslint/lib/linter/code-path-analysis/code-path-analyzer.js:711:23)
at /workspaces/eslint-demo-repro/node_modules/eslint/lib/linter/linter.js:960:32
Additional Info
Crash reports from real projects
Rule: prefer-regexp-exec
- Message:
Cannot read property 'type' of undefined Occurred while linting /home/runner/work/eslint-remote-tester/eslint-remote-tester/ci/node_modules/eslint-remote-tester/.cache-eslint-remote-tester/Amsterdam/matomo-tracker/packages/react/src/utils/useOutboundClickListener.tsx:29
- Path:
Amsterdam/matomo-tracker/packages/react/src/utils/useOutboundClickListener.tsx
- Link
27 | if (
28 | // eslint-disable-next-line @typescript-eslint/prefer-regexp-exec
> 29 | !href.match(
30 | new RegExp(
31 | `^(http://www.|https://www.|http://|https://)+(${window.location.hostname})`,
32 | ),
TypeError: Cannot read property 'type' of undefined
Occurred while linting /home/runner/work/eslint-remote-tester/eslint-remote-tester/ci/node_modules/eslint-remote-tester/.cache-eslint-remote-tester/Amsterdam/matomo-tracker/packages/react/src/utils/useOutboundClickListener.tsx:29
at isLikelyToContainGlobalFlag (/home/runner/work/eslint-remote-tester/eslint-remote-tester/ci/node_modules/@typescript-eslint/eslint-plugin/dist/rules/prefer-regexp-exec.js:84:31)
at CallExpression[arguments.length=1] > MemberExpression.callee[property.name='match'][computed=false] (/home/runner/work/eslint-remote-tester/eslint-remote-tester/ci/node_modules/@typescript-eslint/eslint-plugin/dist/rules/prefer-regexp-exec.js:100:40)
at /home/runner/work/eslint-remote-tester/eslint-remote-tester/ci/node_modules/eslint/lib/linter/safe-emitter.js:45:58
at Array.forEach (<anonymous>)
at Object.emit (/home/runner/work/eslint-remote-tester/eslint-remote-tester/ci/node_modules/eslint/lib/linter/safe-emitter.js:45:38)
at NodeEventGenerator.applySelector (/home/runner/work/eslint-remote-tester/eslint-remote-tester/ci/node_modules/eslint/lib/linter/node-event-generator.js:293:26)
at NodeEventGenerator.applySelectors (/home/runner/work/eslint-remote-tester/eslint-remote-tester/ci/node_modules/eslint/lib/linter/node-event-generator.js:322:22)
at NodeEventGenerator.enterNode (/home/runner/work/eslint-remote-tester/eslint-remote-tester/ci/node_modules/eslint/lib/linter/node-event-generator.js:336:14)
at CodePathAnalyzer.enterNode (/home/runner/work/eslint-remote-tester/eslint-remote-tester/ci/node_modules/eslint/lib/linter/code-path-analysis/code-path-analyzer.js:711:23)
at /home/runner/work/eslint-remote-tester/eslint-remote-tester/ci/node_modules/eslint/lib/linter/linter.js:960:32
Rule: prefer-regexp-exec
- Message:
Cannot read property 'type' of undefined Occurred while linting /home/runner/work/eslint-remote-tester/eslint-remote-tester/ci/node_modules/eslint-remote-tester/.cache-eslint-remote-tester/Coffeekraken/coffeekraken/packages/core/s-interface/src/shared/SInterface.ts:366
- Path:
Coffeekraken/coffeekraken/packages/core/s-interface/src/shared/SInterface.ts
- Link
364 | const obj = this._definition[defArgName];
365 | if (obj.explicit) {
> 366 | if (obj.alias && ` ${objectOrString} `.match(new RegExp(`\\s-${obj.alias}\\s`))) return;
367 | else if (` ${objectOrString} `.match(new RegExp(`\\s--${argName}\\s`))) return;
368 | delete objectOnWhichToApplyInterface[argName];
369 | }
TypeError: Cannot read property 'type' of undefined
Occurred while linting /home/runner/work/eslint-remote-tester/eslint-remote-tester/ci/node_modules/eslint-remote-tester/.cache-eslint-remote-tester/Coffeekraken/coffeekraken/packages/core/s-interface/src/shared/SInterface.ts:366
at isLikelyToContainGlobalFlag (/home/runner/work/eslint-remote-tester/eslint-remote-tester/ci/node_modules/@typescript-eslint/eslint-plugin/dist/rules/prefer-regexp-exec.js:84:31)
at CallExpression[arguments.length=1] > MemberExpression.callee[property.name='match'][computed=false] (/home/runner/work/eslint-remote-tester/eslint-remote-tester/ci/node_modules/@typescript-eslint/eslint-plugin/dist/rules/prefer-regexp-exec.js:100:40)
at /home/runner/work/eslint-remote-tester/eslint-remote-tester/ci/node_modules/eslint-remote-tester/node_modules/eslint/lib/linter/safe-emitter.js:45:58
at Array.forEach (<anonymous>)
at Object.emit (/home/runner/work/eslint-remote-tester/eslint-remote-tester/ci/node_modules/eslint-remote-tester/node_modules/eslint/lib/linter/safe-emitter.js:45:38)
at NodeEventGenerator.applySelector (/home/runner/work/eslint-remote-tester/eslint-remote-tester/ci/node_modules/eslint-remote-tester/node_modules/eslint/lib/linter/node-event-generator.js:293:26)
at NodeEventGenerator.applySelectors (/home/runner/work/eslint-remote-tester/eslint-remote-tester/ci/node_modules/eslint-remote-tester/node_modules/eslint/lib/linter/node-event-generator.js:322:22)
at NodeEventGenerator.enterNode (/home/runner/work/eslint-remote-tester/eslint-remote-tester/ci/node_modules/eslint-remote-tester/node_modules/eslint/lib/linter/node-event-generator.js:336:14)
at CodePathAnalyzer.enterNode (/home/runner/work/eslint-remote-tester/eslint-remote-tester/ci/node_modules/eslint-remote-tester/node_modules/eslint/lib/linter/code-path-analysis/code-path-analyzer.js:711:23)
at /home/runner/work/eslint-remote-tester/eslint-remote-tester/ci/node_modules/eslint-remote-tester/node_modules/eslint/lib/linter/linter.js:960:32
Versions
package | version |
---|---|
@typescript-eslint/eslint-plugin |
4.32.0 |
@typescript-eslint/parser |
4.32.0 |
TypeScript |
4.4.3 |
ESLint |
7.32.Z |
node |
14.17.4 |
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't workingpackage: eslint-pluginIssues related to @typescript-eslint/eslint-pluginIssues related to @typescript-eslint/eslint-plugin