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);
|
if(idx >= 0) _this.scope.definitions.splice(idx, 1);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
_this.walkPattern(declarator.id);
|
||||||
_this.enterPattern(declarator.id, function(name, decl) {
|
_this.enterPattern(declarator.id, function(name, decl) {
|
||||||
if(!_this.applyPluginsBailResult1("var " + name, decl)) {
|
if(!_this.applyPluginsBailResult1("var " + name, decl)) {
|
||||||
_this.scope.renames["$" + name] = undefined;
|
_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) {
|
Parser.prototype.walkExpressions = function walkExpressions(expressions) {
|
||||||
for(var expressionsIndex = 0, len = expressions.length; expressionsIndex < len; expressionsIndex++) {
|
for(var expressionsIndex = 0, len = expressions.length; expressionsIndex < len; expressionsIndex++) {
|
||||||
var expression = expressions[expressionsIndex];
|
var expression = expressions[expressionsIndex];
|
||||||
|
|
@ -961,7 +993,7 @@ Parser.prototype.inScope = function inScope(params, fn) {
|
||||||
var param = params[paramIndex];
|
var param = params[paramIndex];
|
||||||
|
|
||||||
if(typeof param !== "string") {
|
if(typeof param !== "string") {
|
||||||
param = _this.enterPattern(param, function(param) {
|
_this.enterPattern(param, function(param) {
|
||||||
_this.scope.renames["$" + param] = undefined;
|
_this.scope.renames["$" + param] = undefined;
|
||||||
_this.scope.definitions.push(param);
|
_this.scope.definitions.push(param);
|
||||||
});
|
});
|
||||||
|
|
@ -977,7 +1009,7 @@ Parser.prototype.inScope = function inScope(params, fn) {
|
||||||
|
|
||||||
Parser.prototype.enterPattern = function enterPattern(pattern, onIdent) {
|
Parser.prototype.enterPattern = function enterPattern(pattern, onIdent) {
|
||||||
if(pattern && this["enter" + pattern.type])
|
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) {
|
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 {
|
try {
|
||||||
var f = eval("(function f({x, y}) { return x + y; })");
|
var f = eval("(function f({x, y}) { return x + y; })");
|
||||||
return f({ x: 1, y: 2 }) === 3;
|
return f({ x: 1, y: 2 }) === 3;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue