opal 0.7.0 → 0.7.1

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 (202) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +11 -1
  3. data/lib/opal/cli.rb +9 -1
  4. data/lib/opal/cli_options.rb +12 -3
  5. data/lib/opal/cli_runners/nodejs.rb +3 -2
  6. data/lib/opal/version.rb +1 -1
  7. data/opal/corelib/kernel.rb +7 -0
  8. data/opal/corelib/runtime.js +4 -0
  9. data/spec/lib/cli_spec.rb +16 -0
  10. data/stdlib/nodejs.rb +1 -2
  11. data/stdlib/nodejs/{process.rb → kernel.rb} +7 -4
  12. data/stdlib/nodejs/node_modules/.bin/js-yaml +140 -0
  13. data/stdlib/nodejs/node_modules/glob/LICENSE +15 -0
  14. data/stdlib/nodejs/node_modules/glob/README.md +357 -0
  15. data/stdlib/nodejs/node_modules/glob/common.js +177 -0
  16. data/stdlib/nodejs/node_modules/glob/glob.js +649 -0
  17. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/.eslintrc +17 -0
  18. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/LICENSE +15 -0
  19. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/README.md +37 -0
  20. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/inflight.js +44 -0
  21. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/node_modules/wrappy/LICENSE +15 -0
  22. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/node_modules/wrappy/README.md +36 -0
  23. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/node_modules/wrappy/package.json +52 -0
  24. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/node_modules/wrappy/test/basic.js +51 -0
  25. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/node_modules/wrappy/wrappy.js +33 -0
  26. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/package.json +61 -0
  27. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/test.js +97 -0
  28. data/stdlib/nodejs/node_modules/glob/node_modules/inherits/LICENSE +16 -0
  29. data/stdlib/nodejs/node_modules/glob/node_modules/inherits/README.md +42 -0
  30. data/stdlib/nodejs/node_modules/glob/node_modules/inherits/inherits.js +1 -0
  31. data/stdlib/nodejs/node_modules/glob/node_modules/inherits/inherits_browser.js +23 -0
  32. data/stdlib/nodejs/node_modules/glob/node_modules/inherits/package.json +51 -0
  33. data/stdlib/nodejs/node_modules/glob/node_modules/inherits/test.js +25 -0
  34. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/.npmignore +1 -0
  35. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/.travis.yml +4 -0
  36. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/LICENSE +23 -0
  37. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/README.md +216 -0
  38. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/benchmark.js +15 -0
  39. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/browser.js +1181 -0
  40. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/minimatch.js +845 -0
  41. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/.npmignore +2 -0
  42. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/.travis.yml +3 -0
  43. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/README.md +121 -0
  44. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/example.js +8 -0
  45. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/index.js +191 -0
  46. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/.npmignore +2 -0
  47. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/.travis.yml +4 -0
  48. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/Makefile +6 -0
  49. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/README.md +80 -0
  50. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/example.js +5 -0
  51. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/index.js +38 -0
  52. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/package.json +73 -0
  53. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/test/balanced.js +56 -0
  54. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/.travis.yml +4 -0
  55. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/LICENSE +18 -0
  56. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/README.markdown +62 -0
  57. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/example/map.js +6 -0
  58. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/index.js +13 -0
  59. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/package.json +83 -0
  60. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/test/map.js +39 -0
  61. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/package.json +75 -0
  62. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/bash-comparison.js +32 -0
  63. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/bash-results.txt +1075 -0
  64. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/cases.txt +182 -0
  65. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/dollar.js +9 -0
  66. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/empty-option.js +10 -0
  67. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/generate.sh +24 -0
  68. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/negative-increment.js +15 -0
  69. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/nested.js +16 -0
  70. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/order.js +10 -0
  71. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/pad.js +13 -0
  72. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/same-type.js +7 -0
  73. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/sequence.js +50 -0
  74. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/package.json +60 -0
  75. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/test/basic.js +399 -0
  76. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/test/brace-expand.js +45 -0
  77. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/test/defaults.js +274 -0
  78. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/test/extglob-ending-with-state-char.js +8 -0
  79. data/stdlib/nodejs/node_modules/glob/node_modules/once/LICENSE +27 -0
  80. data/stdlib/nodejs/node_modules/glob/node_modules/once/README.md +51 -0
  81. data/stdlib/nodejs/node_modules/glob/node_modules/once/node_modules/wrappy/LICENSE +15 -0
  82. data/stdlib/nodejs/node_modules/glob/node_modules/once/node_modules/wrappy/README.md +36 -0
  83. data/stdlib/nodejs/node_modules/glob/node_modules/once/node_modules/wrappy/package.json +52 -0
  84. data/stdlib/nodejs/node_modules/glob/node_modules/once/node_modules/wrappy/test/basic.js +51 -0
  85. data/stdlib/nodejs/node_modules/glob/node_modules/once/node_modules/wrappy/wrappy.js +33 -0
  86. data/stdlib/nodejs/node_modules/glob/node_modules/once/once.js +21 -0
  87. data/stdlib/nodejs/node_modules/glob/node_modules/once/package.json +60 -0
  88. data/stdlib/nodejs/node_modules/glob/node_modules/once/test/once.js +23 -0
  89. data/stdlib/nodejs/node_modules/glob/package.json +72 -0
  90. data/stdlib/nodejs/node_modules/glob/sync.js +409 -0
  91. data/stdlib/nodejs/node_modules/js-yaml/HISTORY.md +277 -0
  92. data/stdlib/nodejs/node_modules/js-yaml/LICENSE +21 -0
  93. data/stdlib/nodejs/node_modules/js-yaml/README.md +288 -0
  94. data/stdlib/nodejs/node_modules/js-yaml/bin/js-yaml.js +140 -0
  95. data/stdlib/nodejs/node_modules/js-yaml/bower.json +23 -0
  96. data/stdlib/nodejs/node_modules/js-yaml/dist/js-yaml.js +3666 -0
  97. data/stdlib/nodejs/node_modules/js-yaml/dist/js-yaml.min.js +3 -0
  98. data/stdlib/nodejs/node_modules/js-yaml/examples/custom_types.js +102 -0
  99. data/stdlib/nodejs/node_modules/js-yaml/examples/custom_types.yml +18 -0
  100. data/stdlib/nodejs/node_modules/js-yaml/examples/dumper.js +31 -0
  101. data/stdlib/nodejs/node_modules/js-yaml/examples/dumper.json +22 -0
  102. data/stdlib/nodejs/node_modules/js-yaml/examples/sample_document.js +18 -0
  103. data/stdlib/nodejs/node_modules/js-yaml/examples/sample_document.yml +197 -0
  104. data/stdlib/nodejs/node_modules/js-yaml/index.js +7 -0
  105. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml.js +39 -0
  106. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/common.js +62 -0
  107. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/dumper.js +554 -0
  108. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/exception.js +25 -0
  109. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/loader.js +1581 -0
  110. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/mark.js +78 -0
  111. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema.js +103 -0
  112. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/core.js +18 -0
  113. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/default_full.js +25 -0
  114. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/default_safe.js +28 -0
  115. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/failsafe.js +17 -0
  116. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/json.js +25 -0
  117. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type.js +61 -0
  118. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/binary.js +133 -0
  119. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/bool.js +37 -0
  120. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/float.js +110 -0
  121. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/int.js +183 -0
  122. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/js/function.js +85 -0
  123. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/js/regexp.js +84 -0
  124. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/js/undefined.js +27 -0
  125. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/map.js +8 -0
  126. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/merge.js +12 -0
  127. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/null.js +36 -0
  128. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/omap.js +56 -0
  129. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/pairs.js +61 -0
  130. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/seq.js +8 -0
  131. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/set.js +33 -0
  132. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/str.js +8 -0
  133. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/timestamp.js +98 -0
  134. data/stdlib/nodejs/node_modules/js-yaml/node_modules/.bin/esparse +117 -0
  135. data/stdlib/nodejs/node_modules/js-yaml/node_modules/.bin/esvalidate +177 -0
  136. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/HISTORY.md +115 -0
  137. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/LICENSE +21 -0
  138. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/README.md +239 -0
  139. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/arguments.js +36 -0
  140. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/choice.js +22 -0
  141. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/constants.js +59 -0
  142. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/help.js +13 -0
  143. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/nargs.js +33 -0
  144. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/parents.js +28 -0
  145. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/prefix_chars.js +23 -0
  146. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/sub_commands.js +49 -0
  147. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/sum.js +35 -0
  148. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/testformatters.js +270 -0
  149. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/index.js +1 -0
  150. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action.js +146 -0
  151. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/append.js +55 -0
  152. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/append/constant.js +47 -0
  153. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/count.js +40 -0
  154. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/help.js +48 -0
  155. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/store.js +50 -0
  156. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/store/constant.js +43 -0
  157. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/store/false.js +27 -0
  158. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/store/true.js +26 -0
  159. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/subparsers.js +148 -0
  160. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/version.js +50 -0
  161. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action_container.js +481 -0
  162. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argparse.js +14 -0
  163. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argument/error.js +50 -0
  164. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argument/exclusive.js +54 -0
  165. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argument/group.js +75 -0
  166. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argument_parser.js +1168 -0
  167. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/const.js +18 -0
  168. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/help/added_formatters.js +88 -0
  169. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/help/formatter.js +798 -0
  170. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/namespace.js +77 -0
  171. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/.npmignore +2 -0
  172. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/.travis.yml +8 -0
  173. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/README.markdown +825 -0
  174. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/bower.json +33 -0
  175. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/component.json +11 -0
  176. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/foo.js +10 -0
  177. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/gulpfile.js +26 -0
  178. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/lib/underscore.string.js +673 -0
  179. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/libpeerconnection.log +0 -0
  180. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/package.json +107 -0
  181. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/LICENSE +23 -0
  182. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/README.md +22 -0
  183. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/package.json +69 -0
  184. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/underscore-min.js +6 -0
  185. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/underscore.js +1415 -0
  186. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/package.json +62 -0
  187. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/README.md +73 -0
  188. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/bin/esparse.js +117 -0
  189. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/bin/esvalidate.js +177 -0
  190. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/esprima.js +3908 -0
  191. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/package.json +69 -0
  192. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/compat.js +239 -0
  193. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/reflect.js +422 -0
  194. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/run.js +66 -0
  195. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/runner.js +387 -0
  196. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/test.js +20238 -0
  197. data/stdlib/nodejs/node_modules/js-yaml/package.json +83 -0
  198. data/{package.json → stdlib/nodejs/package.json} +0 -3
  199. data/stdlib/phantomjs.rb +1 -6
  200. data/tasks/testing.rake +1 -4
  201. metadata +191 -6
  202. data/stdlib/nodejs/runtime.rb +0 -26
@@ -0,0 +1,69 @@
1
+ {
2
+ "name": "esprima",
3
+ "description": "ECMAScript parsing infrastructure for multipurpose analysis",
4
+ "homepage": "http://esprima.org",
5
+ "main": "esprima.js",
6
+ "bin": {
7
+ "esparse": "./bin/esparse.js",
8
+ "esvalidate": "./bin/esvalidate.js"
9
+ },
10
+ "files": [
11
+ "bin",
12
+ "test/run.js",
13
+ "test/runner.js",
14
+ "test/test.js",
15
+ "test/compat.js",
16
+ "test/reflect.js",
17
+ "esprima.js"
18
+ ],
19
+ "version": "1.0.4",
20
+ "engines": {
21
+ "node": ">=0.4.0"
22
+ },
23
+ "maintainers": [
24
+ {
25
+ "name": "ariya",
26
+ "email": "ariya.hidayat@gmail.com"
27
+ }
28
+ ],
29
+ "repository": {
30
+ "type": "git",
31
+ "url": "http://github.com/ariya/esprima.git"
32
+ },
33
+ "licenses": [
34
+ {
35
+ "type": "BSD",
36
+ "url": "http://github.com/ariya/esprima/raw/master/LICENSE.BSD"
37
+ }
38
+ ],
39
+ "keywords": [
40
+ "ast",
41
+ "ecmascript",
42
+ "javascript",
43
+ "parser",
44
+ "syntax"
45
+ ],
46
+ "scripts": {
47
+ "test": "node test/run.js",
48
+ "benchmark": "node test/benchmarks.js",
49
+ "benchmark-quick": "node test/benchmarks.js quick"
50
+ },
51
+ "_id": "esprima@1.0.4",
52
+ "dist": {
53
+ "shasum": "9f557e08fc3b4d26ece9dd34f8fbf476b62585ad",
54
+ "tarball": "http://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz"
55
+ },
56
+ "_npmVersion": "1.1.61",
57
+ "_npmUser": {
58
+ "name": "ariya",
59
+ "email": "ariya.hidayat@gmail.com"
60
+ },
61
+ "directories": {},
62
+ "_shasum": "9f557e08fc3b4d26ece9dd34f8fbf476b62585ad",
63
+ "_resolved": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz",
64
+ "_from": "esprima@>=1.0.2 <1.1.0",
65
+ "bugs": {
66
+ "url": "https://github.com/ariya/esprima/issues"
67
+ },
68
+ "readme": "ERROR: No README data found!"
69
+ }
@@ -0,0 +1,239 @@
1
+ /*
2
+ Copyright (C) 2012 Joost-Wim Boekesteijn <joost-wim@boekesteijn.nl>
3
+ Copyright (C) 2011 Ariya Hidayat <ariya.hidayat@gmail.com>
4
+
5
+ Redistribution and use in source and binary forms, with or without
6
+ modification, are permitted provided that the following conditions are met:
7
+
8
+ * Redistributions of source code must retain the above copyright
9
+ notice, this list of conditions and the following disclaimer.
10
+ * Redistributions in binary form must reproduce the above copyright
11
+ notice, this list of conditions and the following disclaimer in the
12
+ documentation and/or other materials provided with the distribution.
13
+
14
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
15
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17
+ ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
18
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
19
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
20
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
21
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
23
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24
+ */
25
+
26
+ /*jslint node: true */
27
+ /*global document: true, window:true, esprima: true, testReflect: true */
28
+
29
+ var runTests;
30
+
31
+ function getContext(esprima, reportCase, reportFailure) {
32
+ 'use strict';
33
+
34
+ var Reflect, Pattern;
35
+
36
+ // Maps Mozilla Reflect object to our Esprima parser.
37
+ Reflect = {
38
+ parse: function (code) {
39
+ var result;
40
+
41
+ reportCase(code);
42
+
43
+ try {
44
+ result = esprima.parse(code);
45
+ } catch (error) {
46
+ result = error;
47
+ }
48
+
49
+ return result;
50
+ }
51
+ };
52
+
53
+ // This is used by Reflect test suite to match a syntax tree.
54
+ Pattern = function (obj) {
55
+ var pattern;
56
+
57
+ // Poor man's deep object cloning.
58
+ pattern = JSON.parse(JSON.stringify(obj));
59
+
60
+ // Special handling for regular expression literal since we need to
61
+ // convert it to a string literal, otherwise it will be decoded
62
+ // as object "{}" and the regular expression would be lost.
63
+ if (obj.type && obj.type === 'Literal') {
64
+ if (obj.value instanceof RegExp) {
65
+ pattern = {
66
+ type: obj.type,
67
+ value: obj.value.toString()
68
+ };
69
+ }
70
+ }
71
+
72
+ // Special handling for branch statement because SpiderMonkey
73
+ // prefers to put the 'alternate' property before 'consequent'.
74
+ if (obj.type && obj.type === 'IfStatement') {
75
+ pattern = {
76
+ type: pattern.type,
77
+ test: pattern.test,
78
+ consequent: pattern.consequent,
79
+ alternate: pattern.alternate
80
+ };
81
+ }
82
+
83
+ // Special handling for do while statement because SpiderMonkey
84
+ // prefers to put the 'test' property before 'body'.
85
+ if (obj.type && obj.type === 'DoWhileStatement') {
86
+ pattern = {
87
+ type: pattern.type,
88
+ body: pattern.body,
89
+ test: pattern.test
90
+ };
91
+ }
92
+
93
+ function adjustRegexLiteralAndRaw(key, value) {
94
+ if (key === 'value' && value instanceof RegExp) {
95
+ value = value.toString();
96
+ } else if (key === 'raw' && typeof value === "string") {
97
+ // Ignore Esprima-specific 'raw' property.
98
+ return undefined;
99
+ }
100
+ return value;
101
+ }
102
+
103
+ if (obj.type && (obj.type === 'Program')) {
104
+ pattern.assert = function (tree) {
105
+ var actual, expected;
106
+ actual = JSON.stringify(tree, adjustRegexLiteralAndRaw, 4);
107
+ expected = JSON.stringify(obj, null, 4);
108
+
109
+ if (expected !== actual) {
110
+ reportFailure(expected, actual);
111
+ }
112
+ };
113
+ }
114
+
115
+ return pattern;
116
+ };
117
+
118
+ return {
119
+ Reflect: Reflect,
120
+ Pattern: Pattern
121
+ };
122
+ }
123
+
124
+ if (typeof window !== 'undefined') {
125
+ // Run all tests in a browser environment.
126
+ runTests = function () {
127
+ 'use strict';
128
+
129
+ var total = 0,
130
+ failures = 0;
131
+
132
+ function setText(el, str) {
133
+ if (typeof el.innerText === 'string') {
134
+ el.innerText = str;
135
+ } else {
136
+ el.textContent = str;
137
+ }
138
+ }
139
+
140
+ function reportCase(code) {
141
+ var report, e;
142
+ report = document.getElementById('report');
143
+ e = document.createElement('pre');
144
+ e.setAttribute('class', 'code');
145
+ setText(e, code);
146
+ report.appendChild(e);
147
+ total += 1;
148
+ }
149
+
150
+ function reportFailure(expected, actual) {
151
+ var report, e;
152
+
153
+ failures += 1;
154
+
155
+ report = document.getElementById('report');
156
+
157
+ e = document.createElement('p');
158
+ setText(e, 'Expected');
159
+ report.appendChild(e);
160
+
161
+ e = document.createElement('pre');
162
+ e.setAttribute('class', 'expected');
163
+ setText(e, expected);
164
+ report.appendChild(e);
165
+
166
+ e = document.createElement('p');
167
+ setText(e, 'Actual');
168
+ report.appendChild(e);
169
+
170
+ e = document.createElement('pre');
171
+ e.setAttribute('class', 'actual');
172
+ setText(e, actual);
173
+ report.appendChild(e);
174
+ }
175
+
176
+ setText(document.getElementById('version'), esprima.version);
177
+
178
+ window.setTimeout(function () {
179
+ var tick, context = getContext(esprima, reportCase, reportFailure);
180
+
181
+ tick = new Date();
182
+ testReflect(context.Reflect, context.Pattern);
183
+ tick = (new Date()) - tick;
184
+
185
+ if (failures > 0) {
186
+ setText(document.getElementById('status'), total + ' tests. ' +
187
+ 'Failures: ' + failures + '. ' + tick + ' ms');
188
+ } else {
189
+ setText(document.getElementById('status'), total + ' tests. ' +
190
+ 'No failure. ' + tick + ' ms');
191
+ }
192
+ }, 513);
193
+ };
194
+ } else {
195
+ (function (global) {
196
+ 'use strict';
197
+ var esprima = require('../esprima'),
198
+ tick,
199
+ total = 0,
200
+ failures = [],
201
+ header,
202
+ current,
203
+ context;
204
+
205
+ function reportCase(code) {
206
+ total += 1;
207
+ current = code;
208
+ }
209
+
210
+ function reportFailure(expected, actual) {
211
+ failures.push({
212
+ source: current,
213
+ expected: expected.toString(),
214
+ actual: actual.toString()
215
+ });
216
+ }
217
+
218
+ context = getContext(esprima, reportCase, reportFailure);
219
+
220
+ tick = new Date();
221
+ require('./reflect').testReflect(context.Reflect, context.Pattern);
222
+ tick = (new Date()) - tick;
223
+
224
+ header = total + ' tests. ' + failures.length + ' failures. ' +
225
+ tick + ' ms';
226
+ if (failures.length) {
227
+ console.error(header);
228
+ failures.forEach(function (failure) {
229
+ console.error(failure.source + ': Expected\n ' +
230
+ failure.expected.split('\n').join('\n ') +
231
+ '\nto match\n ' + failure.actual);
232
+ });
233
+ } else {
234
+ console.log(header);
235
+ }
236
+ process.exit(failures.length === 0 ? 0 : 1);
237
+ }(this));
238
+ }
239
+ /* vim: set sw=4 ts=4 et tw=80 : */
@@ -0,0 +1,422 @@
1
+ // This is modified from Mozilla Reflect.parse test suite (the file is located
2
+ // at js/src/tests/js1_8_5/extensions/reflect-parse.js in the source tree).
3
+ //
4
+ // Some notable changes:
5
+ // * Removed unsupported features (destructuring, let, comprehensions...).
6
+ // * Removed tests for E4X (ECMAScript for XML).
7
+ // * Removed everything related to builder.
8
+ // * Enclosed every 'Pattern' construct with a scope.
9
+ // * Tweaked some expected tree to remove generator field.
10
+ // * Removed the test for bug 632030 and bug 632024.
11
+
12
+ /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
13
+ /*
14
+ * Any copyright is dedicated to the Public Domain.
15
+ * http://creativecommons.org/licenses/publicdomain/
16
+ */
17
+
18
+ (function (exports) {
19
+
20
+ function testReflect(Reflect, Pattern) {
21
+
22
+ function program(elts) { return Pattern({ type: "Program", body: elts }) }
23
+ function exprStmt(expr) { return Pattern({ type: "ExpressionStatement", expression: expr }) }
24
+ function throwStmt(expr) { return Pattern({ type: "ThrowStatement", argument: expr }) }
25
+ function returnStmt(expr) { return Pattern({ type: "ReturnStatement", argument: expr }) }
26
+ function yieldExpr(expr) { return Pattern({ type: "YieldExpression", argument: expr }) }
27
+ function lit(val) { return Pattern({ type: "Literal", value: val }) }
28
+ var thisExpr = Pattern({ type: "ThisExpression" });
29
+ function funDecl(id, params, body) { return Pattern({ type: "FunctionDeclaration",
30
+ id: id,
31
+ params: params,
32
+ defaults: [],
33
+ body: body,
34
+ rest: null,
35
+ generator: false,
36
+ expression: false
37
+ }) }
38
+ function genFunDecl(id, params, body) { return Pattern({ type: "FunctionDeclaration",
39
+ id: id,
40
+ params: params,
41
+ defaults: [],
42
+ body: body,
43
+ rest: null,
44
+ generator: false,
45
+ expression: false
46
+ }) }
47
+ function declarator(id, init) { return Pattern({ type: "VariableDeclarator", id: id, init: init }) }
48
+ function varDecl(decls) { return Pattern({ type: "VariableDeclaration", declarations: decls, kind: "var" }) }
49
+ function letDecl(decls) { return Pattern({ type: "VariableDeclaration", declarations: decls, kind: "let" }) }
50
+ function constDecl(decls) { return Pattern({ type: "VariableDeclaration", declarations: decls, kind: "const" }) }
51
+ function ident(name) { return Pattern({ type: "Identifier", name: name }) }
52
+ function dotExpr(obj, id) { return Pattern({ type: "MemberExpression", computed: false, object: obj, property: id }) }
53
+ function memExpr(obj, id) { return Pattern({ type: "MemberExpression", computed: true, object: obj, property: id }) }
54
+ function forStmt(init, test, update, body) { return Pattern({ type: "ForStatement", init: init, test: test, update: update, body: body }) }
55
+ function forInStmt(lhs, rhs, body) { return Pattern({ type: "ForInStatement", left: lhs, right: rhs, body: body, each: false }) }
56
+ function forEachInStmt(lhs, rhs, body) { return Pattern({ type: "ForInStatement", left: lhs, right: rhs, body: body, each: true }) }
57
+ function breakStmt(lab) { return Pattern({ type: "BreakStatement", label: lab }) }
58
+ function continueStmt(lab) { return Pattern({ type: "ContinueStatement", label: lab }) }
59
+ function blockStmt(body) { return Pattern({ type: "BlockStatement", body: body }) }
60
+ var emptyStmt = Pattern({ type: "EmptyStatement" });
61
+ function ifStmt(test, cons, alt) { return Pattern({ type: "IfStatement", test: test, alternate: alt, consequent: cons }) }
62
+ function labStmt(lab, stmt) { return Pattern({ type: "LabeledStatement", label: lab, body: stmt }) }
63
+ function withStmt(obj, stmt) { return Pattern({ type: "WithStatement", object: obj, body: stmt }) }
64
+ function whileStmt(test, stmt) { return Pattern({ type: "WhileStatement", test: test, body: stmt }) }
65
+ function doStmt(stmt, test) { return Pattern({ type: "DoWhileStatement", test: test, body: stmt }) }
66
+ function switchStmt(disc, cases) { return Pattern({ type: "SwitchStatement", discriminant: disc, cases: cases }) }
67
+ function caseClause(test, stmts) { return Pattern({ type: "SwitchCase", test: test, consequent: stmts }) }
68
+ function defaultClause(stmts) { return Pattern({ type: "SwitchCase", test: null, consequent: stmts }) }
69
+ function catchClause(id, guard, body) { if (guard) { return Pattern({ type: "GuardedCatchClause", param: id, guard: guard, body: body }) } else { return Pattern({ type: "CatchClause", param: id, body: body }) } }
70
+ function tryStmt(body, guarded, catches, fin) { return Pattern({ type: "TryStatement", block: body, guardedHandlers: guarded, handlers: catches, finalizer: fin }) }
71
+ function letStmt(head, body) { return Pattern({ type: "LetStatement", head: head, body: body }) }
72
+ function funExpr(id, args, body, gen) { return Pattern({ type: "FunctionExpression",
73
+ id: id,
74
+ params: args,
75
+ defaults: [],
76
+ body: body,
77
+ rest: null,
78
+ generator: false,
79
+ expression: false
80
+ }) }
81
+ function genFunExpr(id, args, body) { return Pattern({ type: "FunctionExpression",
82
+ id: id,
83
+ params: args,
84
+ defaults: [],
85
+ body: body,
86
+ rest: null,
87
+ generator: false,
88
+ expression: false
89
+ }) }
90
+
91
+ function unExpr(op, arg) { return Pattern({ type: "UnaryExpression", operator: op, argument: arg, prefix: true }) }
92
+ function binExpr(op, left, right) { return Pattern({ type: "BinaryExpression", operator: op, left: left, right: right }) }
93
+ function aExpr(op, left, right) { return Pattern({ type: "AssignmentExpression", operator: op, left: left, right: right }) }
94
+ function updExpr(op, arg, prefix) { return Pattern({ type: "UpdateExpression", operator: op, argument: arg, prefix: prefix }) }
95
+ function logExpr(op, left, right) { return Pattern({ type: "LogicalExpression", operator: op, left: left, right: right }) }
96
+
97
+ function condExpr(test, cons, alt) { return Pattern({ type: "ConditionalExpression", test: test, consequent: cons, alternate: alt }) }
98
+ function seqExpr(exprs) { return Pattern({ type: "SequenceExpression", expressions: exprs }) }
99
+ function newExpr(callee, args) { return Pattern({ type: "NewExpression", callee: callee, arguments: args }) }
100
+ function callExpr(callee, args) { return Pattern({ type: "CallExpression", callee: callee, arguments: args }) }
101
+ function arrExpr(elts) { return Pattern({ type: "ArrayExpression", elements: elts }) }
102
+ function objExpr(elts) { return Pattern({ type: "ObjectExpression", properties: elts }) }
103
+ function objProp(key, value, kind) { return Pattern({ type: "Property", key: key, value: value, kind: kind }) }
104
+
105
+ function arrPatt(elts) { return Pattern({ type: "ArrayPattern", elements: elts }) }
106
+ function objPatt(elts) { return Pattern({ type: "ObjectPattern", properties: elts }) }
107
+
108
+ function localSrc(src) { return "(function(){ " + src + " })" }
109
+ function localPatt(patt) { return program([exprStmt(funExpr(null, [], blockStmt([patt])))]) }
110
+ function blockSrc(src) { return "(function(){ { " + src + " } })" }
111
+ function blockPatt(patt) { return program([exprStmt(funExpr(null, [], blockStmt([blockStmt([patt])])))]) }
112
+
113
+ function assertBlockStmt(src, patt) {
114
+ blockPatt(patt).assert(Reflect.parse(blockSrc(src)));
115
+ }
116
+
117
+ function assertBlockExpr(src, patt) {
118
+ assertBlockStmt(src, exprStmt(patt));
119
+ }
120
+
121
+ function assertBlockDecl(src, patt, builder) {
122
+ blockPatt(patt).assert(Reflect.parse(blockSrc(src), {builder: builder}));
123
+ }
124
+
125
+ function assertLocalStmt(src, patt) {
126
+ localPatt(patt).assert(Reflect.parse(localSrc(src)));
127
+ }
128
+
129
+ function assertLocalExpr(src, patt) {
130
+ assertLocalStmt(src, exprStmt(patt));
131
+ }
132
+
133
+ function assertLocalDecl(src, patt) {
134
+ localPatt(patt).assert(Reflect.parse(localSrc(src)));
135
+ }
136
+
137
+ function assertGlobalStmt(src, patt, builder) {
138
+ program([patt]).assert(Reflect.parse(src, {builder: builder}));
139
+ }
140
+
141
+ function assertGlobalExpr(src, patt, builder) {
142
+ program([exprStmt(patt)]).assert(Reflect.parse(src, {builder: builder}));
143
+ //assertStmt(src, exprStmt(patt));
144
+ }
145
+
146
+ function assertGlobalDecl(src, patt) {
147
+ program([patt]).assert(Reflect.parse(src));
148
+ }
149
+
150
+ function assertProg(src, patt) {
151
+ program(patt).assert(Reflect.parse(src));
152
+ }
153
+
154
+ function assertStmt(src, patt) {
155
+ assertLocalStmt(src, patt);
156
+ assertGlobalStmt(src, patt);
157
+ assertBlockStmt(src, patt);
158
+ }
159
+
160
+ function assertExpr(src, patt) {
161
+ assertLocalExpr(src, patt);
162
+ assertGlobalExpr(src, patt);
163
+ assertBlockExpr(src, patt);
164
+ }
165
+
166
+ function assertDecl(src, patt) {
167
+ assertLocalDecl(src, patt);
168
+ assertGlobalDecl(src, patt);
169
+ assertBlockDecl(src, patt);
170
+ }
171
+
172
+ function assertError(src, errorType) {
173
+ try {
174
+ Reflect.parse(src);
175
+ } catch (e) {
176
+ return;
177
+ }
178
+ throw new Error("expected " + errorType.name + " for " + uneval(src));
179
+ }
180
+
181
+
182
+ // general tests
183
+
184
+ // NB: These are useful but for now jit-test doesn't do I/O reliably.
185
+
186
+ //program(_).assert(Reflect.parse(snarf('data/flapjax.txt')));
187
+ //program(_).assert(Reflect.parse(snarf('data/jquery-1.4.2.txt')));
188
+ //program(_).assert(Reflect.parse(snarf('data/prototype.js')));
189
+ //program(_).assert(Reflect.parse(snarf('data/dojo.js.uncompressed.js')));
190
+ //program(_).assert(Reflect.parse(snarf('data/mootools-1.2.4-core-nc.js')));
191
+
192
+
193
+ // declarations
194
+
195
+ assertDecl("var x = 1, y = 2, z = 3",
196
+ varDecl([declarator(ident("x"), lit(1)),
197
+ declarator(ident("y"), lit(2)),
198
+ declarator(ident("z"), lit(3))]));
199
+ assertDecl("var x, y, z",
200
+ varDecl([declarator(ident("x"), null),
201
+ declarator(ident("y"), null),
202
+ declarator(ident("z"), null)]));
203
+ assertDecl("function foo() { }",
204
+ funDecl(ident("foo"), [], blockStmt([])));
205
+ assertDecl("function foo() { return 42 }",
206
+ funDecl(ident("foo"), [], blockStmt([returnStmt(lit(42))])));
207
+
208
+
209
+ // Bug 591437: rebound args have their defs turned into uses
210
+ assertDecl("function f(a) { function a() { } }",
211
+ funDecl(ident("f"), [ident("a")], blockStmt([funDecl(ident("a"), [], blockStmt([]))])));
212
+ assertDecl("function f(a,b,c) { function b() { } }",
213
+ funDecl(ident("f"), [ident("a"),ident("b"),ident("c")], blockStmt([funDecl(ident("b"), [], blockStmt([]))])));
214
+
215
+ // expressions
216
+
217
+ assertExpr("true", lit(true));
218
+ assertExpr("false", lit(false));
219
+ assertExpr("42", lit(42));
220
+ assertExpr("(/asdf/)", lit(/asdf/));
221
+ assertExpr("this", thisExpr);
222
+ assertExpr("foo", ident("foo"));
223
+ assertExpr("foo.bar", dotExpr(ident("foo"), ident("bar")));
224
+ assertExpr("foo[bar]", memExpr(ident("foo"), ident("bar")));
225
+ assertExpr("(function(){})", funExpr(null, [], blockStmt([])));
226
+ assertExpr("(function f() {})", funExpr(ident("f"), [], blockStmt([])));
227
+ assertExpr("(function f(x,y,z) {})", funExpr(ident("f"), [ident("x"),ident("y"),ident("z")], blockStmt([])));
228
+ assertExpr("(++x)", updExpr("++", ident("x"), true));
229
+ assertExpr("(x++)", updExpr("++", ident("x"), false));
230
+ assertExpr("(+x)", unExpr("+", ident("x")));
231
+ assertExpr("(-x)", unExpr("-", ident("x")));
232
+ assertExpr("(!x)", unExpr("!", ident("x")));
233
+ assertExpr("(~x)", unExpr("~", ident("x")));
234
+ assertExpr("(delete x)", unExpr("delete", ident("x")));
235
+ assertExpr("(typeof x)", unExpr("typeof", ident("x")));
236
+ assertExpr("(void x)", unExpr("void", ident("x")));
237
+ assertExpr("(x == y)", binExpr("==", ident("x"), ident("y")));
238
+ assertExpr("(x != y)", binExpr("!=", ident("x"), ident("y")));
239
+ assertExpr("(x === y)", binExpr("===", ident("x"), ident("y")));
240
+ assertExpr("(x !== y)", binExpr("!==", ident("x"), ident("y")));
241
+ assertExpr("(x < y)", binExpr("<", ident("x"), ident("y")));
242
+ assertExpr("(x <= y)", binExpr("<=", ident("x"), ident("y")));
243
+ assertExpr("(x > y)", binExpr(">", ident("x"), ident("y")));
244
+ assertExpr("(x >= y)", binExpr(">=", ident("x"), ident("y")));
245
+ assertExpr("(x << y)", binExpr("<<", ident("x"), ident("y")));
246
+ assertExpr("(x >> y)", binExpr(">>", ident("x"), ident("y")));
247
+ assertExpr("(x >>> y)", binExpr(">>>", ident("x"), ident("y")));
248
+ assertExpr("(x + y)", binExpr("+", ident("x"), ident("y")));
249
+ assertExpr("(w + x + y + z)", binExpr("+", binExpr("+", binExpr("+", ident("w"), ident("x")), ident("y")), ident("z")));
250
+ assertExpr("(x - y)", binExpr("-", ident("x"), ident("y")));
251
+ assertExpr("(w - x - y - z)", binExpr("-", binExpr("-", binExpr("-", ident("w"), ident("x")), ident("y")), ident("z")));
252
+ assertExpr("(x * y)", binExpr("*", ident("x"), ident("y")));
253
+ assertExpr("(x / y)", binExpr("/", ident("x"), ident("y")));
254
+ assertExpr("(x % y)", binExpr("%", ident("x"), ident("y")));
255
+ assertExpr("(x | y)", binExpr("|", ident("x"), ident("y")));
256
+ assertExpr("(x ^ y)", binExpr("^", ident("x"), ident("y")));
257
+ assertExpr("(x & y)", binExpr("&", ident("x"), ident("y")));
258
+ assertExpr("(x in y)", binExpr("in", ident("x"), ident("y")));
259
+ assertExpr("(x instanceof y)", binExpr("instanceof", ident("x"), ident("y")));
260
+ assertExpr("(x = y)", aExpr("=", ident("x"), ident("y")));
261
+ assertExpr("(x += y)", aExpr("+=", ident("x"), ident("y")));
262
+ assertExpr("(x -= y)", aExpr("-=", ident("x"), ident("y")));
263
+ assertExpr("(x *= y)", aExpr("*=", ident("x"), ident("y")));
264
+ assertExpr("(x /= y)", aExpr("/=", ident("x"), ident("y")));
265
+ assertExpr("(x %= y)", aExpr("%=", ident("x"), ident("y")));
266
+ assertExpr("(x <<= y)", aExpr("<<=", ident("x"), ident("y")));
267
+ assertExpr("(x >>= y)", aExpr(">>=", ident("x"), ident("y")));
268
+ assertExpr("(x >>>= y)", aExpr(">>>=", ident("x"), ident("y")));
269
+ assertExpr("(x |= y)", aExpr("|=", ident("x"), ident("y")));
270
+ assertExpr("(x ^= y)", aExpr("^=", ident("x"), ident("y")));
271
+ assertExpr("(x &= y)", aExpr("&=", ident("x"), ident("y")));
272
+ assertExpr("(x || y)", logExpr("||", ident("x"), ident("y")));
273
+ assertExpr("(x && y)", logExpr("&&", ident("x"), ident("y")));
274
+ assertExpr("(w || x || y || z)", logExpr("||", logExpr("||", logExpr("||", ident("w"), ident("x")), ident("y")), ident("z")))
275
+ assertExpr("(x ? y : z)", condExpr(ident("x"), ident("y"), ident("z")));
276
+ assertExpr("(x,y)", seqExpr([ident("x"),ident("y")]))
277
+ assertExpr("(x,y,z)", seqExpr([ident("x"),ident("y"),ident("z")]))
278
+ assertExpr("(a,b,c,d,e,f,g)", seqExpr([ident("a"),ident("b"),ident("c"),ident("d"),ident("e"),ident("f"),ident("g")]));
279
+ assertExpr("(new Object)", newExpr(ident("Object"), []));
280
+ assertExpr("(new Object())", newExpr(ident("Object"), []));
281
+ assertExpr("(new Object(42))", newExpr(ident("Object"), [lit(42)]));
282
+ assertExpr("(new Object(1,2,3))", newExpr(ident("Object"), [lit(1),lit(2),lit(3)]));
283
+ assertExpr("(String())", callExpr(ident("String"), []));
284
+ assertExpr("(String(42))", callExpr(ident("String"), [lit(42)]));
285
+ assertExpr("(String(1,2,3))", callExpr(ident("String"), [lit(1),lit(2),lit(3)]));
286
+ assertExpr("[]", arrExpr([]));
287
+ assertExpr("[1]", arrExpr([lit(1)]));
288
+ assertExpr("[1,2]", arrExpr([lit(1),lit(2)]));
289
+ assertExpr("[1,2,3]", arrExpr([lit(1),lit(2),lit(3)]));
290
+ assertExpr("[1,,2,3]", arrExpr([lit(1),,lit(2),lit(3)]));
291
+ assertExpr("[1,,,2,3]", arrExpr([lit(1),,,lit(2),lit(3)]));
292
+ assertExpr("[1,,,2,,3]", arrExpr([lit(1),,,lit(2),,lit(3)]));
293
+ assertExpr("[1,,,2,,,3]", arrExpr([lit(1),,,lit(2),,,lit(3)]));
294
+ assertExpr("[,1,2,3]", arrExpr([,lit(1),lit(2),lit(3)]));
295
+ assertExpr("[,,1,2,3]", arrExpr([,,lit(1),lit(2),lit(3)]));
296
+ assertExpr("[,,,1,2,3]", arrExpr([,,,lit(1),lit(2),lit(3)]));
297
+ assertExpr("[,,,1,2,3,]", arrExpr([,,,lit(1),lit(2),lit(3)]));
298
+ assertExpr("[,,,1,2,3,,]", arrExpr([,,,lit(1),lit(2),lit(3),undefined]));
299
+ assertExpr("[,,,1,2,3,,,]", arrExpr([,,,lit(1),lit(2),lit(3),undefined,undefined]));
300
+ assertExpr("[,,,,,]", arrExpr([undefined,undefined,undefined,undefined,undefined]));
301
+ assertExpr("({})", objExpr([]));
302
+ assertExpr("({x:1})", objExpr([objProp(ident("x"), lit(1), "init")]));
303
+ assertExpr("({x:1, y:2})", objExpr([objProp(ident("x"), lit(1), "init"),
304
+ objProp(ident("y"), lit(2), "init")]));
305
+ assertExpr("({x:1, y:2, z:3})", objExpr([objProp(ident("x"), lit(1), "init"),
306
+ objProp(ident("y"), lit(2), "init"),
307
+ objProp(ident("z"), lit(3), "init") ]));
308
+ assertExpr("({x:1, 'y':2, z:3})", objExpr([objProp(ident("x"), lit(1), "init"),
309
+ objProp(lit("y"), lit(2), "init"),
310
+ objProp(ident("z"), lit(3), "init") ]));
311
+ assertExpr("({'x':1, 'y':2, z:3})", objExpr([objProp(lit("x"), lit(1), "init"),
312
+ objProp(lit("y"), lit(2), "init"),
313
+ objProp(ident("z"), lit(3), "init") ]));
314
+ assertExpr("({'x':1, 'y':2, 3:3})", objExpr([objProp(lit("x"), lit(1), "init"),
315
+ objProp(lit("y"), lit(2), "init"),
316
+ objProp(lit(3), lit(3), "init") ]));
317
+
318
+ // Bug 571617: eliminate constant-folding
319
+ assertExpr("2 + 3", binExpr("+", lit(2), lit(3)));
320
+
321
+ // Bug 632026: constant-folding
322
+ assertExpr("typeof(0?0:a)", unExpr("typeof", condExpr(lit(0), lit(0), ident("a"))));
323
+
324
+ // Bug 632056: constant-folding
325
+ program([exprStmt(ident("f")),
326
+ ifStmt(lit(1),
327
+ funDecl(ident("f"), [], blockStmt([])),
328
+ null)]).assert(Reflect.parse("f; if (1) function f(){}"));
329
+
330
+ // statements
331
+
332
+ assertStmt("throw 42", throwStmt(lit(42)));
333
+ assertStmt("for (;;) break", forStmt(null, null, null, breakStmt(null)));
334
+ assertStmt("for (x; y; z) break", forStmt(ident("x"), ident("y"), ident("z"), breakStmt(null)));
335
+ assertStmt("for (var x; y; z) break", forStmt(varDecl([declarator(ident("x"), null)]), ident("y"), ident("z"), breakStmt(null)));
336
+ assertStmt("for (var x = 42; y; z) break", forStmt(varDecl([declarator(ident("x"), lit(42))]), ident("y"), ident("z"), breakStmt(null)));
337
+ assertStmt("for (x; ; z) break", forStmt(ident("x"), null, ident("z"), breakStmt(null)));
338
+ assertStmt("for (var x; ; z) break", forStmt(varDecl([declarator(ident("x"), null)]), null, ident("z"), breakStmt(null)));
339
+ assertStmt("for (var x = 42; ; z) break", forStmt(varDecl([declarator(ident("x"), lit(42))]), null, ident("z"), breakStmt(null)));
340
+ assertStmt("for (x; y; ) break", forStmt(ident("x"), ident("y"), null, breakStmt(null)));
341
+ assertStmt("for (var x; y; ) break", forStmt(varDecl([declarator(ident("x"), null)]), ident("y"), null, breakStmt(null)));
342
+ assertStmt("for (var x = 42; y; ) break", forStmt(varDecl([declarator(ident("x"),lit(42))]), ident("y"), null, breakStmt(null)));
343
+ assertStmt("for (var x in y) break", forInStmt(varDecl([declarator(ident("x"),null)]), ident("y"), breakStmt(null)));
344
+ assertStmt("for (x in y) break", forInStmt(ident("x"), ident("y"), breakStmt(null)));
345
+ assertStmt("{ }", blockStmt([]));
346
+ assertStmt("{ throw 1; throw 2; throw 3; }", blockStmt([ throwStmt(lit(1)), throwStmt(lit(2)), throwStmt(lit(3))]));
347
+ assertStmt(";", emptyStmt);
348
+ assertStmt("if (foo) throw 42;", ifStmt(ident("foo"), throwStmt(lit(42)), null));
349
+ assertStmt("if (foo) throw 42; else true;", ifStmt(ident("foo"), throwStmt(lit(42)), exprStmt(lit(true))));
350
+ assertStmt("if (foo) { throw 1; throw 2; throw 3; }",
351
+ ifStmt(ident("foo"),
352
+ blockStmt([throwStmt(lit(1)), throwStmt(lit(2)), throwStmt(lit(3))]),
353
+ null));
354
+ assertStmt("if (foo) { throw 1; throw 2; throw 3; } else true;",
355
+ ifStmt(ident("foo"),
356
+ blockStmt([throwStmt(lit(1)), throwStmt(lit(2)), throwStmt(lit(3))]),
357
+ exprStmt(lit(true))));
358
+ assertStmt("foo: for(;;) break foo;", labStmt(ident("foo"), forStmt(null, null, null, breakStmt(ident("foo")))));
359
+ assertStmt("foo: for(;;) continue foo;", labStmt(ident("foo"), forStmt(null, null, null, continueStmt(ident("foo")))));
360
+ assertStmt("with (obj) { }", withStmt(ident("obj"), blockStmt([])));
361
+ assertStmt("with (obj) { obj; }", withStmt(ident("obj"), blockStmt([exprStmt(ident("obj"))])));
362
+ assertStmt("while (foo) { }", whileStmt(ident("foo"), blockStmt([])));
363
+ assertStmt("while (foo) { foo; }", whileStmt(ident("foo"), blockStmt([exprStmt(ident("foo"))])));
364
+ assertStmt("do { } while (foo);", doStmt(blockStmt([]), ident("foo")));
365
+ assertStmt("do { foo; } while (foo)", doStmt(blockStmt([exprStmt(ident("foo"))]), ident("foo")));
366
+ assertStmt("switch (foo) { case 1: 1; break; case 2: 2; break; default: 3; }",
367
+ switchStmt(ident("foo"),
368
+ [ caseClause(lit(1), [ exprStmt(lit(1)), breakStmt(null) ]),
369
+ caseClause(lit(2), [ exprStmt(lit(2)), breakStmt(null) ]),
370
+ defaultClause([ exprStmt(lit(3)) ]) ]));
371
+ assertStmt("switch (foo) { case 1: 1; break; case 2: 2; break; default: 3; case 42: 42; }",
372
+ switchStmt(ident("foo"),
373
+ [ caseClause(lit(1), [ exprStmt(lit(1)), breakStmt(null) ]),
374
+ caseClause(lit(2), [ exprStmt(lit(2)), breakStmt(null) ]),
375
+ defaultClause([ exprStmt(lit(3)) ]),
376
+ caseClause(lit(42), [ exprStmt(lit(42)) ]) ]));
377
+ assertStmt("try { } catch (e) { }",
378
+ tryStmt(blockStmt([]),
379
+ [],
380
+ [ catchClause(ident("e"), null, blockStmt([])) ],
381
+ null));
382
+ assertStmt("try { } catch (e) { } finally { }",
383
+ tryStmt(blockStmt([]),
384
+ [],
385
+ [ catchClause(ident("e"), null, blockStmt([])) ],
386
+ blockStmt([])));
387
+ assertStmt("try { } finally { }",
388
+ tryStmt(blockStmt([]),
389
+ [],
390
+ [],
391
+ blockStmt([])));
392
+
393
+ // redeclarations (TOK_NAME nodes with lexdef)
394
+
395
+ assertStmt("function f() { function g() { } function g() { } }",
396
+ funDecl(ident("f"), [], blockStmt([funDecl(ident("g"), [], blockStmt([])),
397
+ funDecl(ident("g"), [], blockStmt([]))])));
398
+
399
+ assertStmt("function f() { function g() { } function g() { return 42 } }",
400
+ funDecl(ident("f"), [], blockStmt([funDecl(ident("g"), [], blockStmt([])),
401
+ funDecl(ident("g"), [], blockStmt([returnStmt(lit(42))]))])));
402
+
403
+ assertStmt("function f() { var x = 42; var x = 43; }",
404
+ funDecl(ident("f"), [], blockStmt([varDecl([declarator(ident("x"),lit(42))]),
405
+ varDecl([declarator(ident("x"),lit(43))])])));
406
+
407
+ // getters and setters
408
+
409
+ assertExpr("({ get x() { return 42 } })",
410
+ objExpr([ objProp(ident("x"),
411
+ funExpr(null, [], blockStmt([returnStmt(lit(42))])),
412
+ "get" ) ]));
413
+ assertExpr("({ set x(v) { return 42 } })",
414
+ objExpr([ objProp(ident("x"),
415
+ funExpr(null, [ident("v")], blockStmt([returnStmt(lit(42))])),
416
+ "set" ) ]));
417
+
418
+ }
419
+
420
+ exports.testReflect = testReflect;
421
+
422
+ }(typeof exports === 'undefined' ? this : exports));