babel-source 5.6.5 → 5.6.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +8 -8
- data/lib/babel.js +230 -161
- data/lib/babel/source.rb +2 -2
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
OTk5MzQzMGY1NTAwZjE0ODc3MjAyZmVkNjc4NDI1ZDVlNjlhNWIzYg==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
OWFiYTI3MWEwOGY5NGEyYTQ3YzFjNTQwNmI1NGU4ZjdjYmJmYmE3OA==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
ODljOWQxNWIxMzI2Y2VlNWU5NDc3NDMxNmFhZWQ2OTYzNTU4MGJjNzNmNGQ1
|
10
|
+
YWViZDcxMWEzY2VkZmM5ZGEyNjRhMWIwOWYyNjk1ODMxM2QxNTkxOTA5NGEy
|
11
|
+
NWEyZGY5ZDQxYTc3YzJmNGYxMmZjNTg0ODIyYjgyZWY4YzQ1YjY=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
MGZlZTRhZDllYWM4MWE3MTc2NjVjZjI0NjIyNGFkNTRiMjIyMjNhMGU4NWQ4
|
14
|
+
YjI3ZTJmMjNhMjQ2NDI4MWY3ZWQ2Y2ZiMDkyYmRkNDc3Y2U2ZmU4MzY1ZWRj
|
15
|
+
MTY2NWM5ODdkNGYzZjE2MTE1MWZlNTMyY2RlMzY1YjQ3OWMxNTI=
|
data/lib/babel.js
CHANGED
@@ -25,6 +25,7 @@ _acornJsxInject2["default"](acorn);
|
|
25
25
|
},{"./plugins/flow":2,"./src/index":5,"acorn-jsx/inject":177}],2:[function(require,module,exports){
|
26
26
|
"use strict";
|
27
27
|
|
28
|
+
Error.stackTraceLimit = Infinity;
|
28
29
|
var acorn = require("../src/index");
|
29
30
|
|
30
31
|
var pp = acorn.Parser.prototype;
|
@@ -68,8 +69,11 @@ pp.flow_parseDeclareFunction = function (node) {
|
|
68
69
|
typeNode.rest = tmp.rest;
|
69
70
|
this.expect(tt.parenR);
|
70
71
|
|
72
|
+
var oldInType = this.inType;
|
73
|
+
this.inType = true;
|
71
74
|
this.expect(tt.colon);
|
72
75
|
typeNode.returnType = this.flow_parseType();
|
76
|
+
this.inType = oldInType;
|
73
77
|
|
74
78
|
typeContainer.typeAnnotation = this.finishNode(typeNode, "FunctionTypeAnnotation");
|
75
79
|
id.typeAnnotation = this.finishNode(typeContainer, "TypeAnnotation");
|
@@ -379,12 +383,6 @@ pp.flow_parseGenericType = function (start, id) {
|
|
379
383
|
return this.finishNode(node, "GenericTypeAnnotation");
|
380
384
|
};
|
381
385
|
|
382
|
-
pp.flow_parseVoidType = function () {
|
383
|
-
var node = this.startNode();
|
384
|
-
this.expect(tt._void);
|
385
|
-
return this.finishNode(node, "VoidTypeAnnotation");
|
386
|
-
};
|
387
|
-
|
388
386
|
pp.flow_parseTypeofType = function () {
|
389
387
|
var node = this.startNode();
|
390
388
|
this.expect(tt._typeof);
|
@@ -438,6 +436,9 @@ pp.flow_identToTypeAnnotation = function (start, node, id) {
|
|
438
436
|
case "any":
|
439
437
|
return this.finishNode(node, "AnyTypeAnnotation");
|
440
438
|
|
439
|
+
case "void":
|
440
|
+
return this.finishNode(node, "VoidTypeAnnotation");
|
441
|
+
|
441
442
|
case "bool":
|
442
443
|
case "boolean":
|
443
444
|
return this.finishNode(node, "BooleanTypeAnnotation");
|
@@ -544,14 +545,8 @@ pp.flow_parsePrimaryType = function () {
|
|
544
545
|
return this.finishNode(node, "StringLiteralTypeAnnotation");
|
545
546
|
|
546
547
|
default:
|
547
|
-
if (this.type.keyword) {
|
548
|
-
|
549
|
-
case "void":
|
550
|
-
return this.flow_parseVoidType();
|
551
|
-
|
552
|
-
case "typeof":
|
553
|
-
return this.flow_parseTypeofType();
|
554
|
-
}
|
548
|
+
if (this.type.keyword === "typeof") {
|
549
|
+
return this.flow_parseTypeofType();
|
555
550
|
}
|
556
551
|
}
|
557
552
|
|
@@ -714,6 +709,18 @@ acorn.plugins.flow = function (instance) {
|
|
714
709
|
};
|
715
710
|
});
|
716
711
|
|
712
|
+
// don't consider `void` to be a keyword as then it'll use the void token type
|
713
|
+
// and set startExpr
|
714
|
+
instance.extend("isKeyword", function (inner) {
|
715
|
+
return function (name) {
|
716
|
+
if (this.inType && name === "void") {
|
717
|
+
return false;
|
718
|
+
} else {
|
719
|
+
return inner.call(this, name);
|
720
|
+
}
|
721
|
+
};
|
722
|
+
});
|
723
|
+
|
717
724
|
instance.extend("readToken", function (inner) {
|
718
725
|
return function (code) {
|
719
726
|
if (this.inType && (code === 62 || code === 60)) {
|
@@ -1995,7 +2002,7 @@ var _state = require("./state");
|
|
1995
2002
|
|
1996
2003
|
var pp = _state.Parser.prototype;
|
1997
2004
|
|
1998
|
-
var STATE_KEYS = ["lastTokStartLoc", "lastTokEndLoc", "lastTokStart", "lastTokEnd", "lineStart", "startLoc", "curLine", "endLoc", "start", "pos", "end", "type", "value", "exprAllowed", "potentialArrowAt", "currLine", "input"];
|
2005
|
+
var STATE_KEYS = ["lastTokStartLoc", "lastTokEndLoc", "lastTokStart", "lastTokEnd", "lineStart", "startLoc", "curLine", "endLoc", "start", "pos", "end", "type", "value", "exprAllowed", "potentialArrowAt", "currLine", "input", "inType", "inFunction", "inGenerator", "labels"];
|
1999
2006
|
|
2000
2007
|
pp.getState = function () {
|
2001
2008
|
var state = {};
|
@@ -2004,6 +2011,7 @@ pp.getState = function () {
|
|
2004
2011
|
state[key] = this[key];
|
2005
2012
|
}
|
2006
2013
|
state.context = this.context.slice();
|
2014
|
+
state.labels = this.labels.slice();
|
2007
2015
|
return state;
|
2008
2016
|
};
|
2009
2017
|
|
@@ -2520,11 +2528,11 @@ var _whitespace = require("./whitespace");
|
|
2520
2528
|
|
2521
2529
|
function Parser(options, input, startPos) {
|
2522
2530
|
this.options = options;
|
2523
|
-
this.loadPlugins(this.options.plugins);
|
2524
2531
|
this.sourceFile = this.options.sourceFile || null;
|
2525
2532
|
this.isKeyword = _identifier.keywords[this.options.ecmaVersion >= 6 ? 6 : 5];
|
2526
2533
|
this.isReservedWord = _identifier.reservedWords[this.options.ecmaVersion];
|
2527
2534
|
this.input = input;
|
2535
|
+
this.loadPlugins(this.options.plugins);
|
2528
2536
|
|
2529
2537
|
// Set up token state
|
2530
2538
|
|
@@ -4370,7 +4378,7 @@ kw("case", beforeExpr);
|
|
4370
4378
|
kw("catch");
|
4371
4379
|
kw("continue");
|
4372
4380
|
kw("debugger");
|
4373
|
-
kw("default");
|
4381
|
+
kw("default", beforeExpr);
|
4374
4382
|
kw("do", { isLoop: true });
|
4375
4383
|
kw("else", beforeExpr);
|
4376
4384
|
kw("finally");
|
@@ -4771,9 +4779,10 @@ var Buffer = (function () {
|
|
4771
4779
|
this.space();
|
4772
4780
|
};
|
4773
4781
|
|
4774
|
-
Buffer.prototype.space = function space() {
|
4775
|
-
if (this.format.compact) return;
|
4776
|
-
|
4782
|
+
Buffer.prototype.space = function space(force) {
|
4783
|
+
if (!force && this.format.compact) return;
|
4784
|
+
|
4785
|
+
if (force || this.buf && !this.isLast(" ") && !this.isLast("\n")) {
|
4777
4786
|
this.push(" ");
|
4778
4787
|
}
|
4779
4788
|
};
|
@@ -4873,7 +4882,13 @@ var Buffer = (function () {
|
|
4873
4882
|
};
|
4874
4883
|
|
4875
4884
|
Buffer.prototype.endsWith = function endsWith(str) {
|
4876
|
-
|
4885
|
+
var buf = arguments[1] === undefined ? this.buf : arguments[1];
|
4886
|
+
|
4887
|
+
if (str.length === 1) {
|
4888
|
+
return buf[buf.length - 1] === str;
|
4889
|
+
} else {
|
4890
|
+
return buf.slice(-str.length) === str;
|
4891
|
+
}
|
4877
4892
|
};
|
4878
4893
|
|
4879
4894
|
Buffer.prototype.isLast = function isLast(cha) {
|
@@ -5070,19 +5085,19 @@ var _types = require("../../types");
|
|
5070
5085
|
var t = _interopRequireWildcard(_types);
|
5071
5086
|
|
5072
5087
|
function UnaryExpression(node, print) {
|
5073
|
-
var
|
5088
|
+
var needsSpace = /[a-z]$/.test(node.operator);
|
5074
5089
|
var arg = node.argument;
|
5075
5090
|
|
5076
5091
|
if (t.isUpdateExpression(arg) || t.isUnaryExpression(arg)) {
|
5077
|
-
|
5092
|
+
needsSpace = true;
|
5078
5093
|
}
|
5079
5094
|
|
5080
5095
|
if (t.isUnaryExpression(arg) && arg.operator === "!") {
|
5081
|
-
|
5096
|
+
needsSpace = false;
|
5082
5097
|
}
|
5083
5098
|
|
5084
5099
|
this.push(node.operator);
|
5085
|
-
if (
|
5100
|
+
if (needsSpace) this.push(" ");
|
5086
5101
|
print.plain(node.argument);
|
5087
5102
|
}
|
5088
5103
|
|
@@ -5151,16 +5166,13 @@ function CallExpression(node, print) {
|
|
5151
5166
|
|
5152
5167
|
this.push("(");
|
5153
5168
|
|
5154
|
-
var
|
5155
|
-
|
5156
|
-
var isPrettyCall = node._prettyCall && !this.format.retainLines;
|
5169
|
+
var isPrettyCall = node._prettyCall && !this.format.retainLines && !this.format.compact;
|
5157
5170
|
|
5171
|
+
var separator;
|
5158
5172
|
if (isPrettyCall) {
|
5159
|
-
separator
|
5173
|
+
separator = ",\n";
|
5160
5174
|
this.newline();
|
5161
5175
|
this.indent();
|
5162
|
-
} else {
|
5163
|
-
separator += " ";
|
5164
5176
|
}
|
5165
5177
|
|
5166
5178
|
print.list(node.arguments, { separator: separator });
|
@@ -5212,9 +5224,20 @@ function AssignmentPattern(node, print) {
|
|
5212
5224
|
function AssignmentExpression(node, print) {
|
5213
5225
|
// todo: add cases where the spaces can be dropped when in compact mode
|
5214
5226
|
print.plain(node.left);
|
5215
|
-
|
5227
|
+
|
5228
|
+
var spaces = node.operator === "in" || node.operator === "instanceof";
|
5229
|
+
this.space(spaces);
|
5230
|
+
|
5216
5231
|
this.push(node.operator);
|
5217
|
-
|
5232
|
+
|
5233
|
+
if (!spaces) {
|
5234
|
+
// space is mandatory to avoid outputting <!--
|
5235
|
+
// http://javascript.spec.whatwg.org/#comment-syntax
|
5236
|
+
spaces = node.operator === "<" && t.isUnaryExpression(node.right, { prefix: true, operator: "!" }) && t.isUnaryExpression(node.right.argument, { prefix: true, operator: "--" });
|
5237
|
+
}
|
5238
|
+
|
5239
|
+
this.space(spaces);
|
5240
|
+
|
5218
5241
|
print.plain(node.right);
|
5219
5242
|
}
|
5220
5243
|
|
@@ -5687,7 +5710,7 @@ function _method(node, print) {
|
|
5687
5710
|
}
|
5688
5711
|
|
5689
5712
|
this._params(value, print);
|
5690
|
-
this.
|
5713
|
+
this.space();
|
5691
5714
|
print.plain(value.body);
|
5692
5715
|
}
|
5693
5716
|
|
@@ -6107,16 +6130,29 @@ function VariableDeclaration(node, print, parent) {
|
|
6107
6130
|
}
|
6108
6131
|
}
|
6109
6132
|
|
6110
|
-
|
6133
|
+
//
|
6134
|
+
// use a pretty separator when we aren't in compact mode, have initializers and don't have retainLines on
|
6135
|
+
// this will format declarations like:
|
6136
|
+
//
|
6137
|
+
// var foo = "bar", bar = "foo";
|
6138
|
+
//
|
6139
|
+
// into
|
6140
|
+
//
|
6141
|
+
// var foo = "bar",
|
6142
|
+
// bar = "foo";
|
6143
|
+
//
|
6144
|
+
|
6145
|
+
var sep;
|
6111
6146
|
if (!this.format.compact && !this.format.concise && hasInits && !this.format.retainLines) {
|
6112
|
-
sep
|
6113
|
-
} else {
|
6114
|
-
sep += " ";
|
6147
|
+
sep = ",\n" + _repeating2["default"](" ", node.kind.length + 1);
|
6115
6148
|
}
|
6116
6149
|
|
6150
|
+
//
|
6151
|
+
|
6117
6152
|
print.list(node.declarations, { separator: sep });
|
6118
6153
|
|
6119
6154
|
if (t.isFor(parent)) {
|
6155
|
+
// don't give semicolons to these nodes since they'll be inserted in the parent generator
|
6120
6156
|
if (parent.left === node || parent.init === node) return;
|
6121
6157
|
}
|
6122
6158
|
|
@@ -6269,7 +6305,7 @@ function ArrayExpression(node, print) {
|
|
6269
6305
|
// both (all) of the holes.
|
6270
6306
|
this.push(",");
|
6271
6307
|
} else {
|
6272
|
-
if (i > 0) this.
|
6308
|
+
if (i > 0) this.space();
|
6273
6309
|
print.plain(elem);
|
6274
6310
|
if (i < len - 1) this.push(",");
|
6275
6311
|
}
|
@@ -7153,7 +7189,11 @@ var NodePrinter = (function () {
|
|
7153
7189
|
NodePrinter.prototype.list = function list(items) {
|
7154
7190
|
var opts = arguments[1] === undefined ? {} : arguments[1];
|
7155
7191
|
|
7156
|
-
if (opts.separator == null)
|
7192
|
+
if (opts.separator == null) {
|
7193
|
+
opts.separator = ",";
|
7194
|
+
if (!this.generator.format.compact) opts.separator += " ";
|
7195
|
+
}
|
7196
|
+
|
7157
7197
|
return this.join(items, opts);
|
7158
7198
|
};
|
7159
7199
|
|
@@ -18522,6 +18562,7 @@ function unshiftContext(context) {
|
|
18522
18562
|
*/
|
18523
18563
|
|
18524
18564
|
function setup(parentPath, container, listKey, key) {
|
18565
|
+
this.inList = !!listKey;
|
18525
18566
|
this.listKey = listKey;
|
18526
18567
|
this.parentKey = listKey || key;
|
18527
18568
|
this.container = container;
|
@@ -19059,6 +19100,7 @@ var NodePath = (function () {
|
|
19059
19100
|
this.context = null;
|
19060
19101
|
this.container = null;
|
19061
19102
|
this.listKey = null;
|
19103
|
+
this.inList = false;
|
19062
19104
|
this.parentKey = null;
|
19063
19105
|
this.key = null;
|
19064
19106
|
this.node = null;
|
@@ -28681,143 +28723,145 @@ exports["default"] = function (_ref) {
|
|
28681
28723
|
return node;
|
28682
28724
|
}
|
28683
28725
|
|
28684
|
-
|
28685
|
-
|
28686
|
-
|
28687
|
-
|
28688
|
-
|
28726
|
+
var visitor = {
|
28727
|
+
ReferencedIdentifier: function ReferencedIdentifier(node, parent, scope) {
|
28728
|
+
var binding = scope.getBinding(node.name);
|
28729
|
+
if (!binding || binding.references > 1 || !binding.constant) return;
|
28730
|
+
if (binding.kind === "param" || binding.kind === "module") return;
|
28689
28731
|
|
28690
|
-
|
28691
|
-
|
28692
|
-
|
28693
|
-
|
28694
|
-
|
28695
|
-
|
28696
|
-
var replacement = binding.path.node;
|
28697
|
-
if (t.isVariableDeclarator(replacement)) {
|
28698
|
-
replacement = replacement.init;
|
28699
|
-
}
|
28700
|
-
if (!replacement) return;
|
28732
|
+
var replacement = binding.path.node;
|
28733
|
+
if (t.isVariableDeclarator(replacement)) {
|
28734
|
+
replacement = replacement.init;
|
28735
|
+
}
|
28736
|
+
if (!replacement) return;
|
28701
28737
|
|
28702
|
-
|
28703
|
-
|
28738
|
+
// ensure it's a "pure" type
|
28739
|
+
if (!scope.isPure(replacement, true)) return;
|
28704
28740
|
|
28705
|
-
|
28706
|
-
|
28707
|
-
|
28708
|
-
|
28709
|
-
|
28710
|
-
|
28741
|
+
if (t.isClass(replacement) || t.isFunction(replacement)) {
|
28742
|
+
// don't change this if it's in a different scope, this can be bad
|
28743
|
+
// for performance since it may be inside a loop or deeply nested in
|
28744
|
+
// hot code
|
28745
|
+
if (binding.path.scope.parent !== scope) return;
|
28746
|
+
}
|
28711
28747
|
|
28712
|
-
|
28713
|
-
|
28714
|
-
|
28715
|
-
|
28716
|
-
|
28748
|
+
if (this.findParent(function (path) {
|
28749
|
+
return path.node === replacement;
|
28750
|
+
})) {
|
28751
|
+
return;
|
28752
|
+
}
|
28717
28753
|
|
28718
|
-
|
28719
|
-
|
28720
|
-
|
28721
|
-
|
28722
|
-
|
28754
|
+
t.toExpression(replacement);
|
28755
|
+
scope.removeBinding(node.name);
|
28756
|
+
binding.path.dangerouslyRemove();
|
28757
|
+
return replacement;
|
28758
|
+
},
|
28723
28759
|
|
28724
|
-
|
28725
|
-
|
28726
|
-
|
28727
|
-
|
28728
|
-
|
28729
|
-
|
28760
|
+
"ClassDeclaration|FunctionDeclaration": function ClassDeclarationFunctionDeclaration(node, parent, scope) {
|
28761
|
+
var binding = scope.getBinding(node.id.name);
|
28762
|
+
if (binding && !binding.referenced) {
|
28763
|
+
this.dangerouslyRemove();
|
28764
|
+
}
|
28765
|
+
},
|
28730
28766
|
|
28731
|
-
|
28732
|
-
|
28733
|
-
|
28734
|
-
|
28767
|
+
VariableDeclarator: function VariableDeclarator(node, parent, scope) {
|
28768
|
+
if (!t.isIdentifier(node.id) || !scope.isPure(node.init, true)) return;
|
28769
|
+
visitor["ClassDeclaration|FunctionDeclaration"].apply(this, arguments);
|
28770
|
+
},
|
28735
28771
|
|
28736
|
-
|
28737
|
-
|
28738
|
-
|
28739
|
-
|
28740
|
-
|
28741
|
-
|
28742
|
-
|
28743
|
-
|
28772
|
+
ConditionalExpression: function ConditionalExpression(node) {
|
28773
|
+
var evaluateTest = this.get("test").evaluateTruthy();
|
28774
|
+
if (evaluateTest === true) {
|
28775
|
+
return node.consequent;
|
28776
|
+
} else if (evaluateTest === false) {
|
28777
|
+
return node.alternate;
|
28778
|
+
}
|
28779
|
+
},
|
28744
28780
|
|
28745
|
-
|
28746
|
-
|
28781
|
+
BlockStatement: function BlockStatement() {
|
28782
|
+
var paths = this.get("body");
|
28747
28783
|
|
28748
|
-
|
28784
|
+
var purge = false;
|
28749
28785
|
|
28750
|
-
|
28751
|
-
|
28786
|
+
for (var i = 0; i < paths.length; i++) {
|
28787
|
+
var path = paths[i];
|
28752
28788
|
|
28753
|
-
|
28754
|
-
|
28755
|
-
|
28756
|
-
|
28789
|
+
if (!purge && path.isCompletionStatement()) {
|
28790
|
+
purge = true;
|
28791
|
+
continue;
|
28792
|
+
}
|
28757
28793
|
|
28758
|
-
|
28759
|
-
|
28760
|
-
}
|
28794
|
+
if (purge && !path.isFunctionDeclaration()) {
|
28795
|
+
path.dangerouslyRemove();
|
28761
28796
|
}
|
28762
|
-
}
|
28797
|
+
}
|
28798
|
+
},
|
28763
28799
|
|
28764
|
-
|
28765
|
-
|
28766
|
-
|
28767
|
-
|
28768
|
-
|
28800
|
+
IfStatement: {
|
28801
|
+
exit: function exit(node) {
|
28802
|
+
var consequent = node.consequent;
|
28803
|
+
var alternate = node.alternate;
|
28804
|
+
var test = node.test;
|
28769
28805
|
|
28770
|
-
|
28806
|
+
var evaluateTest = this.get("test").evaluateTruthy();
|
28771
28807
|
|
28772
|
-
|
28773
|
-
|
28774
|
-
|
28775
|
-
|
28776
|
-
|
28777
|
-
|
28808
|
+
// we can check if a test will be truthy 100% and if so then we can inline
|
28809
|
+
// the consequent and completely ignore the alternate
|
28810
|
+
//
|
28811
|
+
// if (true) { foo; } -> { foo; }
|
28812
|
+
// if ("foo") { foo; } -> { foo; }
|
28813
|
+
//
|
28778
28814
|
|
28779
|
-
|
28780
|
-
|
28781
|
-
|
28815
|
+
if (evaluateTest === true) {
|
28816
|
+
return toStatements(consequent);
|
28817
|
+
}
|
28782
28818
|
|
28783
|
-
|
28784
|
-
|
28785
|
-
|
28786
|
-
|
28787
|
-
|
28788
|
-
|
28819
|
+
// we can check if a test will be falsy 100% and if so we can inline the
|
28820
|
+
// alternate if there is one and completely remove the consequent
|
28821
|
+
//
|
28822
|
+
// if ("") { bar; } else { foo; } -> { foo; }
|
28823
|
+
// if ("") { bar; } ->
|
28824
|
+
//
|
28789
28825
|
|
28790
|
-
|
28791
|
-
|
28792
|
-
|
28793
|
-
|
28794
|
-
|
28795
|
-
}
|
28826
|
+
if (evaluateTest === false) {
|
28827
|
+
if (alternate) {
|
28828
|
+
return toStatements(alternate);
|
28829
|
+
} else {
|
28830
|
+
return this.dangerouslyRemove();
|
28796
28831
|
}
|
28832
|
+
}
|
28797
28833
|
|
28798
|
-
|
28799
|
-
|
28800
|
-
|
28801
|
-
|
28834
|
+
// remove alternate blocks that are empty
|
28835
|
+
//
|
28836
|
+
// if (foo) { foo; } else {} -> if (foo) { foo; }
|
28837
|
+
//
|
28802
28838
|
|
28803
|
-
|
28804
|
-
|
28805
|
-
|
28839
|
+
if (t.isBlockStatement(alternate) && !alternate.body.length) {
|
28840
|
+
alternate = node.alternate = null;
|
28841
|
+
}
|
28806
28842
|
|
28807
|
-
|
28808
|
-
|
28809
|
-
|
28810
|
-
|
28811
|
-
|
28843
|
+
// if the consequent block is empty turn alternate blocks into a consequent
|
28844
|
+
// and flip the test
|
28845
|
+
//
|
28846
|
+
// if (foo) {} else { bar; } -> if (!foo) { bar; }
|
28847
|
+
//
|
28812
28848
|
|
28813
|
-
|
28814
|
-
|
28815
|
-
|
28816
|
-
|
28817
|
-
}
|
28849
|
+
if (t.isBlockStatement(consequent) && !consequent.body.length && t.isBlockStatement(alternate) && alternate.body.length) {
|
28850
|
+
node.consequent = node.alternate;
|
28851
|
+
node.alternate = null;
|
28852
|
+
node.test = t.unaryExpression("!", test, true);
|
28818
28853
|
}
|
28819
28854
|
}
|
28820
28855
|
}
|
28856
|
+
};
|
28857
|
+
|
28858
|
+
return new Plugin("dead-code-elimination", {
|
28859
|
+
metadata: {
|
28860
|
+
group: "builtin-pre",
|
28861
|
+
experimental: true
|
28862
|
+
},
|
28863
|
+
|
28864
|
+
visitor: visitor
|
28821
28865
|
});
|
28822
28866
|
};
|
28823
28867
|
|
@@ -53551,12 +53595,17 @@ var defaults = {
|
|
53551
53595
|
// If you want esprima not to throw exceptions when it encounters
|
53552
53596
|
// non-fatal errors, keep this option true.
|
53553
53597
|
tolerant: true,
|
53554
|
-
|
53598
|
+
|
53555
53599
|
// If you want to override the quotes used in string literals, specify
|
53556
|
-
// either "single", "double", or "auto" here ("auto" will select the one
|
53600
|
+
// either "single", "double", or "auto" here ("auto" will select the one
|
53557
53601
|
// which results in the shorter literal)
|
53558
53602
|
// Otherwise, the input marks will be preserved
|
53559
53603
|
quote: null,
|
53604
|
+
|
53605
|
+
// If you want to print trailing commas in object literals,
|
53606
|
+
// array expressions, functions calls and function definitions pass true
|
53607
|
+
// for this option.
|
53608
|
+
trailingComma: false,
|
53560
53609
|
}, hasOwn = defaults.hasOwnProperty;
|
53561
53610
|
|
53562
53611
|
// Copy options and fill in default values.
|
@@ -53582,6 +53631,7 @@ exports.normalize = function(options) {
|
|
53582
53631
|
range: get("range"),
|
53583
53632
|
tolerant: get("tolerant"),
|
53584
53633
|
quote: get("quote"),
|
53634
|
+
trailingComma: get("trailingComma"),
|
53585
53635
|
};
|
53586
53636
|
};
|
53587
53637
|
|
@@ -54684,7 +54734,6 @@ function genericPrintNoParens(path, options, print) {
|
|
54684
54734
|
fields.forEach(function(field) {
|
54685
54735
|
path.map(function(childPath) {
|
54686
54736
|
var i = childPath.getName();
|
54687
|
-
var prop = childPath.getValue();
|
54688
54737
|
var lines = print(childPath);
|
54689
54738
|
|
54690
54739
|
if (!oneLine) {
|
@@ -54706,6 +54755,8 @@ function genericPrintNoParens(path, options, print) {
|
|
54706
54755
|
allowBreak = !multiLine;
|
54707
54756
|
} else if (len !== 1 && isTypeAnnotation) {
|
54708
54757
|
parts.push(separator);
|
54758
|
+
} else if (options.trailingComma) {
|
54759
|
+
parts.push(separator);
|
54709
54760
|
}
|
54710
54761
|
}, field);
|
54711
54762
|
});
|
@@ -54740,8 +54791,12 @@ function genericPrintNoParens(path, options, print) {
|
|
54740
54791
|
case "ArrayExpression":
|
54741
54792
|
case "ArrayPattern":
|
54742
54793
|
var elems = n.elements,
|
54743
|
-
len = elems.length
|
54744
|
-
|
54794
|
+
len = elems.length;
|
54795
|
+
|
54796
|
+
var printed = path.map(print, "elements");
|
54797
|
+
var joined = fromString(", ").join(printed);
|
54798
|
+
var oneLine = joined.getLineLength(1) <= options.wrapColumn;
|
54799
|
+
var parts = [oneLine ? "[" : "[\n"];
|
54745
54800
|
|
54746
54801
|
path.each(function(elemPath) {
|
54747
54802
|
var i = elemPath.getName();
|
@@ -54754,11 +54809,18 @@ function genericPrintNoParens(path, options, print) {
|
|
54754
54809
|
// both (all) of the holes.
|
54755
54810
|
parts.push(",");
|
54756
54811
|
} else {
|
54757
|
-
|
54758
|
-
|
54759
|
-
|
54760
|
-
|
54812
|
+
var lines = printed[i];
|
54813
|
+
if (oneLine) {
|
54814
|
+
if (i > 0)
|
54815
|
+
parts.push(" ");
|
54816
|
+
} else {
|
54817
|
+
lines = lines.indent(options.tabWidth);
|
54818
|
+
}
|
54819
|
+
parts.push(lines);
|
54820
|
+
if (i < len - 1 || (!oneLine && options.trailingComma))
|
54761
54821
|
parts.push(",");
|
54822
|
+
if (!oneLine)
|
54823
|
+
parts.push("\n");
|
54762
54824
|
}
|
54763
54825
|
}, "elements");
|
54764
54826
|
|
@@ -55654,7 +55716,11 @@ function printArgumentsList(path, options, print) {
|
|
55654
55716
|
var joined = fromString(", ").join(printed);
|
55655
55717
|
if (joined.getLineLength(1) > options.wrapColumn) {
|
55656
55718
|
joined = fromString(",\n").join(printed);
|
55657
|
-
return concat([
|
55719
|
+
return concat([
|
55720
|
+
"(\n",
|
55721
|
+
joined.indent(options.tabWidth),
|
55722
|
+
options.trailingComma ? ",\n)" : "\n)"
|
55723
|
+
]);
|
55658
55724
|
}
|
55659
55725
|
|
55660
55726
|
return concat(["(", joined, ")"]);
|
@@ -55684,6 +55750,9 @@ function printFunctionParams(path, options, print) {
|
|
55684
55750
|
if (joined.length > 1 ||
|
55685
55751
|
joined.getLineLength(1) > options.wrapColumn) {
|
55686
55752
|
joined = fromString(",\n").join(printed);
|
55753
|
+
if (options.trailingComma && !fun.rest) {
|
55754
|
+
joined = concat([joined, ",\n"]);
|
55755
|
+
}
|
55687
55756
|
return concat(["\n", joined.indent(options.tabWidth)]);
|
55688
55757
|
}
|
55689
55758
|
|
@@ -62923,7 +62992,7 @@ module.exports = function (str) {
|
|
62923
62992
|
module.exports={
|
62924
62993
|
"name": "babel-core",
|
62925
62994
|
"description": "A compiler for writing next generation JavaScript",
|
62926
|
-
"version": "5.6.
|
62995
|
+
"version": "5.6.6",
|
62927
62996
|
"author": "Sebastian McKenzie <sebmck@gmail.com>",
|
62928
62997
|
"homepage": "https://babeljs.io/",
|
62929
62998
|
"license": "MIT",
|
@@ -62953,7 +63022,7 @@ module.exports={
|
|
62953
63022
|
"acorn-jsx": "^1.0.0",
|
62954
63023
|
"ast-types": "~0.7.0",
|
62955
63024
|
"babel-plugin-constant-folding": "^1.0.1",
|
62956
|
-
"babel-plugin-dead-code-elimination": "^1.0.
|
63025
|
+
"babel-plugin-dead-code-elimination": "^1.0.2",
|
62957
63026
|
"babel-plugin-eval": "^1.0.1",
|
62958
63027
|
"babel-plugin-inline-environment-variables": "^1.0.1",
|
62959
63028
|
"babel-plugin-jscript": "^1.0.1",
|
data/lib/babel/source.rb
CHANGED