Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Breaking: class default true computed-property-spacing (fixes #12812)…
… (#12915)
  • Loading branch information
mdjermanovic committed Feb 28, 2020
1 parent b8e20d3 commit afa9aac
Show file tree
Hide file tree
Showing 3 changed files with 543 additions and 41 deletions.
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

0 comments on commit afa9aac

Please sign in to comment.