Merge pull request babel/eslint-plugin-babel#23 from LegNeato/master

Support trailing commas in import and export statements. Fixes babel/eslint-plugin-babel#21
This commit is contained in:
Jason Quense 2015-10-26 10:36:36 +07:00
parent 64291d8d52
commit 9d8a2f14dd
2 changed files with 20 additions and 0 deletions

View File

@ -173,6 +173,12 @@ module.exports = function(context) {
penultimate = context.getLastToken(lastSpecifier), penultimate = context.getLastToken(lastSpecifier),
last = context.getTokenAfter(lastSpecifier); last = context.getTokenAfter(lastSpecifier);
// support trailing commas
if (last.value === ",") {
penultimate = last;
last = context.getTokenAfter(last);
}
validateBraceSpacing(node, first, second, penultimate, last); validateBraceSpacing(node, first, second, penultimate, last);
} }
@ -195,6 +201,12 @@ module.exports = function(context) {
return; return;
} }
// support trailing commas
if (last.value === ",") {
penultimate = last;
last = context.getTokenAfter(last);
}
validateBraceSpacing(node, first, second, penultimate, last); validateBraceSpacing(node, first, second, penultimate, last);
}, },

View File

@ -37,7 +37,11 @@ ruleTester.run('babel/object-curly-spacing', rule, {
{ 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: "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: "import 'room'", options: ["always"], ecmaFeatures: { modules: true } }, { code: "import 'room'", options: ["always"], ecmaFeatures: { modules: true } },
// always - empty object // always - empty object
@ -85,7 +89,11 @@ ruleTester.run('babel/object-curly-spacing', rule, {
{ code: "export {\ndoor\n} from 'room'", options: ["never"], ecmaFeatures: { modules: true } }, { code: "export {\ndoor\n} from 'room'", options: ["never"], ecmaFeatures: { modules: true } },
{ code: "import {house,mouse} from 'caravan'", options: ["never"], ecmaFeatures: { modules: true } }, { code: "import {house,mouse} from 'caravan'", options: ["never"], ecmaFeatures: { modules: true } },
{ code: "import {house, mouse} from 'caravan'", options: ["never"], ecmaFeatures: { modules: true } }, { code: "import {house, mouse} from 'caravan'", options: ["never"], ecmaFeatures: { modules: true } },
{ code: "import {\nhouse,\nmouse} from 'caravan'", options: ["never"], ecmaFeatures: { modules: true } },
{ code: "import {\nhouse,\nmouse,\n} from 'caravan'", options: ["never"], ecmaFeatures: { modules: true } },
{ code: "export {door}", options: ["never"], ecmaFeatures: { modules: true } }, { code: "export {door}", 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 } },
// never - empty object // never - empty object