Merge pull request babel/eslint-plugin-babel#38 from zaygraveyard/issue36
Fix: `object-curly-spacing` had been crashing on an empty object patt…
This commit is contained in:
parent
885bfe95dc
commit
9eebd7b057
@ -6,6 +6,8 @@
|
|||||||
* @copyright 2014 Vignesh Anand. All rights reserved.
|
* @copyright 2014 Vignesh Anand. All rights reserved.
|
||||||
* @copyright 2015 Jamund Ferguson. All rights reserved.
|
* @copyright 2015 Jamund Ferguson. All rights reserved.
|
||||||
* @copyright 2015 Mathieu M-Gosselin. All rights reserved.
|
* @copyright 2015 Mathieu M-Gosselin. All rights reserved.
|
||||||
|
* @copyright 2015 Toru Nagashima. All rights reserved.
|
||||||
|
* See LICENSE file in root directory for full license.
|
||||||
*/
|
*/
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
@ -14,7 +16,8 @@
|
|||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
module.exports = function(context) {
|
module.exports = function(context) {
|
||||||
var spaced = context.options[0] === "always";
|
var spaced = context.options[0] === "always",
|
||||||
|
sourceCode = context.getSourceCode();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Determines whether an option is set, relative to the spacing option.
|
* Determines whether an option is set, relative to the spacing option.
|
||||||
@ -44,7 +47,7 @@ module.exports = function(context) {
|
|||||||
* @returns {boolean} Whether or not there is space between the tokens.
|
* @returns {boolean} Whether or not there is space between the tokens.
|
||||||
*/
|
*/
|
||||||
function isSpaced(left, right) {
|
function isSpaced(left, right) {
|
||||||
return left.range[1] < right.range[0];
|
return sourceCode.isSpaceBetweenTokens(left, right);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -64,7 +67,7 @@ module.exports = function(context) {
|
|||||||
* @returns {void}
|
* @returns {void}
|
||||||
*/
|
*/
|
||||||
function reportNoBeginningSpace(node, token) {
|
function reportNoBeginningSpace(node, token) {
|
||||||
context.report(node, token.loc.start,
|
context.report(node, token.loc.end,
|
||||||
"There should be no space after '" + token.value + "'");
|
"There should be no space after '" + token.value + "'");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -86,7 +89,7 @@ module.exports = function(context) {
|
|||||||
* @returns {void}
|
* @returns {void}
|
||||||
*/
|
*/
|
||||||
function reportRequiredBeginningSpace(node, token) {
|
function reportRequiredBeginningSpace(node, token) {
|
||||||
context.report(node, token.loc.start,
|
context.report(node, token.loc.end,
|
||||||
"A space is required after '" + token.value + "'");
|
"A space is required after '" + token.value + "'");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -135,96 +138,115 @@ module.exports = function(context) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------
|
/**
|
||||||
// Public
|
* Reports a given object node if spacing in curly braces is invalid.
|
||||||
//--------------------------------------------------------------------------
|
* @param {ASTNode} node - An ObjectExpression or ObjectPattern node to check.
|
||||||
|
* @returns {void}
|
||||||
|
*/
|
||||||
|
function checkForObject(node) {
|
||||||
|
if (node.properties.length === 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
return {
|
|
||||||
|
|
||||||
// var {x} = y;
|
|
||||||
ObjectPattern: function(node) {
|
|
||||||
var firstSpecifier = node.properties[0],
|
var firstSpecifier = node.properties[0],
|
||||||
lastSpecifier = node.properties[node.properties.length - 1];
|
lastSpecifier = node.properties[node.properties.length - 1];
|
||||||
|
|
||||||
var first = context.getTokenBefore(firstSpecifier),
|
var first = sourceCode.getTokenBefore(firstSpecifier),
|
||||||
second = context.getFirstToken(firstSpecifier),
|
last = sourceCode.getTokenAfter(lastSpecifier);
|
||||||
penultimate = context.getLastToken(lastSpecifier),
|
|
||||||
last = context.getTokenAfter(lastSpecifier);
|
|
||||||
|
|
||||||
// support trailing commas
|
// support trailing commas
|
||||||
if (last.value === ",") {
|
if (last.value === ",") {
|
||||||
penultimate = last;
|
last = sourceCode.getTokenAfter(last);
|
||||||
last = context.getTokenAfter(last);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
validateBraceSpacing(node, first, second, penultimate, last);
|
var second = sourceCode.getTokenAfter(first),
|
||||||
},
|
penultimate = sourceCode.getTokenBefore(last);
|
||||||
|
|
||||||
// import {y} from 'x';
|
validateBraceSpacing(node, first, second, penultimate, last);
|
||||||
ImportDeclaration: function(node) {
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reports a given import node if spacing in curly braces is invalid.
|
||||||
|
* @param {ASTNode} node - An ImportDeclaration node to check.
|
||||||
|
* @returns {void}
|
||||||
|
*/
|
||||||
|
function checkForImport(node) {
|
||||||
|
if (node.specifiers.length === 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
var firstSpecifier = node.specifiers[0],
|
var firstSpecifier = node.specifiers[0],
|
||||||
lastSpecifier = node.specifiers[node.specifiers.length - 1];
|
lastSpecifier = node.specifiers[node.specifiers.length - 1];
|
||||||
|
|
||||||
// don't do anything for namespace or default imports
|
if (lastSpecifier.type !== "ImportSpecifier") {
|
||||||
if (firstSpecifier && lastSpecifier && firstSpecifier.type === "ImportSpecifier" && lastSpecifier.type === "ImportSpecifier") {
|
return;
|
||||||
var first = context.getTokenBefore(firstSpecifier),
|
|
||||||
second = context.getFirstToken(firstSpecifier),
|
|
||||||
penultimate = context.getLastToken(lastSpecifier),
|
|
||||||
last = context.getTokenAfter(lastSpecifier);
|
|
||||||
|
|
||||||
// support trailing commas
|
|
||||||
if (last.value === ",") {
|
|
||||||
penultimate = last;
|
|
||||||
last = context.getTokenAfter(last);
|
|
||||||
}
|
}
|
||||||
|
if (firstSpecifier.type !== "ImportSpecifier") {
|
||||||
|
firstSpecifier = node.specifiers[1];
|
||||||
|
}
|
||||||
|
|
||||||
|
var first = sourceCode.getTokenBefore(firstSpecifier),
|
||||||
|
last = sourceCode.getTokenAfter(lastSpecifier);
|
||||||
|
|
||||||
|
// to support a trailing comma.
|
||||||
|
if (last.value === ",") {
|
||||||
|
last = sourceCode.getTokenAfter(last);
|
||||||
|
}
|
||||||
|
|
||||||
|
var second = sourceCode.getTokenAfter(first),
|
||||||
|
penultimate = sourceCode.getTokenBefore(last);
|
||||||
|
|
||||||
validateBraceSpacing(node, first, second, penultimate, last);
|
validateBraceSpacing(node, first, second, penultimate, last);
|
||||||
}
|
}
|
||||||
|
|
||||||
},
|
/**
|
||||||
|
* Reports a given export node if spacing in curly braces is invalid.
|
||||||
// export {name} from 'yo';
|
* @param {ASTNode} node - An ExportNamedDeclaration node to check.
|
||||||
ExportNamedDeclaration: function(node) {
|
* @returns {void}
|
||||||
if (!node.specifiers.length) {
|
*/
|
||||||
|
function checkForExport(node) {
|
||||||
|
if (node.specifiers.length === 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var firstSpecifier = node.specifiers[0],
|
var firstSpecifier = node.specifiers[0],
|
||||||
lastSpecifier = node.specifiers[node.specifiers.length - 1],
|
lastSpecifier = node.specifiers[node.specifiers.length - 1],
|
||||||
first = context.getTokenBefore(firstSpecifier),
|
first = sourceCode.getTokenBefore(firstSpecifier),
|
||||||
second = context.getFirstToken(firstSpecifier),
|
last = sourceCode.getTokenAfter(lastSpecifier);
|
||||||
penultimate = context.getLastToken(lastSpecifier),
|
|
||||||
last = context.getTokenAfter(lastSpecifier);
|
|
||||||
|
|
||||||
|
// export * as x from '...';
|
||||||
|
// export x from '...';
|
||||||
if (first.value === "export") {
|
if (first.value === "export") {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// support trailing commas
|
// to support a trailing comma.
|
||||||
if (last.value === ",") {
|
if (last.value === ",") {
|
||||||
penultimate = last;
|
last = sourceCode.getTokenAfter(last);
|
||||||
last = context.getTokenAfter(last);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
validateBraceSpacing(node, first, second, penultimate, last);
|
var second = sourceCode.getTokenAfter(first),
|
||||||
|
penultimate = sourceCode.getTokenBefore(last);
|
||||||
|
|
||||||
},
|
validateBraceSpacing(node, first, second, penultimate, last);
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------
|
||||||
|
// Public
|
||||||
|
//--------------------------------------------------------------------------
|
||||||
|
|
||||||
|
return {
|
||||||
|
// var {x} = y;
|
||||||
|
ObjectPattern: checkForObject,
|
||||||
|
|
||||||
// var y = {x: 'y'}
|
// var y = {x: 'y'}
|
||||||
ObjectExpression: function(node) {
|
ObjectExpression: checkForObject,
|
||||||
if (node.properties.length === 0) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
var first = context.getFirstToken(node),
|
// import {y} from 'x';
|
||||||
second = context.getFirstToken(node, 1),
|
ImportDeclaration: checkForImport,
|
||||||
penultimate = context.getLastToken(node, 1),
|
|
||||||
last = context.getLastToken(node);
|
|
||||||
|
|
||||||
validateBraceSpacing(node, first, second, penultimate, last);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
// export {name} from 'yo';
|
||||||
|
ExportNamedDeclaration: checkForExport
|
||||||
};
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|||||||
@ -31,18 +31,28 @@ ruleTester.run('babel/object-curly-spacing', rule, {
|
|||||||
{ code: "var { x: { z }, y } = y", options: ["always"], ecmaFeatures: { destructuring: true } },
|
{ code: "var { x: { z }, y } = y", options: ["always"], ecmaFeatures: { destructuring: true } },
|
||||||
{ code: "var {\ny,\n} = x", options: ["always"], ecmaFeatures: { destructuring: true } },
|
{ code: "var {\ny,\n} = x", options: ["always"], ecmaFeatures: { destructuring: true } },
|
||||||
{ code: "var { y, } = x", options: ["always"], ecmaFeatures: { destructuring: true } },
|
{ code: "var { y, } = x", options: ["always"], ecmaFeatures: { destructuring: true } },
|
||||||
|
{ code: "var { y: x } = x", options: ["always"], ecmaFeatures: { destructuring: true } },
|
||||||
|
|
||||||
// always - import / export
|
// always - import / export
|
||||||
|
{ code: "import door from 'room'", options: ["always"], ecmaFeatures: { modules: true } },
|
||||||
|
{ code: "import * as door from 'room'", options: ["always"], ecmaFeatures: { modules: true } },
|
||||||
{ code: "import { door } from 'room'", options: ["always"], ecmaFeatures: { modules: true } },
|
{ code: "import { door } from 'room'", options: ["always"], ecmaFeatures: { modules: true } },
|
||||||
{ code: "import {\ndoor } from 'room'", options: ["always"], ecmaFeatures: { modules: true } },
|
{ code: "import {\ndoor } from 'room'", options: ["always"], ecmaFeatures: { modules: true } },
|
||||||
{ code: "export { door } from 'room'", options: ["always"], ecmaFeatures: { modules: true } },
|
{ code: "export { door } from 'room'", options: ["always"], ecmaFeatures: { modules: true } },
|
||||||
{ code: "import { house, mouse } from 'caravan'", options: ["always"], ecmaFeatures: { modules: true } },
|
{ code: "import { house, mouse } from 'caravan'", options: ["always"], ecmaFeatures: { modules: true } },
|
||||||
{ code: "import {\nhouse,\nmouse\n} from 'caravan'", options: ["always"], ecmaFeatures: { modules: true } },
|
{ code: "import {\nhouse,\nmouse\n} from 'caravan'", options: ["always"], ecmaFeatures: { modules: true } },
|
||||||
{ code: "import {\nhouse,\nmouse,\n} from 'caravan'", options: ["always"], ecmaFeatures: { modules: true } },
|
{ code: "import {\nhouse,\nmouse,\n} from 'caravan'", options: ["always"], ecmaFeatures: { modules: true } },
|
||||||
|
{ code: "import house, { mouse } from 'caravan'", options: ["always"], ecmaFeatures: { modules: true } },
|
||||||
|
{ code: "import door, { house, mouse } from 'caravan'", options: ["always"], ecmaFeatures: { modules: true } },
|
||||||
{ code: "export { door }", options: ["always"], ecmaFeatures: { modules: true } },
|
{ code: "export { door }", options: ["always"], ecmaFeatures: { modules: true } },
|
||||||
{ code: "export {\ndoor,\nhouse\n}", options: ["always"], ecmaFeatures: { modules: true } },
|
{ code: "export {\ndoor,\nhouse\n}", options: ["always"], ecmaFeatures: { modules: true } },
|
||||||
{ code: "export {\ndoor,\nhouse,\n}", options: ["always"], ecmaFeatures: { modules: true } },
|
{ code: "export {\ndoor,\nhouse,\n}", options: ["always"], ecmaFeatures: { modules: true } },
|
||||||
{ code: "import 'room'", options: ["always"], ecmaFeatures: { modules: true } },
|
{ code: "import 'room'", options: ["always"], ecmaFeatures: { modules: true } },
|
||||||
|
{ code: "import { bar as x } from 'foo';", options: ["always"], ecmaFeatures: { modules: true } },
|
||||||
|
{ code: "import { x, } from 'foo';", options: ["always"], ecmaFeatures: { modules: true } },
|
||||||
|
{ code: "import {\nx,\n} from 'foo';", options: ["always"], ecmaFeatures: { modules: true } },
|
||||||
|
{ code: "export { x, } from 'foo';", options: ["always"], ecmaFeatures: { modules: true } },
|
||||||
|
{ code: "export {\nx,\n} from 'foo';", options: ["always"], ecmaFeatures: { modules: true } },
|
||||||
|
|
||||||
// always - empty object
|
// always - empty object
|
||||||
{ code: "var foo = {};", options: ["always"] },
|
{ code: "var foo = {};", options: ["always"] },
|
||||||
@ -81,8 +91,11 @@ ruleTester.run('babel/object-curly-spacing', rule, {
|
|||||||
{ code: "var {\nx: {z\n}, y} = y", options: ["never"], ecmaFeatures: { destructuring: true } },
|
{ code: "var {\nx: {z\n}, y} = y", options: ["never"], ecmaFeatures: { destructuring: true } },
|
||||||
{ code: "var {\ny,\n} = x", options: ["never"], ecmaFeatures: { destructuring: true } },
|
{ code: "var {\ny,\n} = x", options: ["never"], ecmaFeatures: { destructuring: true } },
|
||||||
{ code: "var {y,} = x", options: ["never"], ecmaFeatures: { destructuring: true } },
|
{ code: "var {y,} = x", options: ["never"], ecmaFeatures: { destructuring: true } },
|
||||||
|
{ code: "var {y:x} = x", options: ["never"], ecmaFeatures: { destructuring: true } },
|
||||||
|
|
||||||
// never - import / export
|
// never - import / export
|
||||||
|
{ code: "import door from 'room'", options: ["never"], ecmaFeatures: { modules: true } },
|
||||||
|
{ code: "import * as door from 'room'", options: ["never"], ecmaFeatures: { modules: true } },
|
||||||
{ code: "import {door} from 'room'", options: ["never"], ecmaFeatures: { modules: true } },
|
{ code: "import {door} from 'room'", options: ["never"], ecmaFeatures: { modules: true } },
|
||||||
{ code: "export {door} from 'room'", options: ["never"], ecmaFeatures: { modules: true } },
|
{ code: "export {door} from 'room'", options: ["never"], ecmaFeatures: { modules: true } },
|
||||||
{ code: "import {\ndoor} from 'room'", options: ["never"], ecmaFeatures: { modules: true } },
|
{ code: "import {\ndoor} from 'room'", options: ["never"], ecmaFeatures: { modules: true } },
|
||||||
@ -95,6 +108,14 @@ ruleTester.run('babel/object-curly-spacing', rule, {
|
|||||||
{ code: "export {\ndoor,\nmouse\n}", options: ["never"], ecmaFeatures: { modules: true } },
|
{ code: "export {\ndoor,\nmouse\n}", options: ["never"], ecmaFeatures: { modules: true } },
|
||||||
{ code: "export {\ndoor,\nmouse,\n}", options: ["never"], ecmaFeatures: { modules: true } },
|
{ code: "export {\ndoor,\nmouse,\n}", options: ["never"], ecmaFeatures: { modules: true } },
|
||||||
{ code: "import 'room'", options: ["never"], ecmaFeatures: { modules: true } },
|
{ code: "import 'room'", options: ["never"], ecmaFeatures: { modules: true } },
|
||||||
|
{ code: "import x, {bar} from 'foo';", options: ["never"], ecmaFeatures: { modules: true } },
|
||||||
|
{ code: "import x, {bar, baz} from 'foo';", options: ["never"], ecmaFeatures: { modules: true } },
|
||||||
|
{ code: "import {bar as y} from 'foo';", options: ["never"], ecmaFeatures: { modules: true } },
|
||||||
|
{ code: "import {x,} from 'foo';", options: ["never"], ecmaFeatures: { modules: true } },
|
||||||
|
{ code: "import {\nx,\n} from 'foo';", options: ["never"], ecmaFeatures: { modules: true } },
|
||||||
|
{ code: "export {x,} from 'foo';", options: ["never"], ecmaFeatures: { modules: true } },
|
||||||
|
{ code: "export {\nx,\n} from 'foo';", options: ["never"], ecmaFeatures: { modules: true } },
|
||||||
|
|
||||||
|
|
||||||
// never - empty object
|
// never - empty object
|
||||||
{ code: "var foo = {};", options: ["never"] },
|
{ code: "var foo = {};", options: ["never"] },
|
||||||
@ -102,9 +123,32 @@ ruleTester.run('babel/object-curly-spacing', rule, {
|
|||||||
// never - objectsInObjects
|
// never - objectsInObjects
|
||||||
{ code: "var obj = {'foo': {'bar': 1, 'baz': 2} };", options: ["never", {"objectsInObjects": true}]},
|
{ code: "var obj = {'foo': {'bar': 1, 'baz': 2} };", options: ["never", {"objectsInObjects": true}]},
|
||||||
|
|
||||||
|
// https://github.com/eslint/eslint/issues/3658
|
||||||
|
// Empty cases.
|
||||||
|
{ code: "var {} = foo;", ecmaFeatures: { destructuring: true }},
|
||||||
|
{ code: "var [] = foo;", ecmaFeatures: { destructuring: true }},
|
||||||
|
{ code: "var {a: {}} = foo;", ecmaFeatures: { destructuring: true }},
|
||||||
|
{ code: "var {a: []} = foo;", ecmaFeatures: { destructuring: true }},
|
||||||
|
{ code: "import {} from 'foo';", ecmaFeatures: { modules: true }},
|
||||||
|
{ code: "export {} from 'foo';", ecmaFeatures: { modules: true }},
|
||||||
|
{ code: "export {};", ecmaFeatures: { modules: true }},
|
||||||
|
{ code: "var {} = foo;", options: ["never"], ecmaFeatures: { destructuring: true }},
|
||||||
|
{ code: "var [] = foo;", options: ["never"], ecmaFeatures: { destructuring: true }},
|
||||||
|
{ code: "var {a: {}} = foo;", options: ["never"], ecmaFeatures: { destructuring: true }},
|
||||||
|
{ code: "var {a: []} = foo;", options: ["never"], ecmaFeatures: { destructuring: true }},
|
||||||
|
{ code: "import {} from 'foo';", options: ["never"], ecmaFeatures: { modules: true }},
|
||||||
|
{ code: "export {} from 'foo';", options: ["never"], ecmaFeatures: { modules: true }},
|
||||||
|
{ code: "export {};", options: ["never"], ecmaFeatures: { modules: true }},
|
||||||
|
|
||||||
// Babel test cases.
|
// Babel test cases.
|
||||||
{ code: "export * as x from \"mod\";", parser: "babel-eslint", ecmaFeatures: { modules: true } },
|
{ code: "export * as x from \"mod\";", parser: "babel-eslint", ecmaFeatures: { modules: true } },
|
||||||
{ code: "export x from \"mod\";", parser: "babel-eslint", ecmaFeatures: { modules: true } },
|
{ code: "export x from \"mod\";", parser: "babel-eslint", ecmaFeatures: { modules: true } },
|
||||||
|
|
||||||
|
// always - destructuring typed object param
|
||||||
|
{ code: "function fn({ a,b }:Object){}", options: ["always"], parser: "babel-eslint", ecmaFeatures: { destructuring: true } },
|
||||||
|
|
||||||
|
// never - destructuring typed object param
|
||||||
|
{ code: "function fn({a,b}: Object){}", options: ["never"], parser: "babel-eslint", ecmaFeatures: { destructuring: true } },
|
||||||
],
|
],
|
||||||
|
|
||||||
invalid: [
|
invalid: [
|
||||||
@ -119,7 +163,7 @@ ruleTester.run('babel/object-curly-spacing', rule, {
|
|||||||
message: "A space is required after '{'",
|
message: "A space is required after '{'",
|
||||||
type: "ImportDeclaration",
|
type: "ImportDeclaration",
|
||||||
line: 1,
|
line: 1,
|
||||||
column: 8
|
column: 9
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
message: "A space is required before '}'",
|
message: "A space is required before '}'",
|
||||||
@ -129,6 +173,175 @@ ruleTester.run('babel/object-curly-spacing', rule, {
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
code: "import { bar as y} from 'foo.js';",
|
||||||
|
options: ["always"],
|
||||||
|
ecmaFeatures: {
|
||||||
|
modules: true
|
||||||
|
},
|
||||||
|
errors: [
|
||||||
|
{
|
||||||
|
message: "A space is required before '}'",
|
||||||
|
type: "ImportDeclaration",
|
||||||
|
line: 1,
|
||||||
|
column: 18
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
code: "import {bar as y} from 'foo.js';",
|
||||||
|
options: ["always"],
|
||||||
|
ecmaFeatures: {
|
||||||
|
modules: true
|
||||||
|
},
|
||||||
|
errors: [
|
||||||
|
{
|
||||||
|
message: "A space is required after '{'",
|
||||||
|
type: "ImportDeclaration",
|
||||||
|
line: 1,
|
||||||
|
column: 9
|
||||||
|
},
|
||||||
|
{
|
||||||
|
message: "A space is required before '}'",
|
||||||
|
type: "ImportDeclaration",
|
||||||
|
line: 1,
|
||||||
|
column: 17
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
code: "import { bar} from 'foo.js';",
|
||||||
|
options: ["always"],
|
||||||
|
ecmaFeatures: {
|
||||||
|
modules: true
|
||||||
|
},
|
||||||
|
errors: [
|
||||||
|
{
|
||||||
|
message: "A space is required before '}'",
|
||||||
|
type: "ImportDeclaration",
|
||||||
|
line: 1,
|
||||||
|
column: 13
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
code: "import x, { bar} from 'foo';",
|
||||||
|
options: ["always"],
|
||||||
|
ecmaFeatures: {
|
||||||
|
modules: true
|
||||||
|
},
|
||||||
|
errors: [
|
||||||
|
{
|
||||||
|
message: "A space is required before '}'",
|
||||||
|
type: "ImportDeclaration",
|
||||||
|
line: 1,
|
||||||
|
column: 16
|
||||||
|
}
|
||||||
|
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
code: "import x, { bar, baz} from 'foo';",
|
||||||
|
options: ["always"],
|
||||||
|
ecmaFeatures: {
|
||||||
|
modules: true
|
||||||
|
},
|
||||||
|
errors: [
|
||||||
|
{
|
||||||
|
message: "A space is required before '}'",
|
||||||
|
type: "ImportDeclaration",
|
||||||
|
line: 1,
|
||||||
|
column: 21
|
||||||
|
}
|
||||||
|
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
code: "import x, {bar} from 'foo';",
|
||||||
|
options: ["always"],
|
||||||
|
ecmaFeatures: {
|
||||||
|
modules: true
|
||||||
|
},
|
||||||
|
errors: [
|
||||||
|
{
|
||||||
|
message: "A space is required after '{'",
|
||||||
|
type: "ImportDeclaration",
|
||||||
|
line: 1,
|
||||||
|
column: 12
|
||||||
|
},
|
||||||
|
{
|
||||||
|
message: "A space is required before '}'",
|
||||||
|
type: "ImportDeclaration",
|
||||||
|
line: 1,
|
||||||
|
column: 15
|
||||||
|
}
|
||||||
|
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
code: "import x, {bar, baz} from 'foo';",
|
||||||
|
options: ["always"],
|
||||||
|
ecmaFeatures: {
|
||||||
|
modules: true
|
||||||
|
},
|
||||||
|
errors: [
|
||||||
|
{
|
||||||
|
message: "A space is required after '{'",
|
||||||
|
type: "ImportDeclaration",
|
||||||
|
line: 1,
|
||||||
|
column: 12
|
||||||
|
},
|
||||||
|
{
|
||||||
|
message: "A space is required before '}'",
|
||||||
|
type: "ImportDeclaration",
|
||||||
|
line: 1,
|
||||||
|
column: 20
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
code: "import {bar,} from 'foo';",
|
||||||
|
options: ["always"],
|
||||||
|
ecmaFeatures: {
|
||||||
|
modules: true
|
||||||
|
},
|
||||||
|
errors: [
|
||||||
|
{
|
||||||
|
message: "A space is required after '{'",
|
||||||
|
type: "ImportDeclaration",
|
||||||
|
line: 1,
|
||||||
|
column: 9
|
||||||
|
},
|
||||||
|
{
|
||||||
|
message: "A space is required before '}'",
|
||||||
|
type: "ImportDeclaration",
|
||||||
|
line: 1,
|
||||||
|
column: 13
|
||||||
|
}
|
||||||
|
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
code: "import { bar, } from 'foo';",
|
||||||
|
options: ["never"],
|
||||||
|
ecmaFeatures: {
|
||||||
|
modules: true
|
||||||
|
},
|
||||||
|
errors: [
|
||||||
|
{
|
||||||
|
message: "There should be no space after '{'",
|
||||||
|
type: "ImportDeclaration",
|
||||||
|
line: 1,
|
||||||
|
column: 9
|
||||||
|
},
|
||||||
|
{
|
||||||
|
message: "There should be no space before '}'",
|
||||||
|
type: "ImportDeclaration",
|
||||||
|
line: 1,
|
||||||
|
column: 15
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
code: "export {bar};",
|
code: "export {bar};",
|
||||||
options: ["always"],
|
options: ["always"],
|
||||||
@ -140,7 +353,7 @@ ruleTester.run('babel/object-curly-spacing', rule, {
|
|||||||
message: "A space is required after '{'",
|
message: "A space is required after '{'",
|
||||||
type: "ExportNamedDeclaration",
|
type: "ExportNamedDeclaration",
|
||||||
line: 1,
|
line: 1,
|
||||||
column: 8
|
column: 9
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
message: "A space is required before '}'",
|
message: "A space is required before '}'",
|
||||||
@ -226,6 +439,38 @@ ruleTester.run('babel/object-curly-spacing', rule, {
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
code: "var {a:b } = x;",
|
||||||
|
options: ["never"],
|
||||||
|
ecmaFeatures: { destructuring: true },
|
||||||
|
errors: [
|
||||||
|
{
|
||||||
|
message: "There should be no space before '}'",
|
||||||
|
type: "ObjectPattern",
|
||||||
|
line: 1,
|
||||||
|
column: 10
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
code: "var { a:b } = x;",
|
||||||
|
options: ["never"],
|
||||||
|
ecmaFeatures: { destructuring: true },
|
||||||
|
errors: [
|
||||||
|
{
|
||||||
|
message: "There should be no space after '{'",
|
||||||
|
type: "ObjectPattern",
|
||||||
|
line: 1,
|
||||||
|
column: 6
|
||||||
|
},
|
||||||
|
{
|
||||||
|
message: "There should be no space before '}'",
|
||||||
|
type: "ObjectPattern",
|
||||||
|
line: 1,
|
||||||
|
column: 11
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
|
||||||
// never-objectsInObjects
|
// never-objectsInObjects
|
||||||
{
|
{
|
||||||
@ -262,7 +507,7 @@ ruleTester.run('babel/object-curly-spacing', rule, {
|
|||||||
message: "A space is required after '{'",
|
message: "A space is required after '{'",
|
||||||
type: "ObjectExpression",
|
type: "ObjectExpression",
|
||||||
line: 1,
|
line: 1,
|
||||||
column: 11
|
column: 12
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
message: "A space is required before '}'",
|
message: "A space is required before '}'",
|
||||||
@ -280,7 +525,7 @@ ruleTester.run('babel/object-curly-spacing', rule, {
|
|||||||
message: "A space is required after '{'",
|
message: "A space is required after '{'",
|
||||||
type: "ObjectExpression",
|
type: "ObjectExpression",
|
||||||
line: 1,
|
line: 1,
|
||||||
column: 11
|
column: 12
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@ -304,7 +549,7 @@ ruleTester.run('babel/object-curly-spacing', rule, {
|
|||||||
message: "There should be no space after '{'",
|
message: "There should be no space after '{'",
|
||||||
type: "ObjectExpression",
|
type: "ObjectExpression",
|
||||||
line: 1,
|
line: 1,
|
||||||
column: 11
|
column: 12
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
message: "There should be no space before '}'",
|
message: "There should be no space before '}'",
|
||||||
@ -334,7 +579,7 @@ ruleTester.run('babel/object-curly-spacing', rule, {
|
|||||||
message: "There should be no space after '{'",
|
message: "There should be no space after '{'",
|
||||||
type: "ObjectExpression",
|
type: "ObjectExpression",
|
||||||
line: 1,
|
line: 1,
|
||||||
column: 11
|
column: 12
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@ -346,13 +591,13 @@ ruleTester.run('babel/object-curly-spacing', rule, {
|
|||||||
message: "There should be no space after '{'",
|
message: "There should be no space after '{'",
|
||||||
type: "ObjectExpression",
|
type: "ObjectExpression",
|
||||||
line: 1,
|
line: 1,
|
||||||
column: 11
|
column: 12
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
message: "There should be no space after '{'",
|
message: "There should be no space after '{'",
|
||||||
type: "ObjectExpression",
|
type: "ObjectExpression",
|
||||||
line: 1,
|
line: 1,
|
||||||
column: 18
|
column: 19
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@ -386,7 +631,7 @@ ruleTester.run('babel/object-curly-spacing', rule, {
|
|||||||
message: "A space is required after '{'",
|
message: "A space is required after '{'",
|
||||||
type: "ObjectExpression",
|
type: "ObjectExpression",
|
||||||
line: 1,
|
line: 1,
|
||||||
column: 22
|
column: 23
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@ -394,6 +639,7 @@ ruleTester.run('babel/object-curly-spacing', rule, {
|
|||||||
// destructuring
|
// destructuring
|
||||||
{
|
{
|
||||||
code: "var {x, y} = y",
|
code: "var {x, y} = y",
|
||||||
|
utput: "var { x, y = y",
|
||||||
ecmaFeatures: {destructuring: true},
|
ecmaFeatures: {destructuring: true},
|
||||||
options: ["always"],
|
options: ["always"],
|
||||||
errors: [
|
errors: [
|
||||||
@ -401,7 +647,7 @@ ruleTester.run('babel/object-curly-spacing', rule, {
|
|||||||
message: "A space is required after '{'",
|
message: "A space is required after '{'",
|
||||||
type: "ObjectPattern",
|
type: "ObjectPattern",
|
||||||
line: 1,
|
line: 1,
|
||||||
column: 5
|
column: 6
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
message: "A space is required before '}'",
|
message: "A space is required before '}'",
|
||||||
@ -413,6 +659,7 @@ ruleTester.run('babel/object-curly-spacing', rule, {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
code: "var { x, y} = y",
|
code: "var { x, y} = y",
|
||||||
|
ouput: "var { x, y } y",
|
||||||
ecmaFeatures: {destructuring: true},
|
ecmaFeatures: {destructuring: true},
|
||||||
options: ["always"],
|
options: ["always"],
|
||||||
errors: [
|
errors: [
|
||||||
@ -426,6 +673,7 @@ ruleTester.run('babel/object-curly-spacing', rule, {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
code: "var { x, y } = y",
|
code: "var { x, y } = y",
|
||||||
|
ouput: "var {x, y} = ",
|
||||||
ecmaFeatures: {destructuring: true},
|
ecmaFeatures: {destructuring: true},
|
||||||
options: ["never"],
|
options: ["never"],
|
||||||
errors: [
|
errors: [
|
||||||
@ -433,7 +681,7 @@ ruleTester.run('babel/object-curly-spacing', rule, {
|
|||||||
message: "There should be no space after '{'",
|
message: "There should be no space after '{'",
|
||||||
type: "ObjectPattern",
|
type: "ObjectPattern",
|
||||||
line: 1,
|
line: 1,
|
||||||
column: 5
|
column: 6
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
message: "There should be no space before '}'",
|
message: "There should be no space before '}'",
|
||||||
@ -478,7 +726,7 @@ ruleTester.run('babel/object-curly-spacing', rule, {
|
|||||||
message: "A space is required after '{'",
|
message: "A space is required after '{'",
|
||||||
type: "ObjectPattern",
|
type: "ObjectPattern",
|
||||||
line: 1,
|
line: 1,
|
||||||
column: 5
|
column: 6
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user