diff options
author | Alex Lam S.L <alexlamsl@gmail.com> | 2018-01-17 21:33:13 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-01-17 21:33:13 +0800 |
commit | 07e4b64f3a8439a9491cc7a277872e0a5d79a29b (patch) | |
tree | 6a2be087889003300ea1a17fcef7ce6ecf197c6b /lib | |
parent | d3ce2bc9e73d9d98b34b261d282a18b9ce9d5880 (diff) | |
download | tracifyjs-07e4b64f3a8439a9491cc7a277872e0a5d79a29b.tar.gz tracifyjs-07e4b64f3a8439a9491cc7a277872e0a5d79a29b.zip |
fix `AST_Scope.clone()` (#2803)
fixes #2799
Diffstat (limited to 'lib')
-rw-r--r-- | lib/ast.js | 7 | ||||
-rw-r--r-- | lib/utils.js | 7 |
2 files changed, 14 insertions, 0 deletions
@@ -308,6 +308,13 @@ var AST_Scope = DEFNODE("Scope", "variables functions uses_with uses_eval parent enclosed: "[SymbolDef*/S] a list of all symbol definitions that are accessed from this scope or any subscopes", cname: "[integer/S] current index for mangling variables (used internally by the mangler)", }, + clone: function(deep) { + var node = this._clone(deep); + if (this.variables) node.variables = this.variables.clone(); + if (this.functions) node.functions = this.functions.clone(); + if (this.enclosed) node.enclosed = this.enclosed.slice(); + return node; + } }, AST_Block); var AST_Toplevel = DEFNODE("Toplevel", "globals", { diff --git a/lib/utils.js b/lib/utils.js index dab7f566..9121fa93 100644 --- a/lib/utils.js +++ b/lib/utils.js @@ -303,6 +303,13 @@ Dictionary.prototype = { ret.push(f(this._values[i], i.substr(1))); return ret; }, + clone: function() { + var ret = new Dictionary(); + for (var i in this._values) + ret._values[i] = this._values[i]; + ret._size = this._size; + return ret; + }, toObject: function() { return this._values } }; Dictionary.fromObject = function(obj) { |