Skip to content

Commit e8be03c

Browse files
fix: remove optional chaining
1 parent 543d36c commit e8be03c

File tree

2 files changed

+36
-6
lines changed

2 files changed

+36
-6
lines changed

Diff for: packages/eslint-plugin/src/rules/no-array-constructor.ts

+6-4
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import type { TSESTree } from '@typescript-eslint/utils';
22

33
import { AST_NODE_TYPES } from '@typescript-eslint/utils';
44

5-
import { createRule, isOptionalCallExpression } from '../util';
5+
import { createRule } from '../util';
66

77
export default createRule({
88
name: 'no-array-constructor',
@@ -32,8 +32,7 @@ export default createRule({
3232
node.arguments.length !== 1 &&
3333
node.callee.type === AST_NODE_TYPES.Identifier &&
3434
node.callee.name === 'Array' &&
35-
!node.typeArguments &&
36-
!isOptionalCallExpression(node)
35+
!node.typeArguments
3736
) {
3837
context.report({
3938
node,
@@ -43,7 +42,10 @@ export default createRule({
4342
return fixer.replaceText(node, '[]');
4443
}
4544
const fullText = context.sourceCode.getText(node);
46-
const preambleLength = node.callee.range[1] - node.range[0];
45+
const preambleLength =
46+
node.parent.type === AST_NODE_TYPES.ChainExpression
47+
? node.callee.range[1] + 2 - node.range[0]
48+
: node.callee.range[1] - node.range[0];
4749

4850
return fixer.replaceText(
4951
node,

Diff for: packages/eslint-plugin/tests/rules/no-array-constructor.test.ts

+30-2
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,6 @@ ruleTester.run('no-array-constructor', rule, {
3333
'Array.foo?.();',
3434
'Array?.<Foo>(1, 2, 3);',
3535
'Array?.<Foo>();',
36-
'Array?.(0, 1, 2);',
37-
'Array?.(x, y);',
3836
],
3937

4038
invalid: [
@@ -58,6 +56,16 @@ ruleTester.run('no-array-constructor', rule, {
5856
],
5957
output: '[];',
6058
},
59+
{
60+
code: 'Array?.();',
61+
errors: [
62+
{
63+
messageId,
64+
type: AST_NODE_TYPES.CallExpression,
65+
},
66+
],
67+
output: '[];',
68+
},
6169
{
6270
code: 'new Array(x, y);',
6371
errors: [
@@ -78,6 +86,16 @@ ruleTester.run('no-array-constructor', rule, {
7886
],
7987
output: '[x, y];',
8088
},
89+
{
90+
code: 'Array?.(x, y);',
91+
errors: [
92+
{
93+
messageId,
94+
type: AST_NODE_TYPES.CallExpression,
95+
},
96+
],
97+
output: '[x, y];',
98+
},
8199
{
82100
code: 'new Array(0, 1, 2);',
83101
errors: [
@@ -98,6 +116,16 @@ ruleTester.run('no-array-constructor', rule, {
98116
],
99117
output: '[0, 1, 2];',
100118
},
119+
{
120+
code: 'Array?.(0, 1, 2);',
121+
errors: [
122+
{
123+
messageId,
124+
type: AST_NODE_TYPES.CallExpression,
125+
},
126+
],
127+
output: '[0, 1, 2];',
128+
},
101129
{
102130
code: `
103131
new Array(0, 1, 2);

0 commit comments

Comments
 (0)