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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +11 -1
- data/lib/opal/cli.rb +9 -1
- data/lib/opal/cli_options.rb +12 -3
- data/lib/opal/cli_runners/nodejs.rb +3 -2
- data/lib/opal/version.rb +1 -1
- data/opal/corelib/kernel.rb +7 -0
- data/opal/corelib/runtime.js +4 -0
- data/spec/lib/cli_spec.rb +16 -0
- data/stdlib/nodejs.rb +1 -2
- data/stdlib/nodejs/{process.rb → kernel.rb} +7 -4
- data/stdlib/nodejs/node_modules/.bin/js-yaml +140 -0
- data/stdlib/nodejs/node_modules/glob/LICENSE +15 -0
- data/stdlib/nodejs/node_modules/glob/README.md +357 -0
- data/stdlib/nodejs/node_modules/glob/common.js +177 -0
- data/stdlib/nodejs/node_modules/glob/glob.js +649 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/inflight/.eslintrc +17 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/inflight/LICENSE +15 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/inflight/README.md +37 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/inflight/inflight.js +44 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/inflight/node_modules/wrappy/LICENSE +15 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/inflight/node_modules/wrappy/README.md +36 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/inflight/node_modules/wrappy/package.json +52 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/inflight/node_modules/wrappy/test/basic.js +51 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/inflight/node_modules/wrappy/wrappy.js +33 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/inflight/package.json +61 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/inflight/test.js +97 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/inherits/LICENSE +16 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/inherits/README.md +42 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/inherits/inherits.js +1 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/inherits/inherits_browser.js +23 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/inherits/package.json +51 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/inherits/test.js +25 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/.npmignore +1 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/.travis.yml +4 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/LICENSE +23 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/README.md +216 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/benchmark.js +15 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/browser.js +1181 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/minimatch.js +845 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/.npmignore +2 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/.travis.yml +3 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/README.md +121 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/example.js +8 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/index.js +191 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/.npmignore +2 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/.travis.yml +4 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/Makefile +6 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/README.md +80 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/example.js +5 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/index.js +38 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/package.json +73 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/test/balanced.js +56 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/.travis.yml +4 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/LICENSE +18 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/README.markdown +62 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/example/map.js +6 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/index.js +13 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/package.json +83 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/test/map.js +39 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/package.json +75 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/bash-comparison.js +32 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/bash-results.txt +1075 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/cases.txt +182 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/dollar.js +9 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/empty-option.js +10 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/generate.sh +24 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/negative-increment.js +15 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/nested.js +16 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/order.js +10 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/pad.js +13 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/same-type.js +7 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/sequence.js +50 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/package.json +60 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/test/basic.js +399 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/test/brace-expand.js +45 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/test/defaults.js +274 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/test/extglob-ending-with-state-char.js +8 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/once/LICENSE +27 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/once/README.md +51 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/once/node_modules/wrappy/LICENSE +15 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/once/node_modules/wrappy/README.md +36 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/once/node_modules/wrappy/package.json +52 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/once/node_modules/wrappy/test/basic.js +51 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/once/node_modules/wrappy/wrappy.js +33 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/once/once.js +21 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/once/package.json +60 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/once/test/once.js +23 -0
- data/stdlib/nodejs/node_modules/glob/package.json +72 -0
- data/stdlib/nodejs/node_modules/glob/sync.js +409 -0
- data/stdlib/nodejs/node_modules/js-yaml/HISTORY.md +277 -0
- data/stdlib/nodejs/node_modules/js-yaml/LICENSE +21 -0
- data/stdlib/nodejs/node_modules/js-yaml/README.md +288 -0
- data/stdlib/nodejs/node_modules/js-yaml/bin/js-yaml.js +140 -0
- data/stdlib/nodejs/node_modules/js-yaml/bower.json +23 -0
- data/stdlib/nodejs/node_modules/js-yaml/dist/js-yaml.js +3666 -0
- data/stdlib/nodejs/node_modules/js-yaml/dist/js-yaml.min.js +3 -0
- data/stdlib/nodejs/node_modules/js-yaml/examples/custom_types.js +102 -0
- data/stdlib/nodejs/node_modules/js-yaml/examples/custom_types.yml +18 -0
- data/stdlib/nodejs/node_modules/js-yaml/examples/dumper.js +31 -0
- data/stdlib/nodejs/node_modules/js-yaml/examples/dumper.json +22 -0
- data/stdlib/nodejs/node_modules/js-yaml/examples/sample_document.js +18 -0
- data/stdlib/nodejs/node_modules/js-yaml/examples/sample_document.yml +197 -0
- data/stdlib/nodejs/node_modules/js-yaml/index.js +7 -0
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml.js +39 -0
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/common.js +62 -0
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/dumper.js +554 -0
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/exception.js +25 -0
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/loader.js +1581 -0
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/mark.js +78 -0
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema.js +103 -0
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/core.js +18 -0
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/default_full.js +25 -0
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/default_safe.js +28 -0
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/failsafe.js +17 -0
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/json.js +25 -0
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type.js +61 -0
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/binary.js +133 -0
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/bool.js +37 -0
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/float.js +110 -0
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/int.js +183 -0
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/js/function.js +85 -0
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/js/regexp.js +84 -0
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/js/undefined.js +27 -0
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/map.js +8 -0
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/merge.js +12 -0
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/null.js +36 -0
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/omap.js +56 -0
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/pairs.js +61 -0
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/seq.js +8 -0
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/set.js +33 -0
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/str.js +8 -0
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/timestamp.js +98 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/.bin/esparse +117 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/.bin/esvalidate +177 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/HISTORY.md +115 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/LICENSE +21 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/README.md +239 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/arguments.js +36 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/choice.js +22 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/constants.js +59 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/help.js +13 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/nargs.js +33 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/parents.js +28 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/prefix_chars.js +23 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/sub_commands.js +49 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/sum.js +35 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/testformatters.js +270 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/index.js +1 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action.js +146 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/append.js +55 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/append/constant.js +47 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/count.js +40 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/help.js +48 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/store.js +50 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/store/constant.js +43 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/store/false.js +27 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/store/true.js +26 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/subparsers.js +148 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/version.js +50 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action_container.js +481 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argparse.js +14 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argument/error.js +50 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argument/exclusive.js +54 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argument/group.js +75 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argument_parser.js +1168 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/const.js +18 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/help/added_formatters.js +88 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/help/formatter.js +798 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/namespace.js +77 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/.npmignore +2 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/.travis.yml +8 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/README.markdown +825 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/bower.json +33 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/component.json +11 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/foo.js +10 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/gulpfile.js +26 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/lib/underscore.string.js +673 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/libpeerconnection.log +0 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/package.json +107 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/LICENSE +23 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/README.md +22 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/package.json +69 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/underscore-min.js +6 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/underscore.js +1415 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/package.json +62 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/README.md +73 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/bin/esparse.js +117 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/bin/esvalidate.js +177 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/esprima.js +3908 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/package.json +69 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/compat.js +239 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/reflect.js +422 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/run.js +66 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/runner.js +387 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/test.js +20238 -0
- data/stdlib/nodejs/node_modules/js-yaml/package.json +83 -0
- data/{package.json → stdlib/nodejs/package.json} +0 -3
- data/stdlib/phantomjs.rb +1 -6
- data/tasks/testing.rake +1 -4
- metadata +191 -6
- 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));
|