diff --git a/packages/eslint-plugin/src/rules/explicit-member-accessibility.ts b/packages/eslint-plugin/src/rules/explicit-member-accessibility.ts index cf1a0492e95c..d3e734c72b7c 100644 --- a/packages/eslint-plugin/src/rules/explicit-member-accessibility.ts +++ b/packages/eslint-plugin/src/rules/explicit-member-accessibility.ts @@ -196,8 +196,10 @@ export default createRule({ */ function findPublicKeyword( node: + | TSESTree.AccessorProperty | TSESTree.MethodDefinition | TSESTree.PropertyDefinition + | TSESTree.TSAbstractAccessorProperty | TSESTree.TSAbstractMethodDefinition | TSESTree.TSAbstractPropertyDefinition | TSESTree.TSParameterProperty, @@ -238,8 +240,10 @@ export default createRule({ */ function getMissingAccessibilitySuggestions( node: + | TSESTree.AccessorProperty | TSESTree.MethodDefinition | TSESTree.PropertyDefinition + | TSESTree.TSAbstractAccessorProperty | TSESTree.TSAbstractMethodDefinition | TSESTree.TSAbstractPropertyDefinition | TSESTree.TSParameterProperty, @@ -284,7 +288,9 @@ export default createRule({ */ function checkPropertyAccessibilityModifier( propertyDefinition: + | TSESTree.AccessorProperty | TSESTree.PropertyDefinition + | TSESTree.TSAbstractAccessorProperty | TSESTree.TSAbstractPropertyDefinition, ): void { if (propertyDefinition.key.type === AST_NODE_TYPES.PrivateIdentifier) { @@ -389,7 +395,7 @@ export default createRule({ return { 'MethodDefinition, TSAbstractMethodDefinition': checkMethodAccessibilityModifier, - 'PropertyDefinition, TSAbstractPropertyDefinition': + 'PropertyDefinition, TSAbstractPropertyDefinition, AccessorProperty, TSAbstractAccessorProperty': checkPropertyAccessibilityModifier, TSParameterProperty: checkParameterPropertyAccessibilityModifier, }; diff --git a/packages/eslint-plugin/src/util/getMemberHeadLoc.ts b/packages/eslint-plugin/src/util/getMemberHeadLoc.ts index d28058d45691..9949068539fe 100644 --- a/packages/eslint-plugin/src/util/getMemberHeadLoc.ts +++ b/packages/eslint-plugin/src/util/getMemberHeadLoc.ts @@ -30,8 +30,10 @@ import { export function getMemberHeadLoc( sourceCode: Readonly, node: + | TSESTree.AccessorProperty | TSESTree.MethodDefinition | TSESTree.PropertyDefinition + | TSESTree.TSAbstractAccessorProperty | TSESTree.TSAbstractMethodDefinition | TSESTree.TSAbstractPropertyDefinition, ): TSESTree.SourceLocation { diff --git a/packages/eslint-plugin/tests/rules/explicit-member-accessibility.test.ts b/packages/eslint-plugin/tests/rules/explicit-member-accessibility.test.ts index 133ce5671e21..6aa2bf795749 100644 --- a/packages/eslint-plugin/tests/rules/explicit-member-accessibility.test.ts +++ b/packages/eslint-plugin/tests/rules/explicit-member-accessibility.test.ts @@ -308,7 +308,6 @@ class Test { `, options: [{ accessibility: 'no-public' }], }, - // private members { code: ` class Test { @@ -318,6 +317,20 @@ class Test { `, options: [{ accessibility: 'explicit' }], }, + { + code: ` +class Test { + private accessor foo = 1; +} + `, + }, + { + code: ` +abstract class Test { + private abstract accessor foo: number; +} + `, + }, ], invalid: [ { @@ -1919,6 +1932,98 @@ abstract class SomeClass { }, { code: ` +class SomeClass { + accessor foo = 1; +} + `, + errors: [ + { + column: 3, + endColumn: 15, + endLine: 3, + line: 3, + messageId: 'missingAccessibility', + suggestions: [ + { + data: { type: 'public' }, + messageId: 'addExplicitAccessibility', + output: ` +class SomeClass { + public accessor foo = 1; +} + `, + }, + { + data: { type: 'private' }, + messageId: 'addExplicitAccessibility', + output: ` +class SomeClass { + private accessor foo = 1; +} + `, + }, + { + data: { type: 'protected' }, + messageId: 'addExplicitAccessibility', + output: ` +class SomeClass { + protected accessor foo = 1; +} + `, + }, + ], + }, + ], + options: [{ accessibility: 'explicit' }], + }, + { + code: ` +abstract class SomeClass { + abstract accessor foo: string; +} + `, + errors: [ + { + column: 3, + endColumn: 24, + endLine: 3, + line: 3, + messageId: 'missingAccessibility', + suggestions: [ + { + data: { type: 'public' }, + messageId: 'addExplicitAccessibility', + output: ` +abstract class SomeClass { + public abstract accessor foo: string; +} + `, + }, + { + data: { type: 'private' }, + messageId: 'addExplicitAccessibility', + output: ` +abstract class SomeClass { + private abstract accessor foo: string; +} + `, + }, + { + data: { type: 'protected' }, + messageId: 'addExplicitAccessibility', + output: ` +abstract class SomeClass { + protected abstract accessor foo: string; +} + `, + }, + ], + }, + ], + options: [{ accessibility: 'explicit' }], + }, + { + code: ` class DecoratedClass { constructor(@foo @bar() readonly arg: string) {} @foo @bar() x: string; pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy