jass 0.9.1 → 0.9.3

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.
Files changed (87) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/lib/jass.rb +5 -0
  4. data/lib/jass/compiler.rb +5 -0
  5. data/lib/jass/plugin.rb +2 -1
  6. data/lib/jass/version.rb +1 -1
  7. data/vendor/node_modules/@types/estree/index.d.ts +4 -2
  8. data/vendor/node_modules/@types/estree/package.json +2 -2
  9. data/vendor/node_modules/acorn/bin/_acorn.js +12 -12
  10. data/vendor/node_modules/acorn/bin/run_test262.js +2 -3
  11. data/vendor/node_modules/acorn/bin/test262.whitelist +0 -5
  12. data/vendor/node_modules/acorn/dist/acorn.es.js +76 -68
  13. data/vendor/node_modules/acorn/dist/acorn.js +76 -68
  14. data/vendor/node_modules/acorn/dist/acorn_loose.es.js +42 -30
  15. data/vendor/node_modules/acorn/dist/acorn_loose.js +42 -30
  16. data/vendor/node_modules/acorn/dist/walk.es.js +47 -43
  17. data/vendor/node_modules/acorn/dist/walk.js +47 -43
  18. data/vendor/node_modules/acorn/package.json +9 -5
  19. data/vendor/node_modules/chalk/index.js.flow +93 -0
  20. data/vendor/node_modules/chalk/package.json +8 -3
  21. data/vendor/node_modules/color-convert/conversions.js +36 -29
  22. data/vendor/node_modules/color-convert/package.json +4 -4
  23. data/vendor/node_modules/estree-walker/index.d.ts +17 -0
  24. data/vendor/node_modules/estree-walker/package.json +2 -1
  25. data/vendor/node_modules/fill-range/index.js +2 -2
  26. data/vendor/node_modules/fill-range/package.json +24 -7
  27. data/vendor/node_modules/is-reference/node_modules/@types/estree/index.d.ts +546 -0
  28. data/vendor/node_modules/is-reference/node_modules/@types/estree/package.json +22 -0
  29. data/vendor/node_modules/math-random/browser.js +17 -0
  30. data/vendor/node_modules/math-random/node.js +13 -0
  31. data/vendor/node_modules/math-random/package.json +31 -0
  32. data/vendor/node_modules/math-random/test.js +26 -0
  33. data/vendor/node_modules/nodent-compiler/compiler.js +115 -11
  34. data/vendor/node_modules/nodent-compiler/{lib/output.js → output.js} +0 -0
  35. data/vendor/node_modules/nodent-compiler/package.json +8 -4
  36. data/vendor/node_modules/{nodent-compiler/lib → nodent-transform}/arboriculture.js +1340 -1107
  37. data/vendor/node_modules/nodent-transform/package.json +19 -0
  38. data/vendor/node_modules/path-parse/package.json +1 -1
  39. data/vendor/node_modules/pretty-ms/index.js +2 -1
  40. data/vendor/node_modules/pretty-ms/package.json +2 -3
  41. data/vendor/node_modules/randomatic/index.js +12 -2
  42. data/vendor/node_modules/randomatic/node_modules/is-number/index.js +6 -7
  43. data/vendor/node_modules/randomatic/node_modules/is-number/package.json +9 -16
  44. data/vendor/node_modules/randomatic/node_modules/kind-of/index.js +112 -102
  45. data/vendor/node_modules/randomatic/node_modules/kind-of/package.json +18 -20
  46. data/vendor/node_modules/randomatic/package.json +15 -13
  47. data/vendor/node_modules/repeat-element/index.js +1 -1
  48. data/vendor/node_modules/repeat-element/package.json +27 -22
  49. data/vendor/node_modules/resolve/lib/async.js +20 -17
  50. data/vendor/node_modules/resolve/lib/core.js +2 -2
  51. data/vendor/node_modules/resolve/lib/core.json +4 -1
  52. data/vendor/node_modules/resolve/lib/sync.js +52 -13
  53. data/vendor/node_modules/resolve/package.json +3 -3
  54. data/vendor/node_modules/rollup-plugin-commonjs/dist/rollup-plugin-commonjs.cjs.js +50 -12
  55. data/vendor/node_modules/rollup-plugin-commonjs/dist/rollup-plugin-commonjs.es.js +50 -12
  56. data/vendor/node_modules/rollup-plugin-commonjs/package.json +2 -2
  57. data/vendor/node_modules/rollup-plugin-commonjs/src/index.js +49 -11
  58. data/vendor/node_modules/rollup-plugin-commonjs/src/transform.js +1 -1
  59. data/vendor/node_modules/rollup-plugin-node-resolve/dist/rollup-plugin-node-resolve.cjs.js +82 -85
  60. data/vendor/node_modules/rollup-plugin-node-resolve/dist/rollup-plugin-node-resolve.es.js +82 -85
  61. data/vendor/node_modules/rollup-plugin-node-resolve/package.json +1 -1
  62. data/vendor/node_modules/rollup-plugin-node-resolve/src/index.js +81 -84
  63. data/vendor/node_modules/rollup-pluginutils/dist/pluginutils.cjs.js +81 -2
  64. data/vendor/node_modules/rollup-pluginutils/dist/pluginutils.es.js +81 -3
  65. data/vendor/node_modules/rollup-pluginutils/package.json +12 -6
  66. data/vendor/node_modules/rollup-pluginutils/src/attachScopes.js +10 -2
  67. data/vendor/node_modules/rollup-pluginutils/src/dataToEsm.js +69 -0
  68. data/vendor/node_modules/rollup-pluginutils/src/index.js +1 -0
  69. data/vendor/node_modules/supports-color/index.js +1 -5
  70. data/vendor/node_modules/supports-color/package.json +51 -51
  71. data/vendor/yarn.lock +65 -70
  72. metadata +16 -21
  73. data/vendor/node_modules/irregular-plurals/irregular-plurals.json +0 -146
  74. data/vendor/node_modules/irregular-plurals/package.json +0 -39
  75. data/vendor/node_modules/nodent-compiler/lib/parser.js +0 -291
  76. data/vendor/node_modules/path-parse/index.min.js +0 -1
  77. data/vendor/node_modules/path-parse/test.min.js +0 -1
  78. data/vendor/node_modules/plur/index.js +0 -20
  79. data/vendor/node_modules/plur/package.json +0 -42
  80. data/vendor/node_modules/randomatic/node_modules/is-number/node_modules/kind-of/index.js +0 -116
  81. data/vendor/node_modules/randomatic/node_modules/is-number/node_modules/kind-of/package.json +0 -90
  82. data/vendor/node_modules/rollup-pluginutils/dist/pluginutils.es6.js +0 -217
  83. data/vendor/node_modules/rollup-pluginutils/node_modules/estree-walker/dist/estree-walker.es.js +0 -55
  84. data/vendor/node_modules/rollup-pluginutils/node_modules/estree-walker/dist/estree-walker.es6.js +0 -59
  85. data/vendor/node_modules/rollup-pluginutils/node_modules/estree-walker/dist/estree-walker.umd.js +0 -65
  86. data/vendor/node_modules/rollup-pluginutils/node_modules/estree-walker/package.json +0 -33
  87. data/vendor/node_modules/rollup-pluginutils/node_modules/estree-walker/src/estree-walker.js +0 -49
@@ -16,11 +16,11 @@
16
16
  // walker, and state can be used to give this walked an initial
17
17
  // state.
18
18
 
19
- function simple(node, visitors, base, state, override) {
20
- if (!base) { base = exports.base
19
+ function simple(node, visitors, baseVisitor, state, override) {
20
+ if (!baseVisitor) { baseVisitor = base
21
21
  ; }(function c(node, st, override) {
22
22
  var type = override || node.type, found = visitors[type];
23
- base[type](node, st, c);
23
+ baseVisitor[type](node, st, c);
24
24
  if (found) { found(node, st); }
25
25
  })(node, state, override);
26
26
  }
@@ -28,13 +28,14 @@ function simple(node, visitors, base, state, override) {
28
28
  // An ancestor walk keeps an array of ancestor nodes (including the
29
29
  // current node) and passes them to the callback as third parameter
30
30
  // (and also as state parameter when no other state is present).
31
- function ancestor(node, visitors, base, state) {
32
- if (!base) { base = exports.base; }
33
- var ancestors = [];(function c(node, st, override) {
31
+ function ancestor(node, visitors, baseVisitor, state) {
32
+ var ancestors = [];
33
+ if (!baseVisitor) { baseVisitor = base
34
+ ; }(function c(node, st, override) {
34
35
  var type = override || node.type, found = visitors[type];
35
- var isNew = node != ancestors[ancestors.length - 1];
36
+ var isNew = node !== ancestors[ancestors.length - 1];
36
37
  if (isNew) { ancestors.push(node); }
37
- base[type](node, st, c);
38
+ baseVisitor[type](node, st, c);
38
39
  if (found) { found(node, st || ancestors, ancestors); }
39
40
  if (isNew) { ancestors.pop(); }
40
41
  })(node, state);
@@ -45,15 +46,15 @@ function ancestor(node, visitors, base, state) {
45
46
  // threaded through the walk, and can opt how and whether to walk
46
47
  // their child nodes (by calling their third argument on these
47
48
  // nodes).
48
- function recursive(node, state, funcs, base, override) {
49
- var visitor = funcs ? exports.make(funcs, base) : base;(function c(node, st, override) {
49
+ function recursive(node, state, funcs, baseVisitor, override) {
50
+ var visitor = funcs ? make(funcs, baseVisitor || undefined) : baseVisitor;(function c(node, st, override) {
50
51
  visitor[override || node.type](node, st, c);
51
52
  })(node, state, override);
52
53
  }
53
54
 
54
55
  function makeTest(test) {
55
- if (typeof test == "string")
56
- { return function (type) { return type == test; } }
56
+ if (typeof test === "string")
57
+ { return function (type) { return type === test; } }
57
58
  else if (!test)
58
59
  { return function () { return true; } }
59
60
  else
@@ -63,24 +64,24 @@ function makeTest(test) {
63
64
  var Found = function Found(node, state) { this.node = node; this.state = state; };
64
65
 
65
66
  // A full walk triggers the callback on each node
66
- function full(node, callback, base, state, override) {
67
- if (!base) { base = exports.base
67
+ function full(node, callback, baseVisitor, state, override) {
68
+ if (!baseVisitor) { baseVisitor = base
68
69
  ; }(function c(node, st, override) {
69
70
  var type = override || node.type;
70
- base[type](node, st, c);
71
+ baseVisitor[type](node, st, c);
71
72
  if (!override) { callback(node, st, type); }
72
73
  })(node, state, override);
73
74
  }
74
75
 
75
76
  // An fullAncestor walk is like an ancestor walk, but triggers
76
77
  // the callback on each node
77
- function fullAncestor(node, callback, base, state) {
78
- if (!base) { base = exports.base; }
78
+ function fullAncestor(node, callback, baseVisitor, state) {
79
+ if (!baseVisitor) { baseVisitor = base; }
79
80
  var ancestors = [];(function c(node, st, override) {
80
81
  var type = override || node.type;
81
- var isNew = node != ancestors[ancestors.length - 1];
82
+ var isNew = node !== ancestors[ancestors.length - 1];
82
83
  if (isNew) { ancestors.push(node); }
83
- base[type](node, st, c);
84
+ baseVisitor[type](node, st, c);
84
85
  if (!override) { callback(node, st || ancestors, ancestors, type); }
85
86
  if (isNew) { ancestors.pop(); }
86
87
  })(node, state);
@@ -89,17 +90,17 @@ function fullAncestor(node, callback, base, state) {
89
90
  // Find a node with a given start, end, and type (all are optional,
90
91
  // null can be used as wildcard). Returns a {node, state} object, or
91
92
  // undefined when it doesn't find a matching node.
92
- function findNodeAt(node, start, end, test, base, state) {
93
+ function findNodeAt(node, start, end, test, baseVisitor, state) {
94
+ if (!baseVisitor) { baseVisitor = base; }
93
95
  test = makeTest(test);
94
- if (!base) { base = exports.base; }
95
96
  try {
96
97
  (function c(node, st, override) {
97
98
  var type = override || node.type;
98
99
  if ((start == null || node.start <= start) &&
99
100
  (end == null || node.end >= end))
100
- { base[type](node, st, c); }
101
- if ((start == null || node.start == start) &&
102
- (end == null || node.end == end) &&
101
+ { baseVisitor[type](node, st, c); }
102
+ if ((start == null || node.start === start) &&
103
+ (end == null || node.end === end) &&
103
104
  test(type, node))
104
105
  { throw new Found(node, st) }
105
106
  })(node, state);
@@ -111,14 +112,14 @@ function findNodeAt(node, start, end, test, base, state) {
111
112
 
112
113
  // Find the innermost node of a given type that contains the given
113
114
  // position. Interface similar to findNodeAt.
114
- function findNodeAround(node, pos, test, base, state) {
115
+ function findNodeAround(node, pos, test, baseVisitor, state) {
115
116
  test = makeTest(test);
116
- if (!base) { base = exports.base; }
117
+ if (!baseVisitor) { baseVisitor = base; }
117
118
  try {
118
119
  (function c(node, st, override) {
119
120
  var type = override || node.type;
120
121
  if (node.start > pos || node.end < pos) { return }
121
- base[type](node, st, c);
122
+ baseVisitor[type](node, st, c);
122
123
  if (test(type, node)) { throw new Found(node, st) }
123
124
  })(node, state);
124
125
  } catch (e) {
@@ -128,15 +129,15 @@ function findNodeAround(node, pos, test, base, state) {
128
129
  }
129
130
 
130
131
  // Find the outermost matching node after a given position.
131
- function findNodeAfter(node, pos, test, base, state) {
132
+ function findNodeAfter(node, pos, test, baseVisitor, state) {
132
133
  test = makeTest(test);
133
- if (!base) { base = exports.base; }
134
+ if (!baseVisitor) { baseVisitor = base; }
134
135
  try {
135
136
  (function c(node, st, override) {
136
137
  if (node.end < pos) { return }
137
138
  var type = override || node.type;
138
139
  if (node.start >= pos && test(type, node)) { throw new Found(node, st) }
139
- base[type](node, st, c);
140
+ baseVisitor[type](node, st, c);
140
141
  })(node, state);
141
142
  } catch (e) {
142
143
  if (e instanceof Found) { return e }
@@ -145,15 +146,15 @@ function findNodeAfter(node, pos, test, base, state) {
145
146
  }
146
147
 
147
148
  // Find the outermost matching node before a given position.
148
- function findNodeBefore(node, pos, test, base, state) {
149
+ function findNodeBefore(node, pos, test, baseVisitor, state) {
149
150
  test = makeTest(test);
150
- if (!base) { base = exports.base; }
151
+ if (!baseVisitor) { baseVisitor = base; }
151
152
  var max;(function c(node, st, override) {
152
153
  if (node.start > pos) { return }
153
154
  var type = override || node.type;
154
155
  if (node.end <= pos && (!max || max.node.end < node.end) && test(type, node))
155
156
  { max = new Found(node, st); }
156
- base[type](node, st, c);
157
+ baseVisitor[type](node, st, c);
157
158
  })(node, state);
158
159
  return max
159
160
  }
@@ -167,9 +168,8 @@ var create = Object.create || function(proto) {
167
168
 
168
169
  // Used to create a custom walker. Will fill in all missing node
169
170
  // type properties with the defaults.
170
- function make(funcs, base) {
171
- if (!base) { base = exports.base; }
172
- var visitor = create(base);
171
+ function make(funcs, baseVisitor) {
172
+ var visitor = create(baseVisitor || base);
173
173
  for (var type in funcs) { visitor[type] = funcs[type]; }
174
174
  return visitor
175
175
  }
@@ -238,7 +238,7 @@ base.TryStatement = function (node, st, c) {
238
238
  if (node.finalizer) { c(node.finalizer, st, "Statement"); }
239
239
  };
240
240
  base.CatchClause = function (node, st, c) {
241
- c(node.param, st, "Pattern");
241
+ if (node.param) { c(node.param, st, "Pattern"); }
242
242
  c(node.body, st, "ScopeBody");
243
243
  };
244
244
  base.WhileStatement = base.DoWhileStatement = function (node, st, c) {
@@ -257,7 +257,7 @@ base.ForInStatement = base.ForOfStatement = function (node, st, c) {
257
257
  c(node.body, st, "Statement");
258
258
  };
259
259
  base.ForInit = function (node, st, c) {
260
- if (node.type == "VariableDeclaration") { c(node, st); }
260
+ if (node.type === "VariableDeclaration") { c(node, st); }
261
261
  else { c(node, st, "Expression"); }
262
262
  };
263
263
  base.DebuggerStatement = ignore;
@@ -292,9 +292,9 @@ base.ScopeBody = function (node, st, c) { return c(node, st, "Statement"); };
292
292
  base.ScopeExpression = function (node, st, c) { return c(node, st, "Expression"); };
293
293
 
294
294
  base.Pattern = function (node, st, c) {
295
- if (node.type == "Identifier")
295
+ if (node.type === "Identifier")
296
296
  { c(node, st, "VariablePattern"); }
297
- else if (node.type == "MemberExpression")
297
+ else if (node.type === "MemberExpression")
298
298
  { c(node, st, "MemberPattern"); }
299
299
  else
300
300
  { c(node, st); }
@@ -313,8 +313,12 @@ base.ObjectPattern = function (node, st, c) {
313
313
  for (var i = 0, list = node.properties; i < list.length; i += 1) {
314
314
  var prop = list[i];
315
315
 
316
- if (prop.computed) { c(prop.key, st, "Expression"); }
317
- c(prop.value, st, "Pattern");
316
+ if (prop.type === "Property") {
317
+ if (prop.computed) { c(prop.key, st, "Expression"); }
318
+ c(prop.value, st, "Pattern");
319
+ } else if (prop.type === "RestElement") {
320
+ c(prop.argument, st, "Pattern");
321
+ }
318
322
  }
319
323
  };
320
324
 
@@ -376,7 +380,7 @@ base.MemberExpression = function (node, st, c) {
376
380
  };
377
381
  base.ExportNamedDeclaration = base.ExportDefaultDeclaration = function (node, st, c) {
378
382
  if (node.declaration)
379
- { c(node.declaration, st, node.type == "ExportNamedDeclaration" || node.declaration.id ? "Statement" : "Expression"); }
383
+ { c(node.declaration, st, node.type === "ExportNamedDeclaration" || node.declaration.id ? "Statement" : "Expression"); }
380
384
  if (node.source) { c(node.source, st, "Expression"); }
381
385
  };
382
386
  base.ExportAllDeclaration = function (node, st, c) {
@@ -22,11 +22,11 @@
22
22
  // walker, and state can be used to give this walked an initial
23
23
  // state.
24
24
 
25
- function simple(node, visitors, base, state, override) {
26
- if (!base) { base = exports.base
25
+ function simple(node, visitors, baseVisitor, state, override) {
26
+ if (!baseVisitor) { baseVisitor = base
27
27
  ; }(function c(node, st, override) {
28
28
  var type = override || node.type, found = visitors[type];
29
- base[type](node, st, c);
29
+ baseVisitor[type](node, st, c);
30
30
  if (found) { found(node, st); }
31
31
  })(node, state, override);
32
32
  }
@@ -34,13 +34,14 @@ function simple(node, visitors, base, state, override) {
34
34
  // An ancestor walk keeps an array of ancestor nodes (including the
35
35
  // current node) and passes them to the callback as third parameter
36
36
  // (and also as state parameter when no other state is present).
37
- function ancestor(node, visitors, base, state) {
38
- if (!base) { base = exports.base; }
39
- var ancestors = [];(function c(node, st, override) {
37
+ function ancestor(node, visitors, baseVisitor, state) {
38
+ var ancestors = [];
39
+ if (!baseVisitor) { baseVisitor = base
40
+ ; }(function c(node, st, override) {
40
41
  var type = override || node.type, found = visitors[type];
41
- var isNew = node != ancestors[ancestors.length - 1];
42
+ var isNew = node !== ancestors[ancestors.length - 1];
42
43
  if (isNew) { ancestors.push(node); }
43
- base[type](node, st, c);
44
+ baseVisitor[type](node, st, c);
44
45
  if (found) { found(node, st || ancestors, ancestors); }
45
46
  if (isNew) { ancestors.pop(); }
46
47
  })(node, state);
@@ -51,15 +52,15 @@ function ancestor(node, visitors, base, state) {
51
52
  // threaded through the walk, and can opt how and whether to walk
52
53
  // their child nodes (by calling their third argument on these
53
54
  // nodes).
54
- function recursive(node, state, funcs, base, override) {
55
- var visitor = funcs ? exports.make(funcs, base) : base;(function c(node, st, override) {
55
+ function recursive(node, state, funcs, baseVisitor, override) {
56
+ var visitor = funcs ? make(funcs, baseVisitor || undefined) : baseVisitor;(function c(node, st, override) {
56
57
  visitor[override || node.type](node, st, c);
57
58
  })(node, state, override);
58
59
  }
59
60
 
60
61
  function makeTest(test) {
61
- if (typeof test == "string")
62
- { return function (type) { return type == test; } }
62
+ if (typeof test === "string")
63
+ { return function (type) { return type === test; } }
63
64
  else if (!test)
64
65
  { return function () { return true; } }
65
66
  else
@@ -69,24 +70,24 @@ function makeTest(test) {
69
70
  var Found = function Found(node, state) { this.node = node; this.state = state; };
70
71
 
71
72
  // A full walk triggers the callback on each node
72
- function full(node, callback, base, state, override) {
73
- if (!base) { base = exports.base
73
+ function full(node, callback, baseVisitor, state, override) {
74
+ if (!baseVisitor) { baseVisitor = base
74
75
  ; }(function c(node, st, override) {
75
76
  var type = override || node.type;
76
- base[type](node, st, c);
77
+ baseVisitor[type](node, st, c);
77
78
  if (!override) { callback(node, st, type); }
78
79
  })(node, state, override);
79
80
  }
80
81
 
81
82
  // An fullAncestor walk is like an ancestor walk, but triggers
82
83
  // the callback on each node
83
- function fullAncestor(node, callback, base, state) {
84
- if (!base) { base = exports.base; }
84
+ function fullAncestor(node, callback, baseVisitor, state) {
85
+ if (!baseVisitor) { baseVisitor = base; }
85
86
  var ancestors = [];(function c(node, st, override) {
86
87
  var type = override || node.type;
87
- var isNew = node != ancestors[ancestors.length - 1];
88
+ var isNew = node !== ancestors[ancestors.length - 1];
88
89
  if (isNew) { ancestors.push(node); }
89
- base[type](node, st, c);
90
+ baseVisitor[type](node, st, c);
90
91
  if (!override) { callback(node, st || ancestors, ancestors, type); }
91
92
  if (isNew) { ancestors.pop(); }
92
93
  })(node, state);
@@ -95,17 +96,17 @@ function fullAncestor(node, callback, base, state) {
95
96
  // Find a node with a given start, end, and type (all are optional,
96
97
  // null can be used as wildcard). Returns a {node, state} object, or
97
98
  // undefined when it doesn't find a matching node.
98
- function findNodeAt(node, start, end, test, base, state) {
99
+ function findNodeAt(node, start, end, test, baseVisitor, state) {
100
+ if (!baseVisitor) { baseVisitor = base; }
99
101
  test = makeTest(test);
100
- if (!base) { base = exports.base; }
101
102
  try {
102
103
  (function c(node, st, override) {
103
104
  var type = override || node.type;
104
105
  if ((start == null || node.start <= start) &&
105
106
  (end == null || node.end >= end))
106
- { base[type](node, st, c); }
107
- if ((start == null || node.start == start) &&
108
- (end == null || node.end == end) &&
107
+ { baseVisitor[type](node, st, c); }
108
+ if ((start == null || node.start === start) &&
109
+ (end == null || node.end === end) &&
109
110
  test(type, node))
110
111
  { throw new Found(node, st) }
111
112
  })(node, state);
@@ -117,14 +118,14 @@ function findNodeAt(node, start, end, test, base, state) {
117
118
 
118
119
  // Find the innermost node of a given type that contains the given
119
120
  // position. Interface similar to findNodeAt.
120
- function findNodeAround(node, pos, test, base, state) {
121
+ function findNodeAround(node, pos, test, baseVisitor, state) {
121
122
  test = makeTest(test);
122
- if (!base) { base = exports.base; }
123
+ if (!baseVisitor) { baseVisitor = base; }
123
124
  try {
124
125
  (function c(node, st, override) {
125
126
  var type = override || node.type;
126
127
  if (node.start > pos || node.end < pos) { return }
127
- base[type](node, st, c);
128
+ baseVisitor[type](node, st, c);
128
129
  if (test(type, node)) { throw new Found(node, st) }
129
130
  })(node, state);
130
131
  } catch (e) {
@@ -134,15 +135,15 @@ function findNodeAround(node, pos, test, base, state) {
134
135
  }
135
136
 
136
137
  // Find the outermost matching node after a given position.
137
- function findNodeAfter(node, pos, test, base, state) {
138
+ function findNodeAfter(node, pos, test, baseVisitor, state) {
138
139
  test = makeTest(test);
139
- if (!base) { base = exports.base; }
140
+ if (!baseVisitor) { baseVisitor = base; }
140
141
  try {
141
142
  (function c(node, st, override) {
142
143
  if (node.end < pos) { return }
143
144
  var type = override || node.type;
144
145
  if (node.start >= pos && test(type, node)) { throw new Found(node, st) }
145
- base[type](node, st, c);
146
+ baseVisitor[type](node, st, c);
146
147
  })(node, state);
147
148
  } catch (e) {
148
149
  if (e instanceof Found) { return e }
@@ -151,15 +152,15 @@ function findNodeAfter(node, pos, test, base, state) {
151
152
  }
152
153
 
153
154
  // Find the outermost matching node before a given position.
154
- function findNodeBefore(node, pos, test, base, state) {
155
+ function findNodeBefore(node, pos, test, baseVisitor, state) {
155
156
  test = makeTest(test);
156
- if (!base) { base = exports.base; }
157
+ if (!baseVisitor) { baseVisitor = base; }
157
158
  var max;(function c(node, st, override) {
158
159
  if (node.start > pos) { return }
159
160
  var type = override || node.type;
160
161
  if (node.end <= pos && (!max || max.node.end < node.end) && test(type, node))
161
162
  { max = new Found(node, st); }
162
- base[type](node, st, c);
163
+ baseVisitor[type](node, st, c);
163
164
  })(node, state);
164
165
  return max
165
166
  }
@@ -173,9 +174,8 @@ var create = Object.create || function(proto) {
173
174
 
174
175
  // Used to create a custom walker. Will fill in all missing node
175
176
  // type properties with the defaults.
176
- function make(funcs, base) {
177
- if (!base) { base = exports.base; }
178
- var visitor = create(base);
177
+ function make(funcs, baseVisitor) {
178
+ var visitor = create(baseVisitor || base);
179
179
  for (var type in funcs) { visitor[type] = funcs[type]; }
180
180
  return visitor
181
181
  }
@@ -244,7 +244,7 @@ base.TryStatement = function (node, st, c) {
244
244
  if (node.finalizer) { c(node.finalizer, st, "Statement"); }
245
245
  };
246
246
  base.CatchClause = function (node, st, c) {
247
- c(node.param, st, "Pattern");
247
+ if (node.param) { c(node.param, st, "Pattern"); }
248
248
  c(node.body, st, "ScopeBody");
249
249
  };
250
250
  base.WhileStatement = base.DoWhileStatement = function (node, st, c) {
@@ -263,7 +263,7 @@ base.ForInStatement = base.ForOfStatement = function (node, st, c) {
263
263
  c(node.body, st, "Statement");
264
264
  };
265
265
  base.ForInit = function (node, st, c) {
266
- if (node.type == "VariableDeclaration") { c(node, st); }
266
+ if (node.type === "VariableDeclaration") { c(node, st); }
267
267
  else { c(node, st, "Expression"); }
268
268
  };
269
269
  base.DebuggerStatement = ignore;
@@ -298,9 +298,9 @@ base.ScopeBody = function (node, st, c) { return c(node, st, "Statement"); };
298
298
  base.ScopeExpression = function (node, st, c) { return c(node, st, "Expression"); };
299
299
 
300
300
  base.Pattern = function (node, st, c) {
301
- if (node.type == "Identifier")
301
+ if (node.type === "Identifier")
302
302
  { c(node, st, "VariablePattern"); }
303
- else if (node.type == "MemberExpression")
303
+ else if (node.type === "MemberExpression")
304
304
  { c(node, st, "MemberPattern"); }
305
305
  else
306
306
  { c(node, st); }
@@ -319,8 +319,12 @@ base.ObjectPattern = function (node, st, c) {
319
319
  for (var i = 0, list = node.properties; i < list.length; i += 1) {
320
320
  var prop = list[i];
321
321
 
322
- if (prop.computed) { c(prop.key, st, "Expression"); }
323
- c(prop.value, st, "Pattern");
322
+ if (prop.type === "Property") {
323
+ if (prop.computed) { c(prop.key, st, "Expression"); }
324
+ c(prop.value, st, "Pattern");
325
+ } else if (prop.type === "RestElement") {
326
+ c(prop.argument, st, "Pattern");
327
+ }
324
328
  }
325
329
  };
326
330
 
@@ -382,7 +386,7 @@ base.MemberExpression = function (node, st, c) {
382
386
  };
383
387
  base.ExportNamedDeclaration = base.ExportDefaultDeclaration = function (node, st, c) {
384
388
  if (node.declaration)
385
- { c(node.declaration, st, node.type == "ExportNamedDeclaration" || node.declaration.id ? "Statement" : "Expression"); }
389
+ { c(node.declaration, st, node.type === "ExportNamedDeclaration" || node.declaration.id ? "Statement" : "Expression"); }
386
390
  if (node.source) { c(node.source, st, "Expression"); }
387
391
  };
388
392
  base.ExportAllDeclaration = function (node, st, c) {
@@ -4,7 +4,7 @@
4
4
  "homepage": "https://github.com/acornjs/acorn",
5
5
  "main": "dist/acorn.js",
6
6
  "module": "dist/acorn.es.js",
7
- "version": "5.5.3",
7
+ "version": "5.7.2",
8
8
  "engines": {
9
9
  "node": ">=0.4.0"
10
10
  },
@@ -18,6 +18,10 @@
18
18
  "name": "Ingvar Stepanyan",
19
19
  "email": "me@rreverser.com",
20
20
  "web": "http://rreverser.com/"
21
+ },
22
+ {
23
+ "name": "Adrian Heine",
24
+ "email": "http://adrianheine.de"
21
25
  }
22
26
  ],
23
27
  "repository": {
@@ -26,7 +30,7 @@
26
30
  },
27
31
  "license": "MIT",
28
32
  "scripts": {
29
- "prepare": "npm test",
33
+ "prepare": "npm run build && node test/run.js && node test/lint.js",
30
34
  "test": "node test/run.js && node test/lint.js",
31
35
  "pretest": "npm run build:main && npm run build:loose",
32
36
  "test:test262": "node bin/run_test262.js",
@@ -49,8 +53,8 @@
49
53
  "eslint-plugin-standard": "^3.0.1",
50
54
  "rollup": "^0.45.0",
51
55
  "rollup-plugin-buble": "^0.16.0",
52
- "test262": "git+https://github.com/tc39/test262.git#18c1e799a01cc976695983b61e225ce7959bdd91",
53
- "test262-parser-runner": "^0.3.1",
54
- "unicode-10.0.0": "^0.7.5"
56
+ "test262": "git+https://github.com/tc39/test262.git#3bfad28cc302fd4455badcfcbca7c5bb7ce41a72",
57
+ "test262-parser-runner": "^0.4.0",
58
+ "unicode-11.0.0": "^0.7.7"
55
59
  }
56
60
  }