aboutsummaryrefslogtreecommitdiff
path: root/node_modules/uglify-js/lib/mozilla-ast.js
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2018-09-20 02:56:13 +0200
committerFlorian Dold <florian.dold@gmail.com>2018-09-20 02:56:13 +0200
commitbbff7403fbf46f9ad92240ac213df8d30ef31b64 (patch)
treec58400ec5124da1c7d56b01aea83309f80a56c3b /node_modules/uglify-js/lib/mozilla-ast.js
parent003fb34971cf63466184351b4db5f7c67df4f444 (diff)
update packages
Diffstat (limited to 'node_modules/uglify-js/lib/mozilla-ast.js')
-rw-r--r--node_modules/uglify-js/lib/mozilla-ast.js80
1 files changed, 47 insertions, 33 deletions
diff --git a/node_modules/uglify-js/lib/mozilla-ast.js b/node_modules/uglify-js/lib/mozilla-ast.js
index 8d7ee4b85..dace808ab 100644
--- a/node_modules/uglify-js/lib/mozilla-ast.js
+++ b/node_modules/uglify-js/lib/mozilla-ast.js
@@ -43,11 +43,9 @@
"use strict";
-(function(){
-
- var normalize_directives = function(body) {
+(function() {
+ function normalize_directives(body) {
var in_directive = true;
-
for (var i = 0; i < body.length; i++) {
if (in_directive && body[i] instanceof AST_Statement && body[i].body instanceof AST_String) {
body[i] = new AST_Directive({
@@ -59,9 +57,8 @@
in_directive = false;
}
}
-
return body;
- };
+ }
var MOZ_TO_ME = {
Program: function(M) {
@@ -129,7 +126,7 @@
return new AST_Array({
start : my_start_token(M),
end : my_end_token(M),
- elements : M.elements.map(function(elem){
+ elements : M.elements.map(function(elem) {
return elem === null ? new AST_Hole() : from_moz(elem);
})
});
@@ -138,7 +135,7 @@
return new AST_Object({
start : my_start_token(M),
end : my_end_token(M),
- properties : M.properties.map(function(prop){
+ properties : M.properties.map(function(prop) {
prop.type = "Property";
return from_moz(prop)
})
@@ -180,6 +177,17 @@
end : my_end_token(M)
};
if (val === null) return new AST_Null(args);
+ var rx = M.regex;
+ if (rx && rx.pattern) {
+ // RegExpLiteral as per ESTree AST spec
+ args.value = new RegExp(rx.pattern, rx.flags);
+ args.value.raw_source = rx.pattern;
+ return new AST_RegExp(args);
+ } else if (rx) {
+ // support legacy RegExp
+ args.value = M.regex && M.raw ? M.raw : val;
+ return new AST_RegExp(args);
+ }
switch (typeof val) {
case "string":
args.value = val;
@@ -189,16 +197,6 @@
return new AST_Number(args);
case "boolean":
return new (val ? AST_True : AST_False)(args);
- default:
- var rx = M.regex;
- if (rx && rx.pattern) {
- // RegExpLiteral as per ESTree AST spec
- args.value = new RegExp(rx.pattern, rx.flags).toString();
- } else {
- // support legacy RegExp
- args.value = M.regex && M.raw ? M.raw : val;
- }
- return new AST_RegExp(args);
}
},
Identifier: function(M) {
@@ -410,14 +408,15 @@
});
def_to_moz(AST_RegExp, function To_Moz_RegExpLiteral(M) {
- var value = M.value;
+ var flags = M.value.toString().match(/[gimuy]*$/)[0];
+ var value = "/" + M.value.raw_source + "/" + flags;
return {
type: "Literal",
value: value,
- raw: value.toString(),
+ raw: value,
regex: {
- pattern: value.source,
- flags: value.toString().match(/[gimuy]*$/)[0]
+ pattern: M.value.raw_source,
+ flags: flags
}
};
});
@@ -478,7 +477,7 @@
endpos : range ? range[0] : moznode.start,
raw : raw_token(moznode),
});
- };
+ }
function my_end_token(moznode) {
var loc = moznode.loc, end = loc && loc.end;
@@ -493,7 +492,7 @@
endpos : range ? range[1] : moznode.end,
raw : raw_token(moznode),
});
- };
+ }
function map(moztype, mytype, propmap) {
var moz_to_me = "function From_Moz_" + moztype + "(M){\n";
@@ -505,7 +504,7 @@
me_to_moz += "return {\n" +
"type: " + JSON.stringify(moztype);
- if (propmap) propmap.split(/\s*,\s*/).forEach(function(prop){
+ if (propmap) propmap.split(/\s*,\s*/).forEach(function(prop) {
var m = /([a-z0-9$_]+)(=|@|>|%)([a-z0-9$_]+)/i.exec(prop);
if (!m) throw new Error("Can't understand property map: " + prop);
var moz = m[1], how = m[2], my = m[3];
@@ -548,7 +547,7 @@
);
MOZ_TO_ME[moztype] = moz_to_me;
def_to_moz(mytype, me_to_moz);
- };
+ }
var FROM_MOZ_STACK = null;
@@ -557,13 +556,28 @@
var ret = node != null ? MOZ_TO_ME[node.type](node) : null;
FROM_MOZ_STACK.pop();
return ret;
- };
+ }
- AST_Node.from_mozilla_ast = function(node){
+ AST_Node.from_mozilla_ast = function(node) {
var save_stack = FROM_MOZ_STACK;
FROM_MOZ_STACK = [];
var ast = from_moz(node);
FROM_MOZ_STACK = save_stack;
+ ast.walk(new TreeWalker(function(node) {
+ if (node instanceof AST_LabelRef) {
+ for (var level = 0, parent; parent = this.parent(level); level++) {
+ if (parent instanceof AST_Scope) break;
+ if (parent instanceof AST_LabeledStatement && parent.label.name == node.name) {
+ node.thedef = parent.label;
+ break;
+ }
+ }
+ if (!node.thedef) {
+ var s = node.start;
+ js_error("Undefined label " + node.name, s.file, s.line, s.col, s.pos);
+ }
+ }
+ }));
return ast;
};
@@ -583,24 +597,24 @@
}
}
return moznode;
- };
+ }
function def_to_moz(mytype, handler) {
mytype.DEFMETHOD("to_mozilla_ast", function() {
return set_moz_loc(this, handler(this));
});
- };
+ }
function to_moz(node) {
return node != null ? node.to_mozilla_ast() : null;
- };
+ }
function to_moz_block(node) {
return {
type: "BlockStatement",
body: node.body.map(to_moz)
};
- };
+ }
function to_moz_scope(type, node) {
var body = node.body.map(to_moz);
@@ -611,5 +625,5 @@
type: type,
body: body
};
- };
+ }
})();