Merge pull request babel/babel-eslint#271 from danez/fix-use-before-define
Remove visiting of properties left of spread, fixes babel/babel-eslint#249.
This commit is contained in:
parent
6e3aa3357c
commit
217f83fd56
@ -298,18 +298,6 @@ function monkeypatch() {
|
|||||||
if (typeAnnotation) {
|
if (typeAnnotation) {
|
||||||
checkIdentifierOrVisit.call(this, typeAnnotation);
|
checkIdentifierOrVisit.call(this, typeAnnotation);
|
||||||
}
|
}
|
||||||
if (id.type === "ObjectPattern") {
|
|
||||||
// check if object destructuring has a spread
|
|
||||||
var hasSpread = id.properties.filter(function(p) {
|
|
||||||
return p._babelType === "SpreadProperty" || p._babelType === "RestProperty";
|
|
||||||
});
|
|
||||||
// visit properties if so
|
|
||||||
if (hasSpread.length > 0) {
|
|
||||||
for (var j = 0; j < id.properties.length; j++) {
|
|
||||||
this.visit(id.properties[j]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
variableDeclaration.call(this, node);
|
variableDeclaration.call(this, node);
|
||||||
|
|||||||
@ -1137,18 +1137,45 @@ describe("verify", function () {
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
it("visits excluded properties left of spread #95", function () {
|
// This two tests are disabled, as the feature to visit properties when
|
||||||
|
// there is a spread/rest operator has been removed as it caused problems
|
||||||
|
// with other rules #249
|
||||||
|
it.skip("visits excluded properties left of spread #95", function () {
|
||||||
verifyAndAssertMessages(
|
verifyAndAssertMessages(
|
||||||
"var originalObject = {}; var {field1, field2, ...clone} = originalObject;",
|
"var originalObject = {}; var {field1, field2, ...clone} = originalObject;",
|
||||||
{ "no-undef": 1, "no-unused-vars": 1, "no-redeclare": 1 },
|
{ "no-unused-vars": 1 },
|
||||||
[]
|
[]
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
it("visits excluded properties left of spread #210", function () {
|
it.skip("visits excluded properties left of spread #210", function () {
|
||||||
verifyAndAssertMessages(
|
verifyAndAssertMessages(
|
||||||
"const props = { yo: 'yo' }; const { ...otherProps } = props;",
|
"const props = { yo: 'yo' }; const { ...otherProps } = props;",
|
||||||
{ "no-undef": 1, "no-unused-vars": 1, "no-redeclare": 1 },
|
{ "no-unused-vars": 1 },
|
||||||
|
[]
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("does not mark spread variables false-positive", function () {
|
||||||
|
verifyAndAssertMessages(
|
||||||
|
"var originalObject = {}; var {field1, field2, ...clone} = originalObject;",
|
||||||
|
{ "no-undef": 1, "no-redeclare": 1 },
|
||||||
|
[]
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("does not mark spread variables false-positive", function () {
|
||||||
|
verifyAndAssertMessages(
|
||||||
|
"const props = { yo: 'yo' }; const { ...otherProps } = props;",
|
||||||
|
{ "no-undef": 1, "no-redeclare": 1 },
|
||||||
|
[]
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("does not mark spread variables as use-before-define #249", function () {
|
||||||
|
verifyAndAssertMessages(
|
||||||
|
"var originalObject = {}; var {field1, field2, ...clone} = originalObject;",
|
||||||
|
{ "no-use-before-define": 1 },
|
||||||
[]
|
[]
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user