uglify-js
Advanced tools
Comparing version 3.12.5 to 3.12.6
@@ -252,3 +252,3 @@ /*********************************************************************** | ||
parent_scope: "[AST_Scope?/S] link to the parent scope", | ||
variables: "[Object/S] a map of name -> SymbolDef for all variables/functions defined in this scope", | ||
variables: "[Object/S] a map of name ---> SymbolDef for all variables/functions defined in this scope", | ||
}, | ||
@@ -476,3 +476,3 @@ clone: function(deep) { | ||
$propdoc: { | ||
globals: "[Object/S] a map of name -> SymbolDef for all undeclared names", | ||
globals: "[Object/S] a map of name ---> SymbolDef for all undeclared names", | ||
}, | ||
@@ -1445,5 +1445,18 @@ wrap: function(name) { | ||
if (typeof this.value != "number") throw new Error("value must be number"); | ||
if (!isFinite(this.value)) throw new Error("value must be finite"); | ||
if (this.value < 0) throw new Error("value cannot be negative"); | ||
}, | ||
}, AST_Constant); | ||
var AST_BigInt = DEFNODE("BigInt", "value", { | ||
$documentation: "A BigInt literal", | ||
$propdoc: { | ||
value: "[string] the numeric representation", | ||
}, | ||
_validate: function() { | ||
if (typeof this.value != "string") throw new Error("value must be string"); | ||
if (this.value[0] == "-") throw new Error("value cannot be negative"); | ||
}, | ||
}, AST_Constant); | ||
var AST_RegExp = DEFNODE("RegExp", "value", { | ||
@@ -1450,0 +1463,0 @@ $documentation: "A regexp literal", |
@@ -687,2 +687,6 @@ /*********************************************************************** | ||
var p = output.parent(); | ||
// (-x) ** y | ||
if (p instanceof AST_Binary) return p.operator == "**" && p.left === this; | ||
// (x++).toString(3) | ||
// (typeof x).length | ||
return (p instanceof AST_Call || p instanceof AST_PropAccess) && p.expression === this; | ||
@@ -693,9 +697,9 @@ }); | ||
var p = output.parent(); | ||
// [ 1, (2, 3), 4 ] ==> [ 1, 3, 4 ] | ||
// [ 1, (2, 3), 4 ] ---> [ 1, 3, 4 ] | ||
return p instanceof AST_Array | ||
// () => (foo, bar) | ||
// () ---> (foo, bar) | ||
|| is_arrow(p) && p.value === this | ||
// await (foo, bar) | ||
|| p instanceof AST_Await | ||
// 1 + (2, 3) + 4 ==> 8 | ||
// 1 + (2, 3) + 4 ---> 8 | ||
|| p instanceof AST_Binary | ||
@@ -705,11 +709,11 @@ // new (foo, bar) or foo(1, (2, 3), 4) | ||
// (false, true) ? (a = 10, b = 20) : (c = 30) | ||
// ==> 20 (side effect, set a := 10 and b := 20) | ||
// ---> 20 (side effect, set a := 10 and b := 20) | ||
|| p instanceof AST_Conditional | ||
// [ a = (1, 2) ] = [] ==> a == 2 | ||
// [ a = (1, 2) ] = [] ---> a == 2 | ||
|| p instanceof AST_DefaultValue | ||
// { [(1, 2)]: 3 }[2] ==> 3 | ||
// { foo: (1, 2) }.foo ==> 2 | ||
// { [(1, 2)]: 3 }[2] ---> 3 | ||
// { foo: (1, 2) }.foo ---> 2 | ||
|| p instanceof AST_DestructuredKeyVal | ||
|| p instanceof AST_ObjectProperty | ||
// (1, {foo:2}).foo or (1, {foo:2})["foo"] ==> 2 | ||
// (1, {foo:2}).foo or (1, {foo:2})["foo"] ---> 2 | ||
|| p instanceof AST_PropAccess && p.expression === this | ||
@@ -720,3 +724,3 @@ // ...(foo, bar, baz) | ||
|| p instanceof AST_Unary | ||
// var a = (1, 2), b = a + a; ==> b == 4 | ||
// var a = (1, 2), b = a + a; ---> b == 4 | ||
|| p instanceof AST_VarDef; | ||
@@ -729,7 +733,10 @@ }); | ||
if (p instanceof AST_Await) return true; | ||
// this deals with precedence: 3 * (2 + 1) | ||
// this deals with precedence: | ||
// 3 * (2 + 1) | ||
// 3 - (2 - 1) | ||
// (1 ** 2) ** 3 | ||
if (p instanceof AST_Binary) { | ||
var po = p.operator, pp = PRECEDENCE[po]; | ||
var so = this.operator, sp = PRECEDENCE[so]; | ||
return pp > sp || (pp == sp && this === p.right); | ||
return pp > sp || (pp == sp && this === p[po == "**" ? "left" : "right"]); | ||
} | ||
@@ -785,10 +792,6 @@ // (foo && bar)() | ||
PARENS(AST_Number, function(output) { | ||
if (!output.option("galio")) return false; | ||
// https://github.com/mishoo/UglifyJS/pull/1009 | ||
var p = output.parent(); | ||
if (p instanceof AST_PropAccess && p.expression === this) { | ||
var value = this.value; | ||
// https://github.com/mishoo/UglifyJS/issues/115 | ||
return value < 0 | ||
// https://github.com/mishoo/UglifyJS/pull/1009 | ||
|| output.option("galio") && /^0/.test(make_num(value)); | ||
} | ||
return p instanceof AST_PropAccess && p.expression === this && /^0/.test(make_num(this.value)); | ||
}); | ||
@@ -816,4 +819,4 @@ | ||
if (needs_parens_assign_cond(this, output)) return true; | ||
// v8 parser bug => workaround | ||
// f([1], [a] = []) => f([1], ([a] = [])) | ||
// v8 parser bug ---> workaround | ||
// f([1], [a] = []) ---> f([1], ([a] = [])) | ||
if (output.option("v8")) return this.left instanceof AST_Destructured; | ||
@@ -832,2 +835,4 @@ // ({ p: a } = o); | ||
var p = output.parent(); | ||
// (await x) ** y | ||
if (p instanceof AST_Binary) return p.operator == "**" && p.left === this; | ||
// new (await foo) | ||
@@ -834,0 +839,0 @@ // (await foo)(bar) |
@@ -231,3 +231,3 @@ /*********************************************************************** | ||
if (debug) { | ||
// debug mode: use a prefix and suffix to preserve readability, e.g. o.foo -> o._$foo$NNN_. | ||
// debug mode: use a prefix and suffix to preserve readability, e.g. o.foo ---> o._$foo$NNN_. | ||
var debug_mangled = "_$" + name + "$" + debug_suffix + "_"; | ||
@@ -234,0 +234,0 @@ if (can_mangle(debug_mangled)) mangled = debug_mangled; |
@@ -6,3 +6,3 @@ { | ||
"license": "BSD-2-Clause", | ||
"version": "3.12.5", | ||
"version": "3.12.6", | ||
"engines": { | ||
@@ -9,0 +9,0 @@ "node": ">=0.8.0" |
@@ -1257,1 +1257,7 @@ UglifyJS 3 | ||
UglifyJS may modify the input which in turn may suppress those errors. | ||
- Some arithmetic operations with `BigInt` may throw `TypeError`: | ||
```javascript | ||
1n + 1; | ||
// TypeError: can't convert BigInt to number | ||
``` | ||
UglifyJS may modify the input which in turn may suppress those errors. |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
1024764
26325
1263