Skip to content

Commit 1a21859

Browse files
authored
Merge pull request webpack#3259 from zhaoshengjun/issue-3252
fix issue webpack#3252
2 parents 1b24bcf + 67b2f59 commit 1a21859

5 files changed

Lines changed: 39 additions & 5 deletions

File tree

lib/Parser.js

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -919,11 +919,7 @@ Parser.prototype.enterIdentifier = function enterIdentifier(pattern, onIdent) {
919919

920920
Parser.prototype.enterObjectPattern = function enterObjectPattern(pattern, onIdent) {
921921
pattern.properties.forEach(function(property) {
922-
switch(property.type) {
923-
case "AssignmentProperty":
924-
this.enterPattern(property.value, onIdent);
925-
break;
926-
}
922+
this.enterPattern(property.value, onIdent);
927923
}, this);
928924
};
929925

test/cases/parsing/issue-3252/a.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
export class V6Engine {
2+
toString() {
3+
return 'V6';
4+
}
5+
}
6+
export class V8Engine {
7+
toString() {
8+
return 'V8';
9+
}
10+
}
11+
12+
export function getVersion() {
13+
return '1.0';
14+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import * as E from './a';
2+
3+
4+
function fooBar({some, bar = E.V6Engine}) {
5+
return new bar().toString();
6+
}
7+
8+
it("supports default argument assignment in import", function () {
9+
fooBar({some:"test"}).should.eql('V6');
10+
});
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
var supportsDefaultAssignment = require("../../../helpers/supportDefaultAssignment");
2+
3+
module.exports = function(config) {
4+
return !config.minimize && supportsDefaultAssignment();
5+
};
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
module.exports = function supportDefaultAssignment() {
2+
try {
3+
var E = eval("class E { toString() { return 'default' } }")
4+
var f1 = eval("(function f1({a, b = E}) {return new b().toString();})")
5+
return f1({a: "test"}) === "default" ;
6+
} catch(e) {
7+
return false;
8+
}
9+
};

0 commit comments

Comments
 (0)