Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Breaking: class default true computed-property-spacing (fixes #12812) #12915

Merged
merged 1 commit into from Feb 28, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
32 changes: 24 additions & 8 deletions docs/rules/computed-property-spacing.md
Expand Up @@ -34,7 +34,7 @@ String option:

Object option:

* `"enforceForClassMembers": true` additionally applies this rule to class members (default is `false`)
* `"enforceForClassMembers": true` (default) additionally applies this rule to class members.

### never

Expand Down Expand Up @@ -92,13 +92,9 @@ obj[ foo[ bar ] ]

#### enforceForClassMembers

By default, this rule does not check class declarations and class expressions,
as the default value for `enforceForClassMembers` is `false`.
With `enforceForClassMembers` set to `true` (default), the rule also disallows/enforces spaces inside of computed keys of class methods, getters and setters.

When `enforceForClassMembers` is set to `true`, the rule will also disallow/enforce spaces inside of
computed keys of class methods, getters and setters.

Examples of **incorrect** code for this rule with `"never"` and `{ "enforceForClassMembers": true }`:
Examples of **incorrect** code for this rule with `"never"` and `{ "enforceForClassMembers": true }` (default):

```js
/*eslint computed-property-spacing: ["error", "never", { "enforceForClassMembers": true }]*/
Expand All @@ -118,7 +114,7 @@ const Bar = class {
}
```

Examples of **correct** code for this rule with `"never"` and `{ "enforceForClassMembers": true }`:
Examples of **correct** code for this rule with `"never"` and `{ "enforceForClassMembers": true }` (default):

```js
/*eslint computed-property-spacing: ["error", "never", { "enforceForClassMembers": true }]*/
Expand All @@ -138,6 +134,26 @@ const Bar = class {
}
```

Examples of **correct** code for this rule with `"never"` and `{ "enforceForClassMembers": false }`:

```js
/*eslint computed-property-spacing: ["error", "never", { "enforceForClassMembers": false }]*/
/*eslint-env es6*/

class Foo {
[a ]() {}
get [b ]() {}
set [b ](value) {}
}

const Bar = class {
[ a](){}
static [ b]() {}
static get [ c ]() {}
static set [ c ](value) {}
}
```

## When Not To Use It

You can turn this rule off if you are not concerned with the consistency of computed properties.
Expand Down
4 changes: 2 additions & 2 deletions lib/rules/computed-property-spacing.js
Expand Up @@ -32,7 +32,7 @@ module.exports = {
properties: {
enforceForClassMembers: {
type: "boolean",
default: false
default: true
}
},
additionalProperties: false
Expand All @@ -51,7 +51,7 @@ module.exports = {
create(context) {
const sourceCode = context.getSourceCode();
const propertyNameMustBeSpaced = context.options[0] === "always"; // default is "never"
const enforceForClassMembers = context.options[1] && context.options[1].enforceForClassMembers;
const enforceForClassMembers = !context.options[1] || context.options[1].enforceForClassMembers;

//--------------------------------------------------------------------------
// Helpers
Expand Down