mirror of https://github.com/webpack/webpack.git
parent
e618bdc6c8
commit
21aa837eb2
|
|
@ -675,6 +675,7 @@ Parser.prototype.walkVariableDeclarators = function walkVariableDeclarators(decl
|
|||
if(idx >= 0) _this.scope.definitions.splice(idx, 1);
|
||||
}
|
||||
} else {
|
||||
_this.walkPattern(declarator.id);
|
||||
_this.enterPattern(declarator.id, function(name, decl) {
|
||||
if(!_this.applyPluginsBailResult1("var " + name, decl)) {
|
||||
_this.scope.renames["$" + name] = undefined;
|
||||
|
|
@ -689,6 +690,37 @@ Parser.prototype.walkVariableDeclarators = function walkVariableDeclarators(decl
|
|||
});
|
||||
};
|
||||
|
||||
Parser.prototype.walkPattern = function walkPattern(pattern) {
|
||||
if(pattern.type === "Identifier")
|
||||
return;
|
||||
if(this["walk" + pattern.type])
|
||||
this["walk" + pattern.type](pattern);
|
||||
};
|
||||
|
||||
Parser.prototype.walkObjectPattern = function walkObjectPattern(pattern) {
|
||||
for(var i = 0, len = pattern.properties.length; i < len; i++) {
|
||||
var prop = pattern.properties[i];
|
||||
if(prop) {
|
||||
if(prop.computed)
|
||||
this.walkExpression(prop.key);
|
||||
if(prop.value)
|
||||
this.walkPattern(prop.value);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
Parser.prototype.walkArrayPattern = function walkArrayPattern(pattern) {
|
||||
for(var i = 0, len = pattern.elements.length; i < len; i++) {
|
||||
var element = pattern.elements[i];
|
||||
if(element)
|
||||
this.walkPattern(element);
|
||||
}
|
||||
};
|
||||
|
||||
Parser.prototype.walkRestElement = function walkRestElement(pattern) {
|
||||
this.walkPattern(pattern.argument);
|
||||
};
|
||||
|
||||
Parser.prototype.walkExpressions = function walkExpressions(expressions) {
|
||||
for(var expressionsIndex = 0, len = expressions.length; expressionsIndex < len; expressionsIndex++) {
|
||||
var expression = expressions[expressionsIndex];
|
||||
|
|
@ -961,7 +993,7 @@ Parser.prototype.inScope = function inScope(params, fn) {
|
|||
var param = params[paramIndex];
|
||||
|
||||
if(typeof param !== "string") {
|
||||
param = _this.enterPattern(param, function(param) {
|
||||
_this.enterPattern(param, function(param) {
|
||||
_this.scope.renames["$" + param] = undefined;
|
||||
_this.scope.definitions.push(param);
|
||||
});
|
||||
|
|
@ -977,7 +1009,7 @@ Parser.prototype.inScope = function inScope(params, fn) {
|
|||
|
||||
Parser.prototype.enterPattern = function enterPattern(pattern, onIdent) {
|
||||
if(pattern && this["enter" + pattern.type])
|
||||
return this["enter" + pattern.type](pattern, onIdent);
|
||||
this["enter" + pattern.type](pattern, onIdent);
|
||||
};
|
||||
|
||||
Parser.prototype.enterIdentifier = function enterIdentifier(pattern, onIdent) {
|
||||
|
|
|
|||
|
|
@ -0,0 +1 @@
|
|||
module.exports = "a";
|
||||
|
|
@ -0,0 +1 @@
|
|||
export default "b";
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
import b from "./b";
|
||||
|
||||
it("should parse dynamic property names", function() {
|
||||
var o = {
|
||||
[require("./a")]: "a",
|
||||
[b]: "b"
|
||||
};
|
||||
o.should.be.eql({
|
||||
a: "a",
|
||||
b: "b"
|
||||
});
|
||||
});
|
||||
|
||||
it("should match dynamic property names", function() {
|
||||
const {
|
||||
[require("./a")]: aa,
|
||||
[b]: bb
|
||||
} = { a: "a", b: "b" };
|
||||
const [x,, ...[{
|
||||
[b]: {
|
||||
[b]: cc
|
||||
}
|
||||
}]] = [0, 1, {b: {b: "c"}}];
|
||||
aa.should.be.eql("a");
|
||||
bb.should.be.eql("b");
|
||||
cc.should.be.eql("c");
|
||||
});
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
var supportsIteratorDestructuring = require("../../../helpers/supportsIteratorDestructuring");
|
||||
var supportsObjectDestructuring = require("../../../helpers/supportsObjectDestructuring");
|
||||
|
||||
module.exports = function(config) {
|
||||
return !config.minimize && supportsIteratorDestructuring() && supportsObjectDestructuring();
|
||||
};
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
module.exports = function supportsIteratorDestructuring() {
|
||||
module.exports = function supportsObjectDestructuring() {
|
||||
try {
|
||||
var f = eval("(function f({x, y}) { return x + y; })");
|
||||
return f({ x: 1, y: 2 }) === 3;
|
||||
|
|
|
|||
Loading…
Reference in New Issue