opal 0.11.4 → 1.0.0.beta1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.codeclimate.yml +42 -10
- data/.rubocop.yml +398 -0
- data/.rubocop_todo.yml +44 -0
- data/.travis.yml +28 -34
- data/CHANGELOG.md +363 -142
- data/CONTRIBUTING.md +3 -5
- data/Gemfile +17 -12
- data/Guardfile +0 -1
- data/HACKING.md +1 -35
- data/LICENSE +2 -2
- data/README.md +42 -13
- data/Rakefile +1 -4
- data/UNRELEASED.md +133 -0
- data/benchmark-ips/README.md +6 -0
- data/benchmark-ips/bm_block_vs_yield.rb +21 -0
- data/benchmark-ips/bm_js_symbols_vs_strings.rb +28 -0
- data/benchmark-ips/bm_while_true_vs_loop.rb +19 -0
- data/bin/console +14 -0
- data/bin/opal +0 -1
- data/bin/opal-benchmark-ips +8 -0
- data/bin/opal-mspec +9 -1
- data/bin/opal-repl +2 -1
- data/bin/rake +7 -0
- data/bin/setup +8 -0
- data/docs/compiled_ruby.md +89 -8
- data/docs/compiler.md +3 -20
- data/docs/jquery.md +44 -11
- data/docs/promises.md +1 -1
- data/docs/rails.md +16 -12
- data/docs/sinatra.md +15 -8
- data/docs/using_sprockets.md +16 -11
- data/examples/rack/config.ru +1 -0
- data/examples/sinatra/Gemfile +1 -0
- data/examples/sinatra/config.ru +2 -11
- data/exe/opal-repl +3 -11
- data/lib/opal.rb +1 -0
- data/lib/opal/ast/builder.rb +4 -1
- data/lib/opal/ast/node.rb +1 -0
- data/lib/opal/builder.rb +84 -63
- data/lib/opal/builder_processors.rb +41 -56
- data/lib/opal/cli.rb +33 -49
- data/lib/opal/cli_options.rb +27 -17
- data/lib/opal/cli_runners.rb +73 -16
- data/lib/opal/cli_runners/applescript.rb +4 -4
- data/lib/opal/cli_runners/chrome.rb +29 -17
- data/lib/opal/cli_runners/nashorn.rb +5 -4
- data/lib/opal/cli_runners/nodejs.rb +8 -6
- data/lib/opal/cli_runners/server.rb +12 -11
- data/lib/opal/compiler.rb +85 -103
- data/lib/opal/config.rb +3 -3
- data/lib/opal/deprecations.rb +2 -1
- data/lib/opal/eof_content.rb +2 -2
- data/lib/opal/erb.rb +8 -7
- data/lib/opal/errors.rb +72 -1
- data/lib/opal/fragment.rb +23 -3
- data/lib/opal/hike.rb +305 -0
- data/lib/opal/nodes.rb +5 -10
- data/lib/opal/nodes/arglist.rb +7 -6
- data/lib/opal/nodes/args.rb +36 -0
- data/lib/opal/nodes/args/arg.rb +22 -0
- data/lib/opal/nodes/args/arity_check.rb +151 -0
- data/lib/opal/nodes/args/ensure_kwargs_are_kwargs.rb +28 -0
- data/lib/opal/nodes/args/extract_block_arg.rb +34 -0
- data/lib/opal/nodes/args/extract_kwarg.rb +32 -0
- data/lib/opal/nodes/args/extract_kwargs.rb +28 -0
- data/lib/opal/nodes/args/extract_kwoptarg.rb +35 -0
- data/lib/opal/nodes/args/extract_kwrestarg.rb +35 -0
- data/lib/opal/nodes/args/extract_optarg.rb +35 -0
- data/lib/opal/nodes/args/extract_post_arg.rb +28 -0
- data/lib/opal/nodes/args/extract_post_optarg.rb +41 -0
- data/lib/opal/nodes/args/extract_restarg.rb +40 -0
- data/lib/opal/nodes/args/fake_arg.rb +26 -0
- data/lib/opal/nodes/args/initialize_iterarg.rb +28 -0
- data/lib/opal/nodes/args/initialize_shadowarg.rb +24 -0
- data/lib/opal/nodes/args/parameters.rb +63 -0
- data/lib/opal/nodes/args/prepare_post_args.rb +22 -0
- data/lib/opal/nodes/array.rb +9 -8
- data/lib/opal/nodes/base.rb +20 -11
- data/lib/opal/nodes/call.rb +24 -25
- data/lib/opal/nodes/call_special.rb +4 -3
- data/lib/opal/nodes/case.rb +24 -26
- data/lib/opal/nodes/class.rb +4 -5
- data/lib/opal/nodes/constants.rb +8 -7
- data/lib/opal/nodes/csend.rb +2 -3
- data/lib/opal/nodes/def.rb +28 -74
- data/lib/opal/nodes/defined.rb +36 -36
- data/lib/opal/nodes/definitions.rb +10 -7
- data/lib/opal/nodes/defs.rb +8 -16
- data/lib/opal/nodes/hash.rb +5 -4
- data/lib/opal/nodes/helpers.rb +8 -8
- data/lib/opal/nodes/if.rb +10 -8
- data/lib/opal/nodes/iter.rb +16 -103
- data/lib/opal/nodes/lambda.rb +18 -0
- data/lib/opal/nodes/literal.rb +29 -63
- data/lib/opal/nodes/logic.rb +25 -24
- data/lib/opal/nodes/masgn.rb +8 -6
- data/lib/opal/nodes/module.rb +4 -4
- data/lib/opal/nodes/node_with_args.rb +14 -208
- data/lib/opal/nodes/rescue.rb +32 -32
- data/lib/opal/nodes/runtime_helpers.rb +5 -4
- data/lib/opal/nodes/scope.rb +18 -29
- data/lib/opal/nodes/singleton_class.rb +3 -3
- data/lib/opal/nodes/super.rb +12 -18
- data/lib/opal/nodes/top.rb +10 -8
- data/lib/opal/nodes/variables.rb +6 -6
- data/lib/opal/nodes/while.rb +7 -6
- data/lib/opal/nodes/x_string.rb +139 -0
- data/lib/opal/nodes/yield.rb +10 -7
- data/lib/opal/parser.rb +9 -46
- data/lib/opal/parser/default_config.rb +50 -0
- data/lib/opal/parser/patch.rb +26 -0
- data/lib/opal/parser/source_buffer.rb +11 -0
- data/lib/opal/parser/with_c_lexer.rb +14 -0
- data/lib/opal/parser/with_ruby_lexer.rb +6 -0
- data/lib/opal/path_reader.rb +6 -5
- data/lib/opal/paths.rb +9 -6
- data/lib/opal/regexp_anchors.rb +6 -5
- data/lib/opal/rewriter.rb +7 -0
- data/lib/opal/rewriters/arguments.rb +58 -0
- data/lib/opal/rewriters/base.rb +32 -12
- data/lib/opal/rewriters/binary_operator_assignment.rb +20 -20
- data/lib/opal/rewriters/block_to_iter.rb +2 -1
- data/lib/opal/rewriters/break_finder.rb +2 -0
- data/lib/opal/rewriters/dot_js_syntax.rb +3 -2
- data/lib/opal/rewriters/dump_args.rb +28 -0
- data/lib/opal/rewriters/explicit_writer_return.rb +4 -3
- data/lib/opal/rewriters/for_rewriter.rb +12 -12
- data/lib/opal/rewriters/hashes/key_duplicates_rewriter.rb +2 -1
- data/lib/opal/rewriters/inline_args.rb +220 -0
- data/lib/opal/rewriters/js_reserved_words.rb +21 -17
- data/lib/opal/rewriters/logical_operator_assignment.rb +24 -14
- data/lib/opal/rewriters/mlhs_args.rb +128 -0
- data/lib/opal/rewriters/opal_engine_check.rb +11 -6
- data/lib/opal/rewriters/rubyspec/filters_rewriter.rb +3 -2
- data/lib/opal/server.rb +1 -0
- data/lib/opal/simple_server.rb +15 -23
- data/lib/opal/source_map.rb +7 -70
- data/lib/opal/source_map/file.rb +199 -0
- data/lib/opal/source_map/index.rb +83 -0
- data/lib/opal/source_map/map.rb +26 -0
- data/lib/opal/source_map/vlq.rb +98 -0
- data/lib/opal/util.rb +7 -5
- data/lib/opal/version.rb +2 -1
- data/lib/tilt/opal.rb +3 -3
- data/opal.gemspec +18 -9
- data/opal/corelib/array.rb +135 -117
- data/opal/corelib/array/pack.rb +446 -0
- data/opal/corelib/basic_object.rb +23 -9
- data/opal/corelib/boolean.rb +3 -3
- data/opal/corelib/class.rb +4 -10
- data/opal/corelib/comparable.rb +36 -23
- data/opal/corelib/complex.rb +108 -14
- data/opal/corelib/constants.rb +4 -4
- data/opal/corelib/enumerable.rb +132 -135
- data/opal/corelib/enumerator.rb +47 -50
- data/opal/corelib/error.rb +65 -8
- data/opal/corelib/file.rb +37 -32
- data/opal/corelib/hash.rb +90 -21
- data/opal/corelib/helpers.rb +7 -6
- data/opal/corelib/kernel.rb +53 -586
- data/opal/corelib/kernel/format.rb +544 -0
- data/opal/corelib/marshal.rb +1 -13
- data/opal/corelib/marshal/read_buffer.rb +20 -23
- data/opal/corelib/marshal/write_buffer.rb +23 -15
- data/opal/corelib/math.rb +12 -16
- data/opal/corelib/method.rb +5 -3
- data/opal/corelib/module.rb +80 -109
- data/opal/corelib/nil.rb +2 -2
- data/opal/corelib/number.rb +177 -43
- data/opal/corelib/numeric.rb +22 -16
- data/opal/corelib/pack_unpack/format_string_parser.rb +135 -0
- data/opal/corelib/proc.rb +3 -4
- data/opal/corelib/process.rb +1 -1
- data/opal/corelib/random.rb +24 -16
- data/opal/corelib/random/MersenneTwister.js +137 -0
- data/opal/corelib/random/math_random.js.rb +9 -0
- data/opal/corelib/random/mersenne_twister.js.rb +13 -0
- data/opal/corelib/random/seedrandom.js.rb +12 -0
- data/opal/corelib/range.rb +25 -26
- data/opal/corelib/rational.rb +57 -17
- data/opal/corelib/regexp.rb +39 -43
- data/opal/corelib/runtime.js +806 -683
- data/opal/corelib/string.rb +213 -112
- data/opal/corelib/string/encoding.rb +14 -17
- data/opal/corelib/string/unpack.rb +793 -0
- data/opal/corelib/struct.rb +40 -24
- data/opal/corelib/time.rb +14 -15
- data/opal/corelib/unsupported.rb +26 -4
- data/opal/opal.rb +2 -1
- data/opal/opal/full.rb +2 -0
- data/stdlib/base64.rb +1 -1
- data/stdlib/bigdecimal.rb +11 -13
- data/stdlib/buffer.rb +9 -8
- data/stdlib/buffer/array.rb +46 -48
- data/stdlib/buffer/view.rb +85 -47
- data/stdlib/console.rb +18 -18
- data/stdlib/date.rb +85 -66
- data/stdlib/delegate.rb +2 -2
- data/stdlib/e2mmap.rb +176 -0
- data/stdlib/encoding.rb +1 -1
- data/stdlib/erb.rb +1 -1
- data/stdlib/forwardable.rb +14 -14
- data/stdlib/json.rb +1 -2
- data/stdlib/logger.rb +112 -0
- data/stdlib/math.rb +1 -1
- data/stdlib/matrix.rb +2169 -0
- data/stdlib/matrix/eigenvalue_decomposition.rb +883 -0
- data/stdlib/matrix/lup_decomposition.rb +219 -0
- data/stdlib/nashorn/file.rb +7 -9
- data/stdlib/native.rb +69 -63
- data/stdlib/nodejs.rb +3 -0
- data/stdlib/nodejs/dir.rb +25 -4
- data/stdlib/nodejs/env.rb +40 -0
- data/stdlib/nodejs/file.rb +184 -34
- data/stdlib/nodejs/fileutils.rb +4 -4
- data/stdlib/nodejs/io.rb +4 -46
- data/stdlib/nodejs/irb.rb +27 -29
- data/stdlib/nodejs/kernel.rb +2 -11
- data/stdlib/nodejs/node_modules/balanced-match/.npmignore +5 -0
- data/stdlib/nodejs/node_modules/balanced-match/LICENSE.md +21 -0
- data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match → balanced-match}/README.md +13 -2
- data/stdlib/nodejs/node_modules/balanced-match/index.js +59 -0
- data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match → balanced-match}/package.json +46 -42
- data/stdlib/nodejs/node_modules/brace-expansion/LICENSE +21 -0
- data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion → brace-expansion}/README.md +9 -1
- data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion → brace-expansion}/index.js +12 -2
- data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion → brace-expansion}/package.json +48 -48
- data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map → concat-map}/.travis.yml +0 -0
- data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map → concat-map}/LICENSE +0 -0
- data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map → concat-map}/README.markdown +0 -0
- data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map → concat-map}/example/map.js +0 -0
- data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map → concat-map}/index.js +0 -0
- data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map → concat-map}/package.json +47 -42
- data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map → concat-map}/test/map.js +0 -0
- data/stdlib/nodejs/node_modules/fs.realpath/LICENSE +43 -0
- data/stdlib/nodejs/node_modules/fs.realpath/README.md +33 -0
- data/stdlib/nodejs/node_modules/fs.realpath/index.js +66 -0
- data/stdlib/nodejs/node_modules/fs.realpath/old.js +303 -0
- data/stdlib/nodejs/node_modules/fs.realpath/package.json +59 -0
- data/stdlib/nodejs/node_modules/glob/README.md +57 -46
- data/stdlib/nodejs/node_modules/glob/changelog.md +67 -0
- data/stdlib/nodejs/node_modules/glob/common.js +91 -28
- data/stdlib/nodejs/node_modules/glob/glob.js +196 -55
- data/stdlib/nodejs/node_modules/glob/package.json +55 -51
- data/stdlib/nodejs/node_modules/glob/sync.js +116 -39
- data/stdlib/nodejs/node_modules/{glob/node_modules/inflight → inflight}/LICENSE +0 -0
- data/stdlib/nodejs/node_modules/{glob/node_modules/inflight → inflight}/README.md +0 -0
- data/stdlib/nodejs/node_modules/inflight/inflight.js +54 -0
- data/stdlib/nodejs/node_modules/inflight/package.json +58 -0
- data/stdlib/nodejs/node_modules/{glob/node_modules/inherits → inherits}/LICENSE +0 -0
- data/stdlib/nodejs/node_modules/{glob/node_modules/inherits → inherits}/README.md +0 -0
- data/stdlib/nodejs/node_modules/inherits/inherits.js +7 -0
- data/stdlib/nodejs/node_modules/{glob/node_modules/inherits → inherits}/inherits_browser.js +0 -0
- data/stdlib/nodejs/node_modules/inherits/package.json +61 -0
- data/stdlib/nodejs/node_modules/{glob/node_modules/inflight/node_modules/wrappy → minimatch}/LICENSE +0 -0
- data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch → minimatch}/README.md +2 -9
- data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch → minimatch}/minimatch.js +284 -206
- data/stdlib/nodejs/node_modules/minimatch/package.json +63 -0
- data/stdlib/nodejs/node_modules/{glob/node_modules/once/node_modules/wrappy → once}/LICENSE +0 -0
- data/stdlib/nodejs/node_modules/{glob/node_modules/once → once}/README.md +28 -0
- data/stdlib/nodejs/node_modules/once/once.js +42 -0
- data/stdlib/nodejs/node_modules/once/package.json +67 -0
- data/stdlib/nodejs/node_modules/path-is-absolute/index.js +20 -0
- data/stdlib/nodejs/node_modules/path-is-absolute/license +21 -0
- data/stdlib/nodejs/node_modules/path-is-absolute/package.json +75 -0
- data/stdlib/nodejs/node_modules/path-is-absolute/readme.md +59 -0
- data/stdlib/nodejs/node_modules/unxhr/LICENSE +22 -0
- data/stdlib/nodejs/node_modules/unxhr/README.md +41 -0
- data/stdlib/nodejs/node_modules/unxhr/lib/XMLHttpRequest.js +598 -0
- data/stdlib/nodejs/node_modules/unxhr/lib/browser.js +2 -0
- data/stdlib/nodejs/node_modules/unxhr/lib/request.js +63 -0
- data/stdlib/nodejs/node_modules/unxhr/package.json +75 -0
- data/stdlib/nodejs/node_modules/wrappy/LICENSE +15 -0
- data/stdlib/nodejs/node_modules/{glob/node_modules/inflight/node_modules/wrappy → wrappy}/README.md +0 -0
- data/stdlib/nodejs/node_modules/wrappy/package.json +59 -0
- data/stdlib/nodejs/node_modules/{glob/node_modules/inflight/node_modules/wrappy → wrappy}/wrappy.js +0 -0
- data/stdlib/nodejs/open-uri.rb +26 -0
- data/stdlib/nodejs/package-lock.json +88 -0
- data/stdlib/nodejs/package.json +2 -1
- data/stdlib/nodejs/pathname.rb +20 -0
- data/stdlib/nodejs/require.rb +3 -3
- data/stdlib/nodejs/stacktrace.rb +1 -1
- data/stdlib/nodejs/yaml.rb +1 -1
- data/stdlib/opal-builder.rb +1 -0
- data/stdlib/opal-parser.rb +4 -1
- data/stdlib/opal-platform.rb +8 -10
- data/stdlib/opal-source-maps.rb +0 -1
- data/stdlib/open-uri.rb +349 -0
- data/stdlib/ostruct.rb +19 -17
- data/stdlib/pathname.rb +22 -22
- data/stdlib/pp.rb +5 -5
- data/stdlib/promise.rb +30 -26
- data/stdlib/rbconfig/sizeof.rb +50 -0
- data/stdlib/securerandom.rb +1 -1
- data/stdlib/set.rb +21 -23
- data/stdlib/singleton.rb +3 -4
- data/stdlib/stringio.rb +33 -0
- data/stdlib/strscan.rb +55 -55
- data/stdlib/template.rb +1 -2
- data/stdlib/thread.rb +6 -7
- data/tasks/benchmarking.rake +1 -1
- data/tasks/building.rake +4 -12
- data/tasks/linting.rake +17 -2
- data/tasks/releasing.rake +84 -0
- data/tasks/testing.rake +57 -15
- data/tasks/testing/mspec_special_calls.rb +23 -4
- data/vendored-minitest/minitest.rb +1 -1
- metadata +169 -168
- data/bin/opal-build +0 -3
- data/exe/opal-mspec +0 -10
- data/lib/opal/nodes/args/initialize_kwargs.rb +0 -29
- data/lib/opal/nodes/args/kwarg.rb +0 -31
- data/lib/opal/nodes/args/kwoptarg.rb +0 -34
- data/lib/opal/nodes/args/kwrestarg.rb +0 -39
- data/lib/opal/nodes/args/mlhsarg.rb +0 -78
- data/lib/opal/nodes/args/normarg.rb +0 -29
- data/lib/opal/nodes/args/optarg.rb +0 -25
- data/lib/opal/nodes/args/post_args.rb +0 -201
- data/lib/opal/nodes/args/post_kwargs.rb +0 -32
- data/lib/opal/nodes/args/restarg.rb +0 -38
- data/lib/opal/nodes/inline_args.rb +0 -60
- data/opal/corelib/string/inheritance.rb +0 -123
- data/stdlib/nodejs/node_modules/glob/node_modules/inflight/.eslintrc +0 -17
- data/stdlib/nodejs/node_modules/glob/node_modules/inflight/inflight.js +0 -44
- data/stdlib/nodejs/node_modules/glob/node_modules/inflight/node_modules/wrappy/package.json +0 -52
- data/stdlib/nodejs/node_modules/glob/node_modules/inflight/node_modules/wrappy/test/basic.js +0 -51
- data/stdlib/nodejs/node_modules/glob/node_modules/inflight/package.json +0 -61
- data/stdlib/nodejs/node_modules/glob/node_modules/inflight/test.js +0 -97
- data/stdlib/nodejs/node_modules/glob/node_modules/inherits/inherits.js +0 -1
- data/stdlib/nodejs/node_modules/glob/node_modules/inherits/package.json +0 -51
- data/stdlib/nodejs/node_modules/glob/node_modules/inherits/test.js +0 -25
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/.npmignore +0 -1
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/.travis.yml +0 -4
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/LICENSE +0 -23
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/benchmark.js +0 -15
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/browser.js +0 -1181
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/.npmignore +0 -2
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/.travis.yml +0 -3
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/example.js +0 -8
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/.npmignore +0 -2
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/.travis.yml +0 -4
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/Makefile +0 -6
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/example.js +0 -5
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/index.js +0 -38
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/test/balanced.js +0 -56
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/bash-comparison.js +0 -32
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/bash-results.txt +0 -1075
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/cases.txt +0 -182
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/dollar.js +0 -9
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/empty-option.js +0 -10
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/generate.sh +0 -24
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/negative-increment.js +0 -15
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/nested.js +0 -16
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/order.js +0 -10
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/pad.js +0 -13
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/same-type.js +0 -7
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/sequence.js +0 -50
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/package.json +0 -60
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/test/basic.js +0 -399
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/test/brace-expand.js +0 -45
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/test/defaults.js +0 -274
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/test/extglob-ending-with-state-char.js +0 -8
- data/stdlib/nodejs/node_modules/glob/node_modules/once/LICENSE +0 -27
- data/stdlib/nodejs/node_modules/glob/node_modules/once/node_modules/wrappy/README.md +0 -36
- data/stdlib/nodejs/node_modules/glob/node_modules/once/node_modules/wrappy/package.json +0 -52
- data/stdlib/nodejs/node_modules/glob/node_modules/once/node_modules/wrappy/test/basic.js +0 -51
- data/stdlib/nodejs/node_modules/glob/node_modules/once/node_modules/wrappy/wrappy.js +0 -33
- data/stdlib/nodejs/node_modules/glob/node_modules/once/once.js +0 -21
- data/stdlib/nodejs/node_modules/glob/node_modules/once/package.json +0 -60
- data/stdlib/nodejs/node_modules/glob/node_modules/once/test/once.js +0 -23
- data/stdlib/nodejs/rubygems.rb +0 -68
- data/stdlib/source_map.rb +0 -5
- data/stdlib/source_map/map.rb +0 -220
- data/stdlib/source_map/mapping.rb +0 -26
- data/stdlib/source_map/offset.rb +0 -88
- data/stdlib/source_map/version.rb +0 -3
- data/stdlib/source_map/vlq.rb +0 -99
- data/stdlib/sourcemap.rb +0 -1
data/lib/opal/nodes/call.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require 'set'
|
3
4
|
require 'pathname'
|
4
5
|
require 'opal/nodes/base'
|
@@ -16,7 +17,7 @@ module Opal
|
|
16
17
|
|
17
18
|
# Operators that get optimized by compiler
|
18
19
|
OPERATORS = { :+ => :plus, :- => :minus, :* => :times, :/ => :divide,
|
19
|
-
:< => :lt, :<= => :le, :> => :gt, :>= => :ge }
|
20
|
+
:< => :lt, :<= => :le, :> => :gt, :>= => :ge }.freeze
|
20
21
|
|
21
22
|
def self.add_special(name, options = {}, &handler)
|
22
23
|
SPECIALS[name] = options
|
@@ -29,7 +30,7 @@ module Opal
|
|
29
30
|
|
30
31
|
*rest, last_arg = *args
|
31
32
|
|
32
|
-
if last_arg && [
|
33
|
+
if last_arg && %i[iter block_pass].include?(last_arg.type)
|
33
34
|
@iter = last_arg
|
34
35
|
args = rest
|
35
36
|
else
|
@@ -118,7 +119,7 @@ module Opal
|
|
118
119
|
end
|
119
120
|
|
120
121
|
def compile_arguments
|
121
|
-
push
|
122
|
+
push ', '
|
122
123
|
|
123
124
|
if splat?
|
124
125
|
push expr(arglist)
|
@@ -131,7 +132,7 @@ module Opal
|
|
131
132
|
|
132
133
|
def compile_block_pass
|
133
134
|
if iter
|
134
|
-
push
|
135
|
+
push ', ', expr(iter)
|
135
136
|
end
|
136
137
|
end
|
137
138
|
|
@@ -144,7 +145,7 @@ module Opal
|
|
144
145
|
end
|
145
146
|
|
146
147
|
def compile_simple_call_chain
|
147
|
-
push recv(receiver_sexp), method_jsid,
|
148
|
+
push recv(receiver_sexp), method_jsid, '(', expr(arglist), ')'
|
148
149
|
end
|
149
150
|
|
150
151
|
def splat?
|
@@ -175,7 +176,7 @@ module Opal
|
|
175
176
|
# a variable reference in irb mode in top scope might be a var ref,
|
176
177
|
# or it might be a method call
|
177
178
|
def using_irb?
|
178
|
-
@compiler.irb?
|
179
|
+
@compiler.irb? && scope.top? && arglist == s(:arglist) && recvr.nil? && iter.nil?
|
179
180
|
end
|
180
181
|
|
181
182
|
def sexp_with_arglist
|
@@ -189,10 +190,10 @@ module Opal
|
|
189
190
|
if SPECIALS.include? meth
|
190
191
|
method = method("handle_#{meth}")
|
191
192
|
method.arity == 1 ? method[compile_default] : method[]
|
192
|
-
elsif RuntimeHelpers.compatible?(recvr, meth
|
193
|
+
elsif RuntimeHelpers.compatible?(recvr, meth)
|
193
194
|
push(RuntimeHelpers.new(sexp_with_arglist, @level, @compiler).compile)
|
194
195
|
else
|
195
|
-
compile_default.call
|
196
|
+
yield # i.e. compile_default.call
|
196
197
|
end
|
197
198
|
end
|
198
199
|
|
@@ -205,9 +206,9 @@ module Opal
|
|
205
206
|
|
206
207
|
push fragment("$rb_#{name}(")
|
207
208
|
push lhs
|
208
|
-
push fragment(
|
209
|
+
push fragment(', ')
|
209
210
|
push rhs
|
210
|
-
push fragment(
|
211
|
+
push fragment(')')
|
211
212
|
else
|
212
213
|
compile_default.call
|
213
214
|
end
|
@@ -220,7 +221,7 @@ module Opal
|
|
220
221
|
compile_default.call
|
221
222
|
end
|
222
223
|
|
223
|
-
add_special :require_relative do
|
224
|
+
add_special :require_relative do
|
224
225
|
arg = arglist.children[0]
|
225
226
|
file = compiler.file
|
226
227
|
if arg.type == :str
|
@@ -255,11 +256,11 @@ module Opal
|
|
255
256
|
compile_default.call
|
256
257
|
end
|
257
258
|
|
258
|
-
add_special :block_given? do
|
259
|
+
add_special :block_given? do
|
259
260
|
push compiler.handle_block_given_call @sexp
|
260
261
|
end
|
261
262
|
|
262
|
-
add_special :__callee__ do
|
263
|
+
add_special :__callee__ do
|
263
264
|
if scope.def?
|
264
265
|
push fragment scope.mid.to_s.inspect
|
265
266
|
else
|
@@ -267,7 +268,7 @@ module Opal
|
|
267
268
|
end
|
268
269
|
end
|
269
270
|
|
270
|
-
add_special :__method__ do
|
271
|
+
add_special :__method__ do
|
271
272
|
if scope.def?
|
272
273
|
push fragment scope.mid.to_s.inspect
|
273
274
|
else
|
@@ -275,29 +276,29 @@ module Opal
|
|
275
276
|
end
|
276
277
|
end
|
277
278
|
|
278
|
-
add_special :debugger do
|
279
|
+
add_special :debugger do
|
279
280
|
push fragment 'debugger'
|
280
281
|
end
|
281
282
|
|
282
|
-
add_special :__OPAL_COMPILER_CONFIG__ do
|
283
|
+
add_special :__OPAL_COMPILER_CONFIG__ do
|
283
284
|
push fragment "Opal.hash({ arity_check: #{compiler.arity_check?} })"
|
284
285
|
end
|
285
286
|
|
286
287
|
add_special :nesting do |compile_default|
|
287
|
-
push_nesting = push_nesting?
|
288
|
+
push_nesting = push_nesting?
|
288
289
|
push '(Opal.Module.$$nesting = $nesting, ' if push_nesting
|
289
290
|
compile_default.call
|
290
291
|
push ')' if push_nesting
|
291
292
|
end
|
292
293
|
|
293
294
|
add_special :constants do |compile_default|
|
294
|
-
push_nesting = push_nesting?
|
295
|
+
push_nesting = push_nesting?
|
295
296
|
push '(Opal.Module.$$nesting = $nesting, ' if push_nesting
|
296
297
|
compile_default.call
|
297
298
|
push ')' if push_nesting
|
298
299
|
end
|
299
300
|
|
300
|
-
def push_nesting?
|
301
|
+
def push_nesting?
|
301
302
|
recv = children.first
|
302
303
|
|
303
304
|
children.size == 2 && ( # only receiver and method
|
@@ -328,7 +329,7 @@ module Opal
|
|
328
329
|
|
329
330
|
parts = args.map { |s| handle_part s }
|
330
331
|
|
331
|
-
if ::Opal::AST::Node
|
332
|
+
if recv.is_a?(::Opal::AST::Node) && recv.type == :const && recv.children.last == :File
|
332
333
|
if meth == :expand_path
|
333
334
|
return expand_path(*parts)
|
334
335
|
elsif meth == :join
|
@@ -339,7 +340,7 @@ module Opal
|
|
339
340
|
end
|
340
341
|
end
|
341
342
|
|
342
|
-
msg =
|
343
|
+
msg = 'Cannot handle dynamic require'
|
343
344
|
case @compiler.dynamic_require_severity
|
344
345
|
when :error
|
345
346
|
@compiler.error msg, @sexp.line
|
@@ -349,7 +350,7 @@ module Opal
|
|
349
350
|
end
|
350
351
|
|
351
352
|
def expand_path(path, base = '')
|
352
|
-
"#{base}/#{path}".split(
|
353
|
+
"#{base}/#{path}".split('/').each_with_object([]) do |part, p|
|
353
354
|
if part == ''
|
354
355
|
# we had '//', so ignore
|
355
356
|
elsif part == '..'
|
@@ -357,9 +358,7 @@ module Opal
|
|
357
358
|
else
|
358
359
|
p << part
|
359
360
|
end
|
360
|
-
|
361
|
-
p
|
362
|
-
end.join "/"
|
361
|
+
end.join '/'
|
363
362
|
end
|
364
363
|
end
|
365
364
|
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require 'opal/nodes/base'
|
3
4
|
require 'opal/nodes/call'
|
4
5
|
|
@@ -50,12 +51,12 @@ module Opal
|
|
50
51
|
end
|
51
52
|
|
52
53
|
def compile_using_send
|
53
|
-
push recv(receiver_sexp), method_jsid,
|
54
|
+
push recv(receiver_sexp), method_jsid, '.apply(null'
|
54
55
|
compile_arguments
|
55
56
|
if iter
|
56
|
-
push
|
57
|
+
push '.concat(', expr(iter), ')'
|
57
58
|
end
|
58
|
-
push
|
59
|
+
push ')'
|
59
60
|
end
|
60
61
|
end
|
61
62
|
|
data/lib/opal/nodes/case.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require 'opal/nodes/base'
|
3
4
|
|
4
5
|
module Opal
|
@@ -23,29 +24,28 @@ module Opal
|
|
23
24
|
case_stmt[:cond] = true
|
24
25
|
add_local '$case'
|
25
26
|
|
26
|
-
push
|
27
|
+
push '$case = ', expr(condition), ';'
|
27
28
|
end
|
28
29
|
|
29
30
|
case_parts.each_with_index do |wen, idx|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
end
|
31
|
+
next unless wen
|
32
|
+
line
|
33
|
+
case wen.type
|
34
|
+
when :when
|
35
|
+
wen = compiler.returns(wen) if needs_closure?
|
36
|
+
push 'else ' unless idx == 0
|
37
|
+
push stmt(wen)
|
38
|
+
else # s(:else)
|
39
|
+
handled_else = true
|
40
|
+
wen = compiler.returns(wen) if needs_closure?
|
41
|
+
push 'else {', stmt(wen), '}'
|
42
42
|
end
|
43
43
|
end
|
44
44
|
|
45
45
|
# if we are having a closure, we must return a usable value
|
46
|
-
if needs_closure?
|
46
|
+
if needs_closure? && !handled_else
|
47
47
|
line
|
48
|
-
push
|
48
|
+
push 'else { return nil }'
|
49
49
|
end
|
50
50
|
end
|
51
51
|
|
@@ -68,30 +68,28 @@ module Opal
|
|
68
68
|
children :whens, :body
|
69
69
|
|
70
70
|
def compile
|
71
|
-
push
|
71
|
+
push 'if ('
|
72
72
|
|
73
73
|
when_checks.each_with_index do |check, idx|
|
74
74
|
push ' || ' unless idx == 0
|
75
75
|
|
76
76
|
if check.type == :splat
|
77
|
-
push
|
77
|
+
push '(function($splt) { for (var i = 0, ii = $splt.length; i < ii; i++) {'
|
78
78
|
if case_stmt[:cond]
|
79
79
|
push "if ($splt[i]['$===']($case)) { return true; }"
|
80
80
|
else
|
81
|
-
push
|
81
|
+
push 'if (', js_truthy(check), ')) { return true; }'
|
82
82
|
end
|
83
|
-
push
|
83
|
+
push '} return false; })(', expr(check.children[0]), ')'
|
84
|
+
elsif case_stmt[:cond]
|
85
|
+
call = s(:send, check, :===, s(:arglist, s(:js_tmp, '$case')))
|
86
|
+
push expr(call)
|
84
87
|
else
|
85
|
-
|
86
|
-
call = s(:send, check, :===, s(:arglist, s(:js_tmp, '$case')))
|
87
|
-
push expr(call)
|
88
|
-
else
|
89
|
-
push js_truthy(check)
|
90
|
-
end
|
88
|
+
push js_truthy(check)
|
91
89
|
end
|
92
90
|
end
|
93
91
|
|
94
|
-
push
|
92
|
+
push ') {', process(body_code, @level), '}'
|
95
93
|
end
|
96
94
|
|
97
95
|
def when_checks
|
data/lib/opal/nodes/class.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require 'opal/nodes/module'
|
3
4
|
|
4
5
|
module Opal
|
@@ -12,13 +13,11 @@ module Opal
|
|
12
13
|
name, base = name_and_base
|
13
14
|
helper :klass
|
14
15
|
|
15
|
-
push
|
16
|
-
line "
|
17
|
-
line " var self = $#{name} = $klass($base, $super, '#{name}', $#{name});"
|
16
|
+
push '(function($base, $super, $parent_nesting) {'
|
17
|
+
line " var self = $klass($base, $super, '#{name}');"
|
18
18
|
|
19
19
|
in_scope do
|
20
20
|
scope.name = name
|
21
|
-
add_temp "#{scope.proto} = self.$$proto"
|
22
21
|
add_temp '$nesting = [self].concat($parent_nesting)'
|
23
22
|
|
24
23
|
body_code = self.body_code
|
@@ -28,7 +27,7 @@ module Opal
|
|
28
27
|
line body_code
|
29
28
|
end
|
30
29
|
|
31
|
-
line
|
30
|
+
line '})(', base, ', ', super_code, ', $nesting)'
|
32
31
|
end
|
33
32
|
|
34
33
|
def super_code
|
data/lib/opal/nodes/constants.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require 'opal/nodes/base'
|
3
4
|
|
4
5
|
module Opal
|
@@ -10,13 +11,13 @@ module Opal
|
|
10
11
|
|
11
12
|
def compile
|
12
13
|
if magical_data_const?
|
13
|
-
push(
|
14
|
+
push('$__END__')
|
14
15
|
elsif const_scope
|
15
|
-
push
|
16
|
+
push '$$$(', recv(const_scope), ", '#{name}')"
|
16
17
|
elsif compiler.eval?
|
17
|
-
push "
|
18
|
+
push "$$($nesting, '#{name}')"
|
18
19
|
else
|
19
|
-
push "
|
20
|
+
push "$$($nesting, '#{name}')"
|
20
21
|
end
|
21
22
|
end
|
22
23
|
|
@@ -27,7 +28,7 @@ module Opal
|
|
27
28
|
# 2. When current file doesn't have __END__ section
|
28
29
|
# DATA const should be resolved to a regular ::DATA constant
|
29
30
|
def magical_data_const?
|
30
|
-
const_scope.nil? && name == :DATA
|
31
|
+
const_scope.nil? && name == :DATA && compiler.eof_content
|
31
32
|
end
|
32
33
|
end
|
33
34
|
|
@@ -48,9 +49,9 @@ module Opal
|
|
48
49
|
|
49
50
|
def compile
|
50
51
|
if base
|
51
|
-
push
|
52
|
+
push 'Opal.const_set(', expr(base), ", '#{name}', ", expr(value), ')'
|
52
53
|
else
|
53
|
-
push "Opal.const_set($nesting[0], '#{name}', ", expr(value),
|
54
|
+
push "Opal.const_set($nesting[0], '#{name}', ", expr(value), ')'
|
54
55
|
end
|
55
56
|
end
|
56
57
|
end
|
data/lib/opal/nodes/csend.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require 'opal/nodes/call'
|
3
4
|
|
4
5
|
module Opal
|
5
6
|
module Nodes
|
6
|
-
|
7
7
|
# Safe navigator recv&.meth(arglist, &block)
|
8
8
|
class CSendNode < CallNode
|
9
9
|
handle :csend
|
@@ -12,7 +12,7 @@ module Opal
|
|
12
12
|
helper :send
|
13
13
|
|
14
14
|
conditional_send(recv(receiver_sexp)) do |receiver_temp|
|
15
|
-
push
|
15
|
+
push '$send(', receiver_temp
|
16
16
|
compile_method_name
|
17
17
|
compile_arguments
|
18
18
|
compile_block_pass
|
@@ -20,6 +20,5 @@ module Opal
|
|
20
20
|
end
|
21
21
|
end
|
22
22
|
end
|
23
|
-
|
24
23
|
end
|
25
24
|
end
|
data/lib/opal/nodes/def.rb
CHANGED
@@ -1,78 +1,40 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require 'opal/nodes/node_with_args'
|
3
4
|
|
4
5
|
module Opal
|
5
6
|
module Nodes
|
6
|
-
# FIXME: needs rewrite
|
7
7
|
class DefNode < NodeWithArgs
|
8
8
|
handle :def
|
9
9
|
|
10
|
-
children :mid, :
|
11
|
-
|
12
|
-
attr_accessor :block_arg
|
13
|
-
|
14
|
-
def extract_block_arg
|
15
|
-
*regular_args, last_arg = args.children
|
16
|
-
if last_arg && last_arg.type == :blockarg
|
17
|
-
@block_arg = last_arg.children[0]
|
18
|
-
@sexp = @sexp.updated(nil, [
|
19
|
-
mid,
|
20
|
-
s(:args, *regular_args),
|
21
|
-
stmts
|
22
|
-
])
|
23
|
-
end
|
24
|
-
end
|
10
|
+
children :mid, :inline_args, :stmts
|
25
11
|
|
26
12
|
def compile
|
27
|
-
extract_block_arg
|
28
|
-
split_args
|
29
|
-
|
30
13
|
inline_params = nil
|
31
14
|
scope_name = nil
|
32
15
|
|
33
|
-
# block name (&block)
|
34
|
-
if block_arg
|
35
|
-
block_name = block_arg
|
36
|
-
end
|
37
|
-
|
38
16
|
in_scope do
|
39
17
|
scope.mid = mid
|
40
18
|
scope.defs = true if @sexp.type == :defs
|
41
19
|
|
42
|
-
|
43
|
-
|
44
|
-
scope.add_arg block_name
|
45
|
-
end
|
20
|
+
scope.identify!
|
21
|
+
scope_name = scope.identity
|
46
22
|
|
47
|
-
|
23
|
+
# Setting a default block name (later can be overwritten by a blockarg)
|
24
|
+
scope.block_name = '$yield'
|
48
25
|
|
49
|
-
inline_params = process(
|
26
|
+
inline_params = process(inline_args)
|
50
27
|
|
51
28
|
stmt_code = stmt(compiler.returns(stmts))
|
52
29
|
|
53
|
-
add_temp 'self = this'
|
54
|
-
|
55
|
-
compile_inline_args
|
56
|
-
compile_post_args
|
57
|
-
|
58
|
-
scope.identify!
|
59
|
-
scope_name = scope.identity
|
60
|
-
|
61
30
|
compile_block_arg
|
62
31
|
|
63
|
-
|
64
|
-
|
65
|
-
|
32
|
+
add_temp 'self = this'
|
33
|
+
|
34
|
+
compile_arity_check
|
66
35
|
|
67
36
|
if scope.uses_zuper
|
68
|
-
|
69
|
-
add_local '$zuper_i'
|
70
|
-
add_local '$zuper_ii'
|
71
|
-
|
72
|
-
line "// Prepare super implicit arguments"
|
73
|
-
line "for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) {"
|
74
|
-
line " $zuper[$zuper_i] = arguments[$zuper_i];"
|
75
|
-
line "}"
|
37
|
+
prepare_super
|
76
38
|
end
|
77
39
|
|
78
40
|
unshift "\n#{current_indent}", scope.to_vars
|
@@ -81,8 +43,8 @@ module Opal
|
|
81
43
|
|
82
44
|
if scope.catch_return
|
83
45
|
unshift "try {\n"
|
84
|
-
line
|
85
|
-
push
|
46
|
+
line '} catch ($returner) { if ($returner === Opal.returner) { return $returner.$v }'
|
47
|
+
push ' throw $returner; }'
|
86
48
|
end
|
87
49
|
end
|
88
50
|
|
@@ -96,11 +58,11 @@ module Opal
|
|
96
58
|
# For now we're just using $$, to maintain compatibility with older IEs.
|
97
59
|
function_name = valid_name?(mid) ? " $$#{mid}" : ''
|
98
60
|
|
99
|
-
unshift
|
61
|
+
unshift ') {'
|
100
62
|
unshift(inline_params)
|
101
63
|
unshift "function#{function_name}("
|
102
64
|
unshift "#{scope_name} = " if scope_name
|
103
|
-
line
|
65
|
+
line '}'
|
104
66
|
|
105
67
|
push ", #{scope_name}.$$arity = #{arity}"
|
106
68
|
|
@@ -120,16 +82,7 @@ module Opal
|
|
120
82
|
end
|
121
83
|
|
122
84
|
def wrap_with_definition
|
123
|
-
|
124
|
-
elsif scope.module? || scope.class? then unshift "Opal.defn(self, '$#{mid}', "
|
125
|
-
elsif scope.sclass? then unshift "Opal.defn(self, '$#{mid}', "
|
126
|
-
elsif compiler.eval? then unshift "Opal.def(self, '$#{mid}', "
|
127
|
-
elsif scope.top? then unshift "Opal.defn(Opal.Object, '$#{mid}', "
|
128
|
-
elsif scope.def? then unshift "Opal.def(self, '$#{mid}', "
|
129
|
-
else raise "Unsupported use of `def`; please file a bug at https://github.com/opal/opal/issues/new reporting this message."
|
130
|
-
end
|
131
|
-
|
132
|
-
push ')'
|
85
|
+
wrap "Opal.def(self, '$#{mid}', ", ')'
|
133
86
|
|
134
87
|
if expr?
|
135
88
|
wrap '(', ", nil) && '#{mid}'"
|
@@ -138,25 +91,26 @@ module Opal
|
|
138
91
|
end
|
139
92
|
end
|
140
93
|
|
141
|
-
# Returns code used in debug mode to check arity of method call
|
142
|
-
def compile_arity_check
|
143
|
-
if arity_checks.size > 0
|
144
|
-
meth = scope.mid.to_s.inspect
|
145
|
-
line "var $arity = arguments.length;"
|
146
|
-
push " if (#{arity_checks.join(' || ')}) { Opal.ac($arity, #{arity}, this, #{meth}); }"
|
147
|
-
end
|
148
|
-
end
|
149
|
-
|
150
94
|
def source_location
|
151
95
|
file = @sexp.loc.expression.source_buffer.name
|
152
96
|
line = @sexp.loc.line
|
153
|
-
|
154
|
-
"['#{file}.rb', #{line}]"
|
97
|
+
"['#{file}', #{line}]"
|
155
98
|
end
|
156
99
|
|
157
100
|
def comments_code
|
158
101
|
'[' + comments.map { |comment| comment.text.inspect }.join(', ') + ']'
|
159
102
|
end
|
103
|
+
|
104
|
+
def prepare_super
|
105
|
+
add_local '$zuper'
|
106
|
+
add_local '$zuper_i'
|
107
|
+
add_local '$zuper_ii'
|
108
|
+
|
109
|
+
line '// Prepare super implicit arguments'
|
110
|
+
line 'for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) {'
|
111
|
+
line ' $zuper[$zuper_i] = arguments[$zuper_i];'
|
112
|
+
line '}'
|
113
|
+
end
|
160
114
|
end
|
161
115
|
end
|
162
116
|
end
|