diff --git a/packages/eslint-plugin/src/rules/prefer-readonly.ts b/packages/eslint-plugin/src/rules/prefer-readonly.ts index c82aaf45ab3..451515d18ed 100644 --- a/packages/eslint-plugin/src/rules/prefer-readonly.ts +++ b/packages/eslint-plugin/src/rules/prefer-readonly.ts @@ -179,7 +179,7 @@ export default util.createRule({ const tsNode = parserServices.esTreeNodeToTSNodeMap.get< ts.PropertyAccessExpression >(node); - if (classScopeStack.length !== 0) { + if (classScopeStack.length !== 0 && !node.computed) { handlePropertyAccessExpression( tsNode, tsNode.parent, diff --git a/packages/eslint-plugin/tests/rules/prefer-readonly.test.ts b/packages/eslint-plugin/tests/rules/prefer-readonly.test.ts index a5ff4734e1c..5b2a6687339 100644 --- a/packages/eslint-plugin/tests/rules/prefer-readonly.test.ts +++ b/packages/eslint-plugin/tests/rules/prefer-readonly.test.ts @@ -215,6 +215,11 @@ ruleTester.run('prefer-readonly', rule, { }, ], }, + `class TestComputedParameter { + public mutate() { + this['computed'] = 1; + } + }`, ], invalid: [ {