From: Alex Lam S.L Date: Fri, 14 Apr 2017 21:52:29 +0000 (+0800) Subject: drop `angular` (#1812) X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=32deb365d500f22f3215fe0edb094b38dba5b61a;p=UglifyJS.git drop `angular` (#1812) Remove support for `@ngInject` as there are proper alternatives anyway. --- diff --git a/lib/compress.js b/lib/compress.js index 8c254573..5128abb2 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -48,7 +48,6 @@ function Compressor(options, false_by_default) { return new Compressor(options, false_by_default); TreeTransformer.call(this, this.before, this.after); this.options = defaults(options, { - angular : false, booleans : !false_by_default, cascade : !false_by_default, collapse_vars : !false_by_default, @@ -536,9 +535,6 @@ merge(Compressor.prototype, { var CHANGED, max_iter = 10; do { CHANGED = false; - if (compressor.option("angular")) { - statements = process_for_angular(statements); - } statements = eliminate_spurious_blocks(statements); if (compressor.option("dead_code")) { statements = eliminate_dead_code(statements, compressor); @@ -731,80 +727,6 @@ merge(Compressor.prototype, { } } - function process_for_angular(statements) { - function has_inject(comment) { - return /@ngInject/.test(comment.value); - } - function make_arguments_names_list(func) { - return func.argnames.map(function(sym){ - return make_node(AST_String, sym, { value: sym.name }); - }); - } - function make_array(orig, elements) { - return make_node(AST_Array, orig, { elements: elements }); - } - function make_injector(func, name) { - return make_node(AST_SimpleStatement, func, { - body: make_node(AST_Assign, func, { - operator: "=", - left: make_node(AST_Dot, name, { - expression: make_node(AST_SymbolRef, name, name), - property: "$inject" - }), - right: make_array(func, make_arguments_names_list(func)) - }) - }); - } - function check_expression(body) { - if (body && body.args) { - // if this is a function call check all of arguments passed - body.args.forEach(function(argument, index, array) { - var comments = argument.start.comments_before; - // if the argument is function preceded by @ngInject - if (argument instanceof AST_Lambda && comments.length && has_inject(comments[0])) { - // replace the function with an array of names of its parameters and function at the end - array[index] = make_array(argument, make_arguments_names_list(argument).concat(argument)); - } - }); - // if this is chained call check previous one recursively - if (body.expression && body.expression.expression) { - check_expression(body.expression.expression); - } - } - } - return statements.reduce(function(a, stat){ - a.push(stat); - - if (stat.body && stat.body.args) { - check_expression(stat.body); - } else { - var token = stat.start; - var comments = token.comments_before; - if (comments && comments.length > 0) { - var last = comments.pop(); - if (has_inject(last)) { - // case 1: defun - if (stat instanceof AST_Defun) { - a.push(make_injector(stat, stat.name)); - } - else if (stat instanceof AST_Definitions) { - stat.definitions.forEach(function(def) { - if (def.value && def.value instanceof AST_Lambda) { - a.push(make_injector(def.value, def.name)); - } - }); - } - else { - compressor.warn("Unknown statement marked with @ngInject [{file}:{line},{col}]", token); - } - } - } - } - - return a; - }, []); - } - function eliminate_spurious_blocks(statements) { var seen_dirs = []; return statements.reduce(function(a, stat){ diff --git a/test/compress/angular-inject.js b/test/compress/angular-inject.js deleted file mode 100644 index 8b24c846..00000000 --- a/test/compress/angular-inject.js +++ /dev/null @@ -1,67 +0,0 @@ -ng_inject_defun: { - options = { - angular: true - }; - input: { - /*@ngInject*/ - function Controller(dependency) { - return dependency; - } - } - expect: { - function Controller(dependency) { - return dependency; - } - Controller.$inject=['dependency'] - } -} - -ng_inject_assignment: { - options = { - angular: true - }; - input: { - /*@ngInject*/ - var Controller = function(dependency) { - return dependency; - } - } - expect: { - var Controller = function(dependency) { - return dependency; - } - Controller.$inject=['dependency'] - } -} - -ng_inject_inline: { - options = { - angular: true - }; - input: { - angular.module('a'). - factory('b', - /*@ngInject*/ - function(dependency) { - return dependency; - }). - directive('c', - /*@ngInject*/ - function(anotherDependency) { - return anotherDependency; - }) - } - expect: { - angular.module('a'). - factory('b',[ - 'dependency', - function(dependency) { - return dependency; - }]). - directive('c',[ - 'anotherDependency', - function(anotherDependency) { - return anotherDependency; - }]) - } -}