opal 0.10.0 → 0.11.0

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 (734) hide show
  1. checksums.yaml +4 -4
  2. data/.codeclimate.yml +19 -0
  3. data/.gitmodules +1 -1
  4. data/.jshintrc +1 -2
  5. data/.rspec +1 -2
  6. data/.travis.yml +42 -20
  7. data/.yardopts +3 -1
  8. data/CHANGELOG.md +164 -1
  9. data/Gemfile +16 -9
  10. data/HACKING.md +4 -2
  11. data/README.md +11 -11
  12. data/Rakefile +1 -1
  13. data/appveyor.yml +29 -0
  14. data/benchmark/bm_constant_lookup_big.rb +799 -0
  15. data/benchmark/bm_constant_lookup_small.rb +59 -0
  16. data/benchmark/bm_module_definition_big.rb +400 -0
  17. data/benchmark/bm_module_definition_small.rb +30 -0
  18. data/benchmark-ips/bm_case.rb +33 -0
  19. data/benchmark-ips/bm_constants_lookup.rb +13 -0
  20. data/benchmark-ips/bm_is_number.rb +29 -0
  21. data/benchmark-ips/bm_symbol_to_proc.rb +19 -0
  22. data/bin +1 -0
  23. data/docs/compiled_ruby.md +16 -14
  24. data/docs/faq.md +3 -3
  25. data/docs/headless_chrome.md +105 -0
  26. data/docs/rspec.md +4 -20
  27. data/docs/unsupported_features.md +6 -4
  28. data/examples/rack/Gemfile +1 -0
  29. data/examples/rack/Gemfile.lock +11 -7
  30. data/examples/rack/app/application.rb +14 -3
  31. data/examples/rack/app/user.rb +2 -0
  32. data/examples/rack/config.ru +1 -1
  33. data/examples/rack/index.html.erb +1 -0
  34. data/examples/sinatra/Gemfile +1 -1
  35. data/examples/sinatra/Gemfile.lock +8 -11
  36. data/examples/sinatra/app/application.rb +2 -0
  37. data/{bin → exe}/opal +4 -2
  38. data/{bin → exe}/opal-repl +23 -1
  39. data/lib/opal/ast/builder.rb +13 -0
  40. data/lib/opal/ast/node.rb +30 -0
  41. data/lib/opal/builder.rb +82 -17
  42. data/lib/opal/builder_processors.rb +9 -7
  43. data/lib/opal/cli.rb +45 -59
  44. data/lib/opal/cli_options.rb +19 -12
  45. data/lib/opal/cli_runners/applescript.rb +3 -4
  46. data/lib/opal/cli_runners/chrome.js +135 -0
  47. data/lib/opal/cli_runners/chrome.rb +100 -0
  48. data/lib/opal/cli_runners/nashorn.rb +1 -1
  49. data/lib/opal/cli_runners/node_modules/.bin/chrome-remote-interface +1 -0
  50. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/LICENSE +18 -0
  51. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/README.md +843 -0
  52. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/bin/client.js +326 -0
  53. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/chrome-remote-interface.js +11 -0
  54. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/index.js +39 -0
  55. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/lib/api.js +84 -0
  56. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/lib/chrome.js +289 -0
  57. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/lib/defaults.js +4 -0
  58. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/lib/devtools.js +245 -0
  59. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/lib/external-request.js +23 -0
  60. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/lib/protocol.json +13303 -0
  61. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/lib/websocket-wrapper.js +32 -0
  62. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/package.json +128 -0
  63. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/webpack.config.js +55 -0
  64. data/lib/opal/cli_runners/node_modules/commander/Readme.md +195 -0
  65. data/lib/opal/cli_runners/node_modules/commander/index.js +851 -0
  66. data/lib/opal/cli_runners/node_modules/commander/package.json +92 -0
  67. data/{stdlib/nodejs/node_modules/js-yaml/node_modules/argparse → lib/opal/cli_runners/node_modules/ultron}/LICENSE +7 -6
  68. data/lib/opal/cli_runners/node_modules/ultron/index.js +138 -0
  69. data/lib/opal/cli_runners/node_modules/ultron/package.json +112 -0
  70. data/{stdlib/nodejs/node_modules/js-yaml → lib/opal/cli_runners/node_modules/ws}/LICENSE +6 -6
  71. data/lib/opal/cli_runners/node_modules/ws/README.md +259 -0
  72. data/lib/opal/cli_runners/node_modules/ws/SECURITY.md +33 -0
  73. data/lib/opal/cli_runners/node_modules/ws/index.js +15 -0
  74. data/lib/opal/cli_runners/node_modules/ws/lib/BufferUtil.fallback.js +56 -0
  75. data/lib/opal/cli_runners/node_modules/ws/lib/BufferUtil.js +15 -0
  76. data/lib/opal/cli_runners/node_modules/ws/lib/ErrorCodes.js +28 -0
  77. data/lib/opal/cli_runners/node_modules/ws/lib/EventTarget.js +158 -0
  78. data/lib/opal/cli_runners/node_modules/ws/lib/Extensions.js +69 -0
  79. data/lib/opal/cli_runners/node_modules/ws/lib/PerMessageDeflate.js +339 -0
  80. data/lib/opal/cli_runners/node_modules/ws/lib/Receiver.js +520 -0
  81. data/lib/opal/cli_runners/node_modules/ws/lib/Sender.js +438 -0
  82. data/lib/opal/cli_runners/node_modules/ws/lib/Validation.fallback.js +9 -0
  83. data/lib/opal/cli_runners/node_modules/ws/lib/Validation.js +17 -0
  84. data/lib/opal/cli_runners/node_modules/ws/lib/WebSocket.js +705 -0
  85. data/lib/opal/cli_runners/node_modules/ws/lib/WebSocketServer.js +336 -0
  86. data/lib/opal/cli_runners/node_modules/ws/package.json +122 -0
  87. data/lib/opal/cli_runners/nodejs.rb +4 -2
  88. data/lib/opal/cli_runners/package.json +5 -0
  89. data/lib/opal/cli_runners/server.rb +1 -1
  90. data/lib/opal/cli_runners.rb +2 -1
  91. data/lib/opal/compiler.rb +136 -95
  92. data/lib/opal/config.rb +114 -36
  93. data/lib/opal/deprecations.rb +18 -0
  94. data/lib/opal/eof_content.rb +36 -0
  95. data/lib/opal/erb.rb +1 -0
  96. data/lib/opal/errors.rb +1 -0
  97. data/lib/opal/fragment.rb +1 -0
  98. data/lib/opal/nodes/arglist.rb +2 -1
  99. data/lib/opal/nodes/args/initialize_kwargs.rb +1 -0
  100. data/lib/opal/nodes/args/kwarg.rb +9 -7
  101. data/lib/opal/nodes/args/kwoptarg.rb +13 -8
  102. data/lib/opal/nodes/args/kwrestarg.rb +5 -5
  103. data/lib/opal/nodes/args/mlhsarg.rb +3 -2
  104. data/lib/opal/nodes/args/normarg.rb +6 -7
  105. data/lib/opal/nodes/args/optarg.rb +5 -7
  106. data/lib/opal/nodes/args/post_args.rb +6 -5
  107. data/lib/opal/nodes/args/post_kwargs.rb +1 -0
  108. data/lib/opal/nodes/args/restarg.rb +7 -7
  109. data/lib/opal/nodes/array.rb +1 -0
  110. data/lib/opal/nodes/base.rb +24 -3
  111. data/lib/opal/nodes/call.rb +168 -155
  112. data/lib/opal/nodes/call_special.rb +37 -214
  113. data/lib/opal/nodes/case.rb +36 -22
  114. data/lib/opal/nodes/class.rb +4 -3
  115. data/lib/opal/nodes/constants.rb +28 -48
  116. data/lib/opal/nodes/csend.rb +25 -0
  117. data/lib/opal/nodes/def.rb +57 -17
  118. data/lib/opal/nodes/defined.rb +170 -60
  119. data/lib/opal/nodes/definitions.rb +42 -133
  120. data/lib/opal/nodes/defs.rb +29 -0
  121. data/lib/opal/nodes/hash.rb +12 -35
  122. data/lib/opal/nodes/helpers.rb +31 -62
  123. data/lib/opal/nodes/if.rb +21 -32
  124. data/lib/opal/nodes/inline_args.rb +12 -13
  125. data/lib/opal/nodes/iter.rb +61 -36
  126. data/lib/opal/nodes/literal.rb +206 -114
  127. data/lib/opal/nodes/logic.rb +39 -57
  128. data/lib/opal/nodes/masgn.rb +20 -18
  129. data/lib/opal/nodes/module.rb +10 -11
  130. data/lib/opal/nodes/node_with_args.rb +15 -18
  131. data/lib/opal/nodes/rescue.rb +37 -70
  132. data/lib/opal/nodes/runtime_helpers.rb +8 -3
  133. data/lib/opal/nodes/scope.rb +10 -5
  134. data/lib/opal/nodes/singleton_class.rb +4 -3
  135. data/lib/opal/nodes/super.rb +112 -88
  136. data/lib/opal/nodes/top.rb +7 -2
  137. data/lib/opal/nodes/variables.rb +57 -35
  138. data/lib/opal/nodes/while.rb +11 -1
  139. data/lib/opal/nodes/yield.rb +1 -17
  140. data/lib/opal/nodes.rb +3 -1
  141. data/lib/opal/parser.rb +29 -766
  142. data/lib/opal/path_reader.rb +22 -5
  143. data/lib/opal/paths.rb +10 -4
  144. data/lib/opal/regexp_anchors.rb +1 -0
  145. data/lib/opal/rewriter.rb +64 -0
  146. data/lib/opal/rewriters/base.rb +63 -0
  147. data/lib/opal/rewriters/binary_operator_assignment.rb +141 -0
  148. data/lib/opal/rewriters/block_to_iter.rb +17 -0
  149. data/lib/opal/rewriters/break_finder.rb +34 -0
  150. data/lib/opal/rewriters/dot_js_syntax.rb +60 -0
  151. data/lib/opal/rewriters/explicit_writer_return.rb +58 -0
  152. data/lib/opal/rewriters/for_rewriter.rb +93 -0
  153. data/lib/opal/rewriters/hashes/key_duplicates_rewriter.rb +58 -0
  154. data/lib/opal/rewriters/js_reserved_words.rb +108 -0
  155. data/lib/opal/rewriters/logical_operator_assignment.rb +154 -0
  156. data/lib/opal/rewriters/opal_engine_check.rb +42 -0
  157. data/lib/opal/rewriters/rubyspec/filters_rewriter.rb +67 -0
  158. data/lib/opal/server.rb +4 -0
  159. data/lib/opal/simple_server.rb +101 -0
  160. data/lib/opal/source_map.rb +1 -1
  161. data/lib/opal/util.rb +6 -6
  162. data/lib/opal/version.rb +2 -1
  163. data/lib/opal.rb +7 -1
  164. data/lib/tilt/opal.rb +1 -0
  165. data/opal/README.md +1 -1
  166. data/opal/corelib/array.rb +184 -107
  167. data/opal/corelib/basic_object.rb +6 -6
  168. data/opal/corelib/boolean.rb +11 -3
  169. data/opal/corelib/class.rb +14 -11
  170. data/opal/corelib/comparable.rb +16 -0
  171. data/opal/corelib/complex.rb +5 -1
  172. data/opal/corelib/constants.rb +3 -3
  173. data/opal/corelib/enumerable.rb +176 -11
  174. data/opal/corelib/error.rb +35 -17
  175. data/opal/corelib/file.rb +114 -176
  176. data/opal/corelib/hash.rb +226 -13
  177. data/opal/corelib/helpers.rb +12 -15
  178. data/opal/corelib/io.rb +3 -2
  179. data/opal/corelib/kernel.rb +68 -32
  180. data/opal/corelib/marshal/read_buffer.rb +288 -150
  181. data/opal/corelib/marshal/write_buffer.rb +27 -2
  182. data/opal/corelib/method.rb +33 -13
  183. data/opal/corelib/module.rb +134 -82
  184. data/opal/corelib/nil.rb +11 -3
  185. data/opal/corelib/number.rb +220 -34
  186. data/opal/corelib/numeric.rb +3 -11
  187. data/opal/corelib/process.rb +44 -4
  188. data/opal/corelib/random/seedrandom.js.rb +15 -0
  189. data/opal/corelib/random.rb +117 -0
  190. data/opal/corelib/range.rb +147 -24
  191. data/opal/corelib/regexp.rb +82 -13
  192. data/opal/corelib/runtime.js +623 -397
  193. data/opal/corelib/string/encoding.rb +67 -31
  194. data/opal/corelib/string/inheritance.rb +1 -1
  195. data/opal/corelib/string.rb +40 -9
  196. data/opal/corelib/struct.rb +18 -3
  197. data/opal/corelib/time.rb +3 -3
  198. data/opal/corelib/variables.rb +1 -1
  199. data/opal/opal.rb +1 -0
  200. data/opal.gemspec +32 -29
  201. data/stdlib/base64.rb +4 -2
  202. data/stdlib/bigdecimal/bignumber.js.rb +1 -1
  203. data/stdlib/buffer/array.rb +4 -2
  204. data/stdlib/date.rb +64 -31
  205. data/stdlib/headless_chrome.rb +11 -0
  206. data/stdlib/json.rb +16 -4
  207. data/stdlib/nashorn/file.rb +15 -0
  208. data/stdlib/native.rb +21 -12
  209. data/stdlib/nodejs/dir.rb +1 -1
  210. data/stdlib/nodejs/file.rb +77 -23
  211. data/stdlib/nodejs/io.rb +30 -1
  212. data/stdlib/nodejs/{node_modules/js-yaml/dist/js-yaml.js → js-yaml-3-6-1.js} +815 -626
  213. data/stdlib/nodejs/kernel.rb +3 -1
  214. data/stdlib/nodejs/package.json +0 -1
  215. data/stdlib/nodejs/stacktrace.rb +179 -0
  216. data/stdlib/nodejs/yaml.rb +2 -1
  217. data/stdlib/opal/platform.rb +6 -14
  218. data/stdlib/opal-builder.rb +1 -0
  219. data/stdlib/opal-platform.rb +15 -0
  220. data/stdlib/pathname.rb +1 -1
  221. data/stdlib/rbconfig.rb +1 -1
  222. data/stdlib/securerandom.rb +1 -1
  223. data/stdlib/strscan.rb +15 -1
  224. data/stdlib/yaml.rb +1 -1
  225. data/tasks/benchmarking.rake +9 -0
  226. data/tasks/building.rake +24 -20
  227. data/tasks/linting.rake +24 -13
  228. data/tasks/testing/mspec_special_calls.rb +44 -15
  229. data/tasks/testing/opal_rspec_smoketest.Gemfile +6 -0
  230. data/tasks/testing.rake +351 -202
  231. metadata +135 -915
  232. data/lib/opal/cli_runners/phantom.js +0 -70
  233. data/lib/opal/cli_runners/phantomjs.rb +0 -28
  234. data/lib/opal/hike_path_finder.rb +0 -18
  235. data/lib/opal/nodes/for.rb +0 -48
  236. data/lib/opal/parser/grammar.rb +0 -6157
  237. data/lib/opal/parser/grammar.y +0 -2011
  238. data/lib/opal/parser/keywords.rb +0 -66
  239. data/lib/opal/parser/lexer.rb +0 -1352
  240. data/lib/opal/parser/parser_scope.rb +0 -28
  241. data/lib/opal/parser/sexp.rb +0 -90
  242. data/lib/opal/sprockets/environment.rb +0 -23
  243. data/lib/opal/sprockets/erb.rb +0 -23
  244. data/lib/opal/sprockets/path_reader.rb +0 -36
  245. data/lib/opal/sprockets/processor.rb +0 -145
  246. data/lib/opal/sprockets/server.rb +0 -133
  247. data/lib/opal/sprockets/source_map_header_patch.rb +0 -41
  248. data/lib/opal/sprockets/source_map_server.rb +0 -115
  249. data/lib/opal/sprockets.rb +0 -91
  250. data/spec/README.md +0 -10
  251. data/spec/filters/bugs/array.rb +0 -12
  252. data/spec/filters/bugs/basicobject.rb +0 -16
  253. data/spec/filters/bugs/bigdecimal.rb +0 -160
  254. data/spec/filters/bugs/class.rb +0 -10
  255. data/spec/filters/bugs/compiler_opal.rb +0 -5
  256. data/spec/filters/bugs/complex.rb +0 -3
  257. data/spec/filters/bugs/date.rb +0 -94
  258. data/spec/filters/bugs/enumerable.rb +0 -50
  259. data/spec/filters/bugs/enumerator.rb +0 -42
  260. data/spec/filters/bugs/exception.rb +0 -58
  261. data/spec/filters/bugs/float.rb +0 -33
  262. data/spec/filters/bugs/hash.rb +0 -11
  263. data/spec/filters/bugs/inheritance.rb +0 -5
  264. data/spec/filters/bugs/integer.rb +0 -28
  265. data/spec/filters/bugs/kernel.rb +0 -297
  266. data/spec/filters/bugs/language.rb +0 -275
  267. data/spec/filters/bugs/language_opal.rb +0 -88
  268. data/spec/filters/bugs/marshal.rb +0 -43
  269. data/spec/filters/bugs/method.rb +0 -84
  270. data/spec/filters/bugs/module.rb +0 -196
  271. data/spec/filters/bugs/numeric.rb +0 -127
  272. data/spec/filters/bugs/pathname.rb +0 -5
  273. data/spec/filters/bugs/proc.rb +0 -36
  274. data/spec/filters/bugs/range.rb +0 -144
  275. data/spec/filters/bugs/rational.rb +0 -4
  276. data/spec/filters/bugs/regexp.rb +0 -196
  277. data/spec/filters/bugs/set.rb +0 -42
  278. data/spec/filters/bugs/singleton.rb +0 -6
  279. data/spec/filters/bugs/string.rb +0 -101
  280. data/spec/filters/bugs/stringscanner.rb +0 -79
  281. data/spec/filters/bugs/struct.rb +0 -4
  282. data/spec/filters/bugs/time.rb +0 -29
  283. data/spec/filters/bugs/unboundmethod.rb +0 -27
  284. data/spec/filters/unsupported/array.rb +0 -163
  285. data/spec/filters/unsupported/basicobject.rb +0 -14
  286. data/spec/filters/unsupported/bignum.rb +0 -52
  287. data/spec/filters/unsupported/class.rb +0 -4
  288. data/spec/filters/unsupported/delegator.rb +0 -5
  289. data/spec/filters/unsupported/enumerable.rb +0 -11
  290. data/spec/filters/unsupported/enumerator.rb +0 -13
  291. data/spec/filters/unsupported/fixnum.rb +0 -14
  292. data/spec/filters/unsupported/float.rb +0 -43
  293. data/spec/filters/unsupported/freeze.rb +0 -53
  294. data/spec/filters/unsupported/hash.rb +0 -51
  295. data/spec/filters/unsupported/integer.rb +0 -3
  296. data/spec/filters/unsupported/kernel.rb +0 -31
  297. data/spec/filters/unsupported/language.rb +0 -17
  298. data/spec/filters/unsupported/marshal.rb +0 -46
  299. data/spec/filters/unsupported/matchdata.rb +0 -30
  300. data/spec/filters/unsupported/math.rb +0 -3
  301. data/spec/filters/unsupported/module.rb +0 -8
  302. data/spec/filters/unsupported/pathname.rb +0 -3
  303. data/spec/filters/unsupported/privacy.rb +0 -147
  304. data/spec/filters/unsupported/proc.rb +0 -3
  305. data/spec/filters/unsupported/regexp.rb +0 -59
  306. data/spec/filters/unsupported/set.rb +0 -4
  307. data/spec/filters/unsupported/singleton.rb +0 -6
  308. data/spec/filters/unsupported/string.rb +0 -537
  309. data/spec/filters/unsupported/struct.rb +0 -6
  310. data/spec/filters/unsupported/symbol.rb +0 -19
  311. data/spec/filters/unsupported/taint.rb +0 -15
  312. data/spec/filters/unsupported/thread.rb +0 -7
  313. data/spec/filters/unsupported/time.rb +0 -202
  314. data/spec/lib/builder_processors_spec.rb +0 -27
  315. data/spec/lib/builder_spec.rb +0 -72
  316. data/spec/lib/cli_runners/phantomjs_spec.rb +0 -39
  317. data/spec/lib/cli_spec.rb +0 -211
  318. data/spec/lib/compiler/call_spec.rb +0 -700
  319. data/spec/lib/compiler/pre_processed_conditionals_spec.rb +0 -87
  320. data/spec/lib/compiler_spec.rb +0 -285
  321. data/spec/lib/config_spec.rb +0 -13
  322. data/spec/lib/dependency_resolver_spec.rb +0 -40
  323. data/spec/lib/fixtures/complex_sprockets.js.rb.erb +0 -4
  324. data/spec/lib/fixtures/file_with_directives.js +0 -2
  325. data/spec/lib/fixtures/jst_file.js.jst +0 -1
  326. data/spec/lib/fixtures/no_requires.rb +0 -1
  327. data/spec/lib/fixtures/opal_file.rb +0 -2
  328. data/spec/lib/fixtures/require_tree_test.rb +0 -3
  329. data/spec/lib/fixtures/required_file.js +0 -1
  330. data/spec/lib/fixtures/required_tree_test/required_file1.rb +0 -1
  331. data/spec/lib/fixtures/required_tree_test/required_file2.rb +0 -1
  332. data/spec/lib/fixtures/requires.rb +0 -7
  333. data/spec/lib/fixtures/source_map/subfolder/other_file.rb +0 -1
  334. data/spec/lib/fixtures/source_map.rb +0 -1
  335. data/spec/lib/fixtures/sprockets_file.js.rb +0 -3
  336. data/spec/lib/fixtures/sprockets_require_tree_test.rb +0 -3
  337. data/spec/lib/hike_path_finder_spec.rb +0 -23
  338. data/spec/lib/lexer_spec.rb +0 -110
  339. data/spec/lib/parser/alias_spec.rb +0 -26
  340. data/spec/lib/parser/and_spec.rb +0 -13
  341. data/spec/lib/parser/aref_spec.rb +0 -10
  342. data/spec/lib/parser/attrasgn_spec.rb +0 -28
  343. data/spec/lib/parser/begin_spec.rb +0 -42
  344. data/spec/lib/parser/block_spec.rb +0 -12
  345. data/spec/lib/parser/break_spec.rb +0 -17
  346. data/spec/lib/parser/call_spec.rb +0 -201
  347. data/spec/lib/parser/class_spec.rb +0 -35
  348. data/spec/lib/parser/comments_spec.rb +0 -11
  349. data/spec/lib/parser/def_spec.rb +0 -109
  350. data/spec/lib/parser/if_spec.rb +0 -26
  351. data/spec/lib/parser/iter_spec.rb +0 -59
  352. data/spec/lib/parser/lambda_spec.rb +0 -219
  353. data/spec/lib/parser/literal_spec.rb +0 -118
  354. data/spec/lib/parser/masgn_spec.rb +0 -37
  355. data/spec/lib/parser/module_spec.rb +0 -27
  356. data/spec/lib/parser/not_spec.rb +0 -21
  357. data/spec/lib/parser/op_asgn1_spec.rb +0 -23
  358. data/spec/lib/parser/op_asgn2_spec.rb +0 -23
  359. data/spec/lib/parser/op_asgn_spec.rb +0 -17
  360. data/spec/lib/parser/or_spec.rb +0 -13
  361. data/spec/lib/parser/return_spec.rb +0 -22
  362. data/spec/lib/parser/sclass_spec.rb +0 -21
  363. data/spec/lib/parser/string_spec.rb +0 -286
  364. data/spec/lib/parser/super_spec.rb +0 -20
  365. data/spec/lib/parser/unary_spec.rb +0 -52
  366. data/spec/lib/parser/undef_spec.rb +0 -19
  367. data/spec/lib/parser/unless_spec.rb +0 -13
  368. data/spec/lib/parser/variables_spec.rb +0 -116
  369. data/spec/lib/parser/while_spec.rb +0 -15
  370. data/spec/lib/parser/yield_spec.rb +0 -20
  371. data/spec/lib/path_reader_spec.rb +0 -36
  372. data/spec/lib/paths_spec.rb +0 -18
  373. data/spec/lib/shared/path_finder_shared.rb +0 -19
  374. data/spec/lib/shared/path_reader_shared.rb +0 -31
  375. data/spec/lib/spec_helper.rb +0 -16
  376. data/spec/lib/sprockets/erb_spec.rb +0 -38
  377. data/spec/lib/sprockets/path_reader_spec.rb +0 -41
  378. data/spec/lib/sprockets/processor_spec.rb +0 -79
  379. data/spec/lib/sprockets/server_spec.rb +0 -102
  380. data/spec/lib/sprockets_spec.rb +0 -32
  381. data/spec/lib/tilt/opal_spec.rb +0 -37
  382. data/spec/mspec-opal/formatters.rb +0 -188
  383. data/spec/mspec-opal/runner.rb +0 -193
  384. data/spec/opal/compiler/irb_spec.rb +0 -44
  385. data/spec/opal/core/arity_spec.rb +0 -142
  386. data/spec/opal/core/array/intersection_spec.rb +0 -38
  387. data/spec/opal/core/array/minus_spec.rb +0 -38
  388. data/spec/opal/core/array/select_spec.rb +0 -14
  389. data/spec/opal/core/array/set_range_to_array_spec.rb +0 -7
  390. data/spec/opal/core/array/union_spec.rb +0 -38
  391. data/spec/opal/core/array/uniq_spec.rb +0 -49
  392. data/spec/opal/core/date_spec.rb +0 -177
  393. data/spec/opal/core/enumerable/all_break_spec.rb +0 -5
  394. data/spec/opal/core/enumerable/any_break_spec.rb +0 -5
  395. data/spec/opal/core/enumerable/collect_break_spec.rb +0 -13
  396. data/spec/opal/core/enumerable/count_break_spec.rb +0 -5
  397. data/spec/opal/core/enumerable/detect_break_spec.rb +0 -5
  398. data/spec/opal/core/enumerable/drop_while_break_spec.rb +0 -5
  399. data/spec/opal/core/enumerable/each_slice_break.rb +0 -6
  400. data/spec/opal/core/enumerable/each_with_index_break_spec.rb +0 -5
  401. data/spec/opal/core/enumerable/each_with_object_break_spec.rb +0 -5
  402. data/spec/opal/core/enumerable/find_all_break_spec.rb +0 -5
  403. data/spec/opal/core/enumerable/find_index_break_spec.rb +0 -5
  404. data/spec/opal/core/enumerable/grep_break_spec.rb +0 -5
  405. data/spec/opal/core/enumerable/max_break_spec.rb +0 -5
  406. data/spec/opal/core/enumerable/max_by_break_spec.rb +0 -5
  407. data/spec/opal/core/enumerable/min_break_spec.rb +0 -5
  408. data/spec/opal/core/enumerable/min_by_break_spec.rb +0 -5
  409. data/spec/opal/core/enumerable/none_break_spec.rb +0 -5
  410. data/spec/opal/core/enumerable/one_break_spec.rb +0 -5
  411. data/spec/opal/core/enumerable/reduce_break_spec.rb +0 -5
  412. data/spec/opal/core/enumerable/take_while_break_spec.rb +0 -5
  413. data/spec/opal/core/enumerator/with_index_spec.rb +0 -6
  414. data/spec/opal/core/exception_spec.rb +0 -20
  415. data/spec/opal/core/fixtures/class.rb +0 -124
  416. data/spec/opal/core/fixtures/class_variables.rb +0 -0
  417. data/spec/opal/core/fixtures/constants.rb +0 -33
  418. data/spec/opal/core/fixtures/require_tree_files/file 1.rb +0 -1
  419. data/spec/opal/core/fixtures/require_tree_files/file 2.rb +0 -1
  420. data/spec/opal/core/fixtures/require_tree_files/file 3.rb +0 -1
  421. data/spec/opal/core/fixtures/require_tree_files/file 4.rb +0 -1
  422. data/spec/opal/core/fixtures/require_tree_files/file 5.rb +0 -1
  423. data/spec/opal/core/fixtures/require_tree_files/nested/nested 1.rb +0 -1
  424. data/spec/opal/core/fixtures/require_tree_files/nested/nested 2.rb +0 -1
  425. data/spec/opal/core/fixtures/require_tree_files/other/other 1.rb +0 -1
  426. data/spec/opal/core/fixtures/require_tree_with_dot/file 1.rb +0 -1
  427. data/spec/opal/core/fixtures/require_tree_with_dot/file 2.rb +0 -1
  428. data/spec/opal/core/fixtures/require_tree_with_dot/file 3.rb +0 -1
  429. data/spec/opal/core/fixtures/require_tree_with_dot/index.rb +0 -3
  430. data/spec/opal/core/hash/has_value_spec.rb +0 -13
  431. data/spec/opal/core/hash/internals_spec.rb +0 -332
  432. data/spec/opal/core/helpers_spec.rb +0 -14
  433. data/spec/opal/core/kernel/Array_spec.rb +0 -10
  434. data/spec/opal/core/kernel/at_exit_spec.rb +0 -70
  435. data/spec/opal/core/kernel/block_given_spec.rb +0 -30
  436. data/spec/opal/core/kernel/class_spec.rb +0 -6
  437. data/spec/opal/core/kernel/define_singleton_method_spec.rb +0 -21
  438. data/spec/opal/core/kernel/equal_value_spec.rb +0 -12
  439. data/spec/opal/core/kernel/extend_spec.rb +0 -21
  440. data/spec/opal/core/kernel/format_spec.rb +0 -122
  441. data/spec/opal/core/kernel/freeze_spec.rb +0 -15
  442. data/spec/opal/core/kernel/instance_eval_spec.rb +0 -28
  443. data/spec/opal/core/kernel/instance_variable_defined_spec.rb +0 -15
  444. data/spec/opal/core/kernel/instance_variable_get_spec.rb +0 -14
  445. data/spec/opal/core/kernel/instance_variable_set_spec.rb +0 -10
  446. data/spec/opal/core/kernel/instance_variables_spec.rb +0 -110
  447. data/spec/opal/core/kernel/loop_spec.rb +0 -23
  448. data/spec/opal/core/kernel/match_spec.rb +0 -5
  449. data/spec/opal/core/kernel/method_spec.rb +0 -31
  450. data/spec/opal/core/kernel/methods_spec.rb +0 -25
  451. data/spec/opal/core/kernel/nil_spec.rb +0 -7
  452. data/spec/opal/core/kernel/p_spec.rb +0 -15
  453. data/spec/opal/core/kernel/printf_spec.rb +0 -11
  454. data/spec/opal/core/kernel/proc_spec.rb +0 -13
  455. data/spec/opal/core/kernel/raise_spec.rb +0 -13
  456. data/spec/opal/core/kernel/rand_spec.rb +0 -23
  457. data/spec/opal/core/kernel/require_tree_spec.rb +0 -18
  458. data/spec/opal/core/kernel/respond_to_spec.rb +0 -41
  459. data/spec/opal/core/kernel/send_spec.rb +0 -56
  460. data/spec/opal/core/kernel/sprintf_spec.rb +0 -5
  461. data/spec/opal/core/language/arguments/mlhs_arg_spec.rb +0 -19
  462. data/spec/opal/core/language/block_spec.rb +0 -538
  463. data/spec/opal/core/language/class_spec.rb +0 -55
  464. data/spec/opal/core/language/equal_spec.rb +0 -8
  465. data/spec/opal/core/language/fixtures/array.rb +0 -11
  466. data/spec/opal/core/language/fixtures/block.rb +0 -57
  467. data/spec/opal/core/language/fixtures/break.rb +0 -240
  468. data/spec/opal/core/language/fixtures/ensure.rb +0 -72
  469. data/spec/opal/core/language/fixtures/literal_lambda.rb +0 -7
  470. data/spec/opal/core/language/fixtures/metaclass.rb +0 -33
  471. data/spec/opal/core/language/fixtures/module.rb +0 -24
  472. data/spec/opal/core/language/fixtures/next.rb +0 -128
  473. data/spec/opal/core/language/fixtures/return.rb +0 -118
  474. data/spec/opal/core/language/fixtures/send.rb +0 -111
  475. data/spec/opal/core/language/fixtures/send_1.9.rb +0 -22
  476. data/spec/opal/core/language/fixtures/super.rb +0 -308
  477. data/spec/opal/core/language/fixtures/variables.rb +0 -58
  478. data/spec/opal/core/language/fixtures/yield.rb +0 -28
  479. data/spec/opal/core/language/heredoc_spec.rb +0 -42
  480. data/spec/opal/core/language/keyword_arguments_spec.rb +0 -11
  481. data/spec/opal/core/language/predefined_spec.rb +0 -138
  482. data/spec/opal/core/language/proc_spec.rb +0 -263
  483. data/spec/opal/core/language/regexp_spec.rb +0 -20
  484. data/spec/opal/core/language/rescue_spec.rb +0 -18
  485. data/spec/opal/core/language/send_spec.rb +0 -230
  486. data/spec/opal/core/language/string_spec.rb +0 -44
  487. data/spec/opal/core/language/ternary_operator_spec.rb +0 -20
  488. data/spec/opal/core/language/variables_spec.rb +0 -1366
  489. data/spec/opal/core/language/versions/array_1.9.rb +0 -39
  490. data/spec/opal/core/language/versions/block_1.9.rb +0 -0
  491. data/spec/opal/core/language/versions/break_1.9.rb +0 -0
  492. data/spec/opal/core/language/versions/case_1.9.rb +0 -20
  493. data/spec/opal/core/language/versions/def_2_0_spec.rb +0 -62
  494. data/spec/opal/core/language/versions/hash_1_9_spec.rb +0 -23
  495. data/spec/opal/core/language/versions/literal_lambda_1.9.rb +0 -143
  496. data/spec/opal/core/language/versions/not_1.9.rb +0 -22
  497. data/spec/opal/core/language/versions/send_1.9.rb +0 -241
  498. data/spec/opal/core/language/versions/symbol_1.9.rb +0 -15
  499. data/spec/opal/core/language/versions/variables_1.9.rb +0 -8
  500. data/spec/opal/core/language_spec.rb +0 -45
  501. data/spec/opal/core/marshal/dump_spec.rb +0 -53
  502. data/spec/opal/core/marshal/load_spec.rb +0 -7
  503. data/spec/opal/core/method/to_proc_spec.rb +0 -28
  504. data/spec/opal/core/module/alias_method_spec.rb +0 -28
  505. data/spec/opal/core/module/ancestors_spec.rb +0 -11
  506. data/spec/opal/core/module/append_features_spec.rb +0 -14
  507. data/spec/opal/core/module/attr_accessor_spec.rb +0 -26
  508. data/spec/opal/core/module/const_defined_spec.rb +0 -84
  509. data/spec/opal/core/module/const_get_spec.rb +0 -85
  510. data/spec/opal/core/module/const_missing_spec.rb +0 -17
  511. data/spec/opal/core/module/const_set_spec.rb +0 -64
  512. data/spec/opal/core/module/constants_spec.rb +0 -49
  513. data/spec/opal/core/module/fixtures/classes.rb +0 -444
  514. data/spec/opal/core/module/method_defined_spec.rb +0 -48
  515. data/spec/opal/core/module/method_lookup_spec.rb +0 -13
  516. data/spec/opal/core/module/module_function_spec.rb +0 -25
  517. data/spec/opal/core/module/name_spec.rb +0 -41
  518. data/spec/opal/core/module/public_method_defined_spec.rb +0 -18
  519. data/spec/opal/core/module/remove_const_spec.rb +0 -22
  520. data/spec/opal/core/module/undef_method_spec.rb +0 -66
  521. data/spec/opal/core/numeric/bit_and_spec.rb +0 -7
  522. data/spec/opal/core/numeric/bit_or_spec.rb +0 -8
  523. data/spec/opal/core/numeric/bit_xor_spec.rb +0 -6
  524. data/spec/opal/core/numeric/ceil_spec.rb +0 -8
  525. data/spec/opal/core/numeric/chr_spec.rb +0 -8
  526. data/spec/opal/core/numeric/comparison_spec.rb +0 -24
  527. data/spec/opal/core/numeric/complement_spec.rb +0 -8
  528. data/spec/opal/core/numeric/divide_spec.rb +0 -10
  529. data/spec/opal/core/numeric/eql_spec.rb +0 -9
  530. data/spec/opal/core/numeric/exponent_spec.rb +0 -33
  531. data/spec/opal/core/numeric/floor_spec.rb +0 -8
  532. data/spec/opal/core/numeric/gt_spec.rb +0 -11
  533. data/spec/opal/core/numeric/gte_spec.rb +0 -12
  534. data/spec/opal/core/numeric/integer_spec.rb +0 -9
  535. data/spec/opal/core/numeric/left_shift_spec.rb +0 -21
  536. data/spec/opal/core/numeric/lt_spec.rb +0 -11
  537. data/spec/opal/core/numeric/lte_spec.rb +0 -12
  538. data/spec/opal/core/numeric/minus_spec.rb +0 -8
  539. data/spec/opal/core/numeric/modulo_spec.rb +0 -19
  540. data/spec/opal/core/numeric/multiply_spec.rb +0 -9
  541. data/spec/opal/core/numeric/next_spec.rb +0 -9
  542. data/spec/opal/core/numeric/ord_spec.rb +0 -9
  543. data/spec/opal/core/numeric/plus_spec.rb +0 -8
  544. data/spec/opal/core/numeric/pred_spec.rb +0 -7
  545. data/spec/opal/core/numeric/right_shift_spec.rb +0 -25
  546. data/spec/opal/core/numeric/step_spec.rb +0 -11
  547. data/spec/opal/core/numeric/succ_spec.rb +0 -9
  548. data/spec/opal/core/numeric/times_spec.rb +0 -36
  549. data/spec/opal/core/numeric/to_f_spec.rb +0 -7
  550. data/spec/opal/core/numeric/to_i_spec.rb +0 -7
  551. data/spec/opal/core/numeric/to_json_spec.rb +0 -8
  552. data/spec/opal/core/numeric/to_s_spec.rb +0 -26
  553. data/spec/opal/core/numeric/uminus_spec.rb +0 -9
  554. data/spec/opal/core/numeric/upto_spec.rb +0 -19
  555. data/spec/opal/core/numeric/zero_spec.rb +0 -7
  556. data/spec/opal/core/object_id_spec.rb +0 -56
  557. data/spec/opal/core/proc/call_spec.rb +0 -21
  558. data/spec/opal/core/proc/element_reference_spec.rb +0 -21
  559. data/spec/opal/core/proc/proc_tricks_spec.rb +0 -7
  560. data/spec/opal/core/runtime/begin_spec.rb +0 -39
  561. data/spec/opal/core/runtime/block_send_spec.rb +0 -28
  562. data/spec/opal/core/runtime/block_spec.rb +0 -23
  563. data/spec/opal/core/runtime/bridged_classes_spec.rb +0 -123
  564. data/spec/opal/core/runtime/constants_spec.rb +0 -13
  565. data/spec/opal/core/runtime/donate_spec.rb +0 -53
  566. data/spec/opal/core/runtime/eval_spec.rb +0 -5
  567. data/spec/opal/core/runtime/main_methods_spec.rb +0 -27
  568. data/spec/opal/core/runtime/method_missing_spec.rb +0 -68
  569. data/spec/opal/core/runtime/method_spec.rb +0 -31
  570. data/spec/opal/core/runtime/operator_call_spec.rb +0 -13
  571. data/spec/opal/core/runtime/paren_spec.rb +0 -14
  572. data/spec/opal/core/runtime/rescue_spec.rb +0 -71
  573. data/spec/opal/core/runtime/return_spec.rb +0 -38
  574. data/spec/opal/core/runtime/send_spec.rb +0 -34
  575. data/spec/opal/core/runtime/singleton_class_spec.rb +0 -13
  576. data/spec/opal/core/runtime/super_spec.rb +0 -223
  577. data/spec/opal/core/runtime/truthy_spec.rb +0 -63
  578. data/spec/opal/core/runtime/variables_spec.rb +0 -20
  579. data/spec/opal/core/runtime_spec.rb +0 -58
  580. data/spec/opal/core/source_map_spec.rb +0 -49
  581. data/spec/opal/core/string_spec.rb +0 -32
  582. data/spec/opal/javascript_api_spec.rb +0 -16
  583. data/spec/opal/stdlib/erb/erb_spec.rb +0 -30
  584. data/spec/opal/stdlib/erb/inline_block.opalerb +0 -3
  585. data/spec/opal/stdlib/erb/quoted.opalerb +0 -1
  586. data/spec/opal/stdlib/erb/simple.opalerb +0 -1
  587. data/spec/opal/stdlib/js_spec.rb +0 -66
  588. data/spec/opal/stdlib/json/ext_spec.rb +0 -48
  589. data/spec/opal/stdlib/json/parse_spec.rb +0 -33
  590. data/spec/opal/stdlib/native/alias_native_spec.rb +0 -27
  591. data/spec/opal/stdlib/native/array_spec.rb +0 -11
  592. data/spec/opal/stdlib/native/each_spec.rb +0 -13
  593. data/spec/opal/stdlib/native/element_reference_spec.rb +0 -16
  594. data/spec/opal/stdlib/native/exposure_spec.rb +0 -33
  595. data/spec/opal/stdlib/native/ext_spec.rb +0 -19
  596. data/spec/opal/stdlib/native/hash_spec.rb +0 -51
  597. data/spec/opal/stdlib/native/initialize_spec.rb +0 -17
  598. data/spec/opal/stdlib/native/method_missing_spec.rb +0 -51
  599. data/spec/opal/stdlib/native/native_alias_spec.rb +0 -19
  600. data/spec/opal/stdlib/native/native_class_spec.rb +0 -18
  601. data/spec/opal/stdlib/native/native_module_spec.rb +0 -13
  602. data/spec/opal/stdlib/native/native_reader_spec.rb +0 -22
  603. data/spec/opal/stdlib/native/native_writer_spec.rb +0 -30
  604. data/spec/opal/stdlib/native/new_spec.rb +0 -92
  605. data/spec/opal/stdlib/native/struct_spec.rb +0 -12
  606. data/spec/opal/stdlib/promise/always_spec.rb +0 -49
  607. data/spec/opal/stdlib/promise/error_spec.rb +0 -15
  608. data/spec/opal/stdlib/promise/rescue_spec.rb +0 -53
  609. data/spec/opal/stdlib/promise/then_spec.rb +0 -79
  610. data/spec/opal/stdlib/promise/trace_spec.rb +0 -51
  611. data/spec/opal/stdlib/promise/value_spec.rb +0 -15
  612. data/spec/opal/stdlib/promise/when_spec.rb +0 -34
  613. data/spec/opal/stdlib/source_map_spec.rb +0 -8
  614. data/spec/opal/stdlib/strscan/scan_spec.rb +0 -11
  615. data/spec/opal/stdlib/template/paths_spec.rb +0 -10
  616. data/spec/opal/stdlib/thread/mutex_spec.rb +0 -40
  617. data/spec/opal/stdlib/thread/thread_queue_spec.rb +0 -32
  618. data/spec/opal/stdlib/thread/thread_spec.rb +0 -60
  619. data/spec/ruby_specs +0 -121
  620. data/spec/spec_helper.rb +0 -26
  621. data/spec/support/match_helpers.rb +0 -57
  622. data/spec/support/mspec_rspec_adapter.rb +0 -33
  623. data/spec/support/parser_helpers.rb +0 -37
  624. data/stdlib/nodejs/node_modules/js-yaml/HISTORY.md +0 -277
  625. data/stdlib/nodejs/node_modules/js-yaml/README.md +0 -288
  626. data/stdlib/nodejs/node_modules/js-yaml/bin/js-yaml.js +0 -140
  627. data/stdlib/nodejs/node_modules/js-yaml/bower.json +0 -23
  628. data/stdlib/nodejs/node_modules/js-yaml/dist/js-yaml.min.js +0 -3
  629. data/stdlib/nodejs/node_modules/js-yaml/examples/custom_types.js +0 -102
  630. data/stdlib/nodejs/node_modules/js-yaml/examples/custom_types.yml +0 -18
  631. data/stdlib/nodejs/node_modules/js-yaml/examples/dumper.js +0 -31
  632. data/stdlib/nodejs/node_modules/js-yaml/examples/dumper.json +0 -22
  633. data/stdlib/nodejs/node_modules/js-yaml/examples/sample_document.js +0 -18
  634. data/stdlib/nodejs/node_modules/js-yaml/examples/sample_document.yml +0 -197
  635. data/stdlib/nodejs/node_modules/js-yaml/index.js +0 -7
  636. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/common.js +0 -62
  637. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/dumper.js +0 -554
  638. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/exception.js +0 -25
  639. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/loader.js +0 -1581
  640. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/mark.js +0 -78
  641. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/core.js +0 -18
  642. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/default_full.js +0 -25
  643. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/default_safe.js +0 -28
  644. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/failsafe.js +0 -17
  645. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/json.js +0 -25
  646. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema.js +0 -103
  647. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/binary.js +0 -133
  648. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/bool.js +0 -37
  649. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/float.js +0 -110
  650. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/int.js +0 -183
  651. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/js/function.js +0 -85
  652. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/js/regexp.js +0 -84
  653. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/js/undefined.js +0 -27
  654. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/map.js +0 -8
  655. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/merge.js +0 -12
  656. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/null.js +0 -36
  657. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/omap.js +0 -56
  658. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/pairs.js +0 -61
  659. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/seq.js +0 -8
  660. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/set.js +0 -33
  661. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/str.js +0 -8
  662. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/timestamp.js +0 -98
  663. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type.js +0 -61
  664. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml.js +0 -39
  665. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/HISTORY.md +0 -115
  666. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/README.md +0 -239
  667. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/arguments.js +0 -36
  668. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/choice.js +0 -22
  669. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/constants.js +0 -59
  670. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/help.js +0 -13
  671. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/nargs.js +0 -33
  672. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/parents.js +0 -28
  673. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/prefix_chars.js +0 -23
  674. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/sub_commands.js +0 -49
  675. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/sum.js +0 -35
  676. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/testformatters.js +0 -270
  677. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/index.js +0 -1
  678. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/append/constant.js +0 -47
  679. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/append.js +0 -55
  680. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/count.js +0 -40
  681. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/help.js +0 -48
  682. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/store/constant.js +0 -43
  683. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/store/false.js +0 -27
  684. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/store/true.js +0 -26
  685. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/store.js +0 -50
  686. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/subparsers.js +0 -148
  687. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/version.js +0 -50
  688. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action.js +0 -146
  689. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action_container.js +0 -481
  690. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argparse.js +0 -14
  691. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argument/error.js +0 -50
  692. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argument/exclusive.js +0 -54
  693. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argument/group.js +0 -75
  694. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argument_parser.js +0 -1168
  695. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/const.js +0 -18
  696. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/help/added_formatters.js +0 -88
  697. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/help/formatter.js +0 -798
  698. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/namespace.js +0 -77
  699. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/LICENSE +0 -23
  700. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/README.md +0 -22
  701. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/package.json +0 -69
  702. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/underscore-min.js +0 -6
  703. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/underscore.js +0 -1415
  704. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/.npmignore +0 -2
  705. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/.travis.yml +0 -8
  706. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/README.markdown +0 -825
  707. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/bower.json +0 -33
  708. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/component.json +0 -11
  709. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/foo.js +0 -10
  710. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/gulpfile.js +0 -26
  711. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/lib/underscore.string.js +0 -673
  712. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/libpeerconnection.log +0 -0
  713. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/package.json +0 -107
  714. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/package.json +0 -62
  715. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/README.md +0 -73
  716. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/bin/esparse.js +0 -117
  717. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/bin/esvalidate.js +0 -177
  718. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/esprima.js +0 -3908
  719. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/package.json +0 -69
  720. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/compat.js +0 -239
  721. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/reflect.js +0 -422
  722. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/run.js +0 -66
  723. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/runner.js +0 -387
  724. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/test.js +0 -20238
  725. data/stdlib/nodejs/node_modules/js-yaml/package.json +0 -83
  726. data/stdlib/phantomjs.rb +0 -17
  727. data/tasks/testing/sprockets-phantomjs.js +0 -54
  728. data/test/nodejs/test_dir.rb +0 -17
  729. data/test/nodejs/test_file.rb +0 -30
  730. data/test/opal/test_keyword.rb +0 -590
  731. data/test/opal/unsupported_and_bugs.rb +0 -30
  732. /data/{CODE_OF_CONDUCT.md → CONDUCT.md} +0 -0
  733. /data/{bin → exe}/opal-build +0 -0
  734. /data/{bin → exe}/opal-mspec +0 -0
@@ -1,1366 +0,0 @@
1
- require File.expand_path('../fixtures/variables', __FILE__)
2
-
3
- # TODO: partition these specs into distinct cases based on the
4
- # real parsed forms, not the superficial code forms.
5
- describe "Basic assignment" do
6
- it "allows the rhs to be assigned to the lhs" do
7
- a = nil
8
- a.should == nil
9
- end
10
-
11
- it "assigns nil to lhs when rhs is an empty expression" do
12
- a = ()
13
- a.should be_nil
14
- end
15
-
16
- ruby_version_is "" ... "1.9" do
17
- it "assigns nil to lhs when rhs is an empty splat expression" do
18
- a = *()
19
- a.should be_nil
20
- end
21
- end
22
-
23
- ruby_version_is "1.9" do
24
- it "assigns [] to lhs when rhs is an empty splat expression" do
25
- a = *()
26
- a.should == []
27
- end
28
- end
29
-
30
- ruby_version_is "" ... "1.9" do
31
- it "allows the assignment of the rhs to the lhs using the rhs splat operator" do
32
- a = *nil; a.should == nil
33
- a = *1; a.should == 1
34
- a = *[]; a.should == nil
35
- a = *[1]; a.should == 1
36
- a = *[nil]; a.should == nil
37
- a = *[[]]; a.should == []
38
- a = *[1,2]; a.should == [1,2]
39
- end
40
- end
41
-
42
- ruby_version_is "1.9" do
43
- it "allows the assignment of the rhs to the lhs using the rhs splat operator" do
44
- a = *nil; a.should == []
45
- a = *1; a.should == [1]
46
- a = *[]; a.should == []
47
- a = *[1]; a.should == [1]
48
- a = *[nil]; a.should == [nil]
49
- a = *[[]]; a.should == [[]]
50
- a = *[1,2]; a.should == [1,2]
51
- end
52
- end
53
-
54
- ruby_version_is "" ... "1.9" do
55
- it "allows the assignment of the rhs to the lhs using the lhs splat operator" do
56
- # * = 1,2 # Valid syntax, but pretty useless! Nothing to test
57
- *a = nil; a.should == [nil]
58
- *a = 1; a.should == [1]
59
- *a = []; a.should == [[]]
60
- *a = [1]; a.should == [[1]]
61
- *a = [1,2]; a.should == [[1,2]]
62
- end
63
- end
64
-
65
- ruby_version_is "1.9" do
66
- it "allows the assignment of the rhs to the lhs using the lhs splat operator" do
67
- # * = 1,2 # Valid syntax, but pretty useless! Nothing to test
68
- *a = nil; a.should == [nil]
69
- *a = 1; a.should == [1]
70
- *a = []; a.should == []
71
- *a = [1]; a.should == [1]
72
- *a = [1,2]; a.should == [1,2]
73
- end
74
- end
75
-
76
- ruby_version_is "" ... "1.9" do
77
- it "allows the assignment of rhs to the lhs using the lhs and rhs splat operators simultaneously" do
78
- *a = *nil; a.should == [nil]
79
- *a = *1; a.should == [1]
80
- *a = *[]; a.should == []
81
- *a = *[1]; a.should == [1]
82
- *a = *[nil]; a.should == [nil]
83
- *a = *[1,2]; a.should == [1,2]
84
- end
85
- end
86
-
87
- ruby_version_is "1.9" do
88
- it "allows the assignment of rhs to the lhs using the lhs and rhs splat operators simultaneously" do
89
- *a = *nil; a.should == []
90
- *a = *1; a.should == [1]
91
- *a = *[]; a.should == []
92
- *a = *[1]; a.should == [1]
93
- *a = *[nil]; a.should == [nil]
94
- *a = *[1,2]; a.should == [1,2]
95
- end
96
- end
97
-
98
- it "sets unavailable values to nil" do
99
- ary = []
100
- a, b, c = ary
101
-
102
- a.should be_nil
103
- b.should be_nil
104
- c.should be_nil
105
- end
106
-
107
- it "sets the splat to an empty Array if there are no more values" do
108
- ary = []
109
- a, b, *c = ary
110
-
111
- a.should be_nil
112
- b.should be_nil
113
- c.should == []
114
- end
115
-
116
- it "allows multiple values to be assigned" do
117
- a,b,*c = nil; [a,b,c].should == [nil, nil, []]
118
- a,b,*c = 1; [a,b,c].should == [1, nil, []]
119
- a,b,*c = []; [a,b,c].should == [nil, nil, []]
120
- a,b,*c = [1]; [a,b,c].should == [1, nil, []]
121
- a,b,*c = [nil]; [a,b,c].should == [nil, nil, []]
122
- a,b,*c = [[]]; [a,b,c].should == [[], nil, []]
123
- a,b,*c = [1,2]; [a,b,c].should == [1,2,[]]
124
-
125
- a,b,*c = *nil; [a,b,c].should == [nil, nil, []]
126
- a,b,*c = *1; [a,b,c].should == [1, nil, []]
127
- a,b,*c = *[]; [a,b,c].should == [nil, nil, []]
128
- a,b,*c = *[1]; [a,b,c].should == [1, nil, []]
129
- a,b,*c = *[nil]; [a,b,c].should == [nil, nil, []]
130
- a,b,*c = *[[]]; [a,b,c].should == [[], nil, []]
131
- a,b,*c = *[1,2]; [a,b,c].should == [1,2,[]]
132
- end
133
-
134
- it "calls to_a on the given argument when using a splat" do
135
- a,b = *VariablesSpecs::ArrayLike.new([1,2]); [a,b].should == [1,2]
136
- end
137
-
138
- it "supports the {|r,| } form of block assignment" do
139
- f = lambda {|r,| r.should == []}
140
- f.call([], *[])
141
-
142
- f = lambda{|x,| x}
143
- f.call(42).should == 42
144
- f.call([42]).should == [42]
145
- f.call([[42]]).should == [[42]]
146
- f.call([42,55]).should == [42,55]
147
- end
148
-
149
- it "allows assignment through lambda" do
150
- f = lambda {|r,*l| r.should == []; l.should == [1]}
151
- f.call([], *[1])
152
-
153
- f = lambda{|x| x}
154
- f.call(42).should == 42
155
- f.call([42]).should == [42]
156
- f.call([[42]]).should == [[42]]
157
- f.call([42,55]).should == [42,55]
158
-
159
- f = lambda{|*x| x}
160
- f.call(42).should == [42]
161
- f.call([42]).should == [[42]]
162
- f.call([[42]]).should == [[[42]]]
163
- f.call([42,55]).should == [[42,55]]
164
- f.call(42,55).should == [42,55]
165
- end
166
-
167
- it "allows chained assignment" do
168
- (a = 1 + b = 2 + c = 4 + d = 8).should == 15
169
- d.should == 8
170
- c.should == 12
171
- b.should == 14
172
- a.should == 15
173
- end
174
- end
175
-
176
- describe "Assignment using expansion" do
177
- ruby_version_is "" ... "1.9" do
178
- it "succeeds without conversion" do
179
- *x = (1..7).to_a
180
- x.should == [[1, 2, 3, 4, 5, 6, 7]]
181
- end
182
- end
183
-
184
- ruby_version_is "1.9" do
185
- it "succeeds without conversion" do
186
- *x = (1..7).to_a
187
- x.should == [1, 2, 3, 4, 5, 6, 7]
188
- end
189
- end
190
- end
191
-
192
- describe "Basic multiple assignment" do
193
- describe "with a single RHS value" do
194
- it "does not call #to_ary on an Array instance" do
195
- x = [1, 2]
196
- x.should_not_receive(:to_ary)
197
-
198
- a, b = x
199
- a.should == 1
200
- b.should == 2
201
- end
202
-
203
- it "does not call #to_a on an Array instance" do
204
- x = [1, 2]
205
- x.should_not_receive(:to_a)
206
-
207
- a, b = x
208
- a.should == 1
209
- b.should == 2
210
- end
211
-
212
- it "does not call #to_ary on an Array subclass instance" do
213
- x = VariablesSpecs::ArraySubclass.new [1, 2]
214
- x.should_not_receive(:to_ary)
215
-
216
- a, b = x
217
- a.should == 1
218
- b.should == 2
219
- end
220
-
221
- it "does not call #to_a on an Array subclass instance" do
222
- x = VariablesSpecs::ArraySubclass.new [1, 2]
223
- x.should_not_receive(:to_a)
224
-
225
- a, b = x
226
- a.should == 1
227
- b.should == 2
228
- end
229
-
230
- it "calls #to_ary on an object" do
231
- x = mock("single rhs value for masgn")
232
- x.should_receive(:to_ary).and_return([1, 2])
233
-
234
- a, b = x
235
- a.should == 1
236
- b.should == 2
237
- end
238
-
239
- it "does not call #to_a on an object if #to_ary is not defined" do
240
- x = mock("single rhs value for masgn")
241
- x.should_not_receive(:to_a)
242
-
243
- a, b = x
244
- a.should == x
245
- b.should be_nil
246
- end
247
-
248
- it "does not call #to_a on a String" do
249
- x = "one\ntwo"
250
-
251
- a, b = x
252
- a.should == x
253
- b.should be_nil
254
- end
255
- end
256
-
257
- describe "with a splatted single RHS value" do
258
- it "does not call #to_ary on an Array instance" do
259
- x = [1, 2]
260
- x.should_not_receive(:to_ary)
261
-
262
- a, b = *x
263
- a.should == 1
264
- b.should == 2
265
- end
266
-
267
- it "does not call #to_a on an Array instance" do
268
- x = [1, 2]
269
- x.should_not_receive(:to_a)
270
-
271
- a, b = *x
272
- a.should == 1
273
- b.should == 2
274
- end
275
-
276
- it "does not call #to_ary on an Array subclass instance" do
277
- x = VariablesSpecs::ArraySubclass.new [1, 2]
278
- x.should_not_receive(:to_ary)
279
-
280
- a, b = *x
281
- a.should == 1
282
- b.should == 2
283
- end
284
-
285
- it "does not call #to_a on an Array subclass instance" do
286
- x = VariablesSpecs::ArraySubclass.new [1, 2]
287
- x.should_not_receive(:to_a)
288
-
289
- a, b = *x
290
- a.should == 1
291
- b.should == 2
292
- end
293
-
294
- it "calls #to_a on an object if #to_ary is not defined" do
295
- x = mock("single splatted rhs value for masgn")
296
- x.should_receive(:to_a).and_return([1, 2])
297
-
298
- a, b = *x
299
- a.should == 1
300
- b.should == 2
301
- end
302
-
303
- ruby_version_is ""..."1.9" do
304
- it "calls #to_ary on an object" do
305
- x = mock("single splatted rhs value for masgn")
306
- x.should_receive(:to_ary).and_return([1, 2])
307
-
308
- a, b = *x
309
- a.should == 1
310
- b.should == 2
311
- end
312
-
313
- it "calls #to_a on a String" do
314
- x = "one\ntwo"
315
-
316
- a, b = *x
317
- a.should == "one\n"
318
- b.should == "two"
319
- end
320
- end
321
-
322
- ruby_version_is "1.9" do
323
- it "does not call #to_ary on an object" do
324
- x = mock("single splatted rhs value for masgn")
325
- x.should_not_receive(:to_ary)
326
-
327
- a, b = *x
328
- a.should == x
329
- b.should be_nil
330
- end
331
-
332
- it "does not call #to_a on a String" do
333
- x = "one\ntwo"
334
-
335
- a, b = *x
336
- a.should == x
337
- b.should be_nil
338
- end
339
- end
340
- end
341
- end
342
-
343
- describe "Assigning multiple values" do
344
- it "allows parallel assignment" do
345
- a, b = 1, 2
346
- a.should == 1
347
- b.should == 2
348
-
349
- # a, = 1,2
350
- a.should == 1
351
- end
352
-
353
- it "allows safe parallel swapping" do
354
- a, b = 1, 2
355
- a, b = b, a
356
- a.should == 2
357
- b.should == 1
358
- end
359
-
360
- not_compliant_on :rubinius do
361
- it "returns the rhs values used for assignment as an array" do
362
- # x = begin; a, b, c = 1, 2, 3; end
363
- x.should == [1,2,3]
364
- end
365
- end
366
-
367
- ruby_version_is "" ... "1.9" do
368
- it "wraps a single value in an Array" do
369
- *a = 1
370
- a.should == [1]
371
-
372
- b = [1]
373
- *a = b
374
- a.should == [b]
375
- end
376
- end
377
-
378
- ruby_version_is "1.9" do
379
- it "wraps a single value in an Array if it's not already one" do
380
- *a = 1
381
- a.should == [1]
382
-
383
- b = [1]
384
- *a = b
385
- a.should == b
386
- end
387
- end
388
-
389
- it "evaluates rhs left-to-right" do
390
- a = VariablesSpecs::ParAsgn.new
391
- d, e ,f = a.inc, a.inc, a.inc
392
- d.should == 1
393
- e.should == 2
394
- f.should == 3
395
- end
396
-
397
- it "supports parallel assignment to lhs args via object.method=" do
398
- a = VariablesSpecs::ParAsgn.new
399
- a.x, b = 1, 2
400
-
401
- a.x.should == 1
402
- b.should == 2
403
-
404
- c = VariablesSpecs::ParAsgn.new
405
- c.x, a.x = a.x, b
406
-
407
- c.x.should == 1
408
- a.x.should == 2
409
- end
410
-
411
- it "supports parallel assignment to lhs args using []=" do
412
- a = [1,2,3]
413
- a[3], b = 4,5
414
-
415
- a.should == [1,2,3,4]
416
- b.should == 5
417
- end
418
-
419
- it "bundles remaining values to an array when using the splat operator" do
420
- a, *b = 1, 2, 3
421
- a.should == 1
422
- b.should == [2, 3]
423
-
424
- *a = 1, 2, 3
425
- a.should == [1, 2, 3]
426
-
427
- *a = 4
428
- a.should == [4]
429
-
430
- *a = nil
431
- a.should == [nil]
432
-
433
- a, = *[1]
434
- a.should == 1
435
- end
436
-
437
- ruby_version_is ""..."1.9" do
438
- it "calls #to_ary on rhs arg if rhs has only a single arg" do
439
- x = VariablesSpecs::ParAsgn.new
440
- a,b,c = x
441
- a.should == 1
442
- b.should == 2
443
- c.should == 3
444
-
445
- a,b,c = x,5
446
- a.should == x
447
- b.should == 5
448
- c.should == nil
449
-
450
- a,b,c = 5,x
451
- a.should == 5
452
- b.should == x
453
- c.should == nil
454
-
455
- a,b,*c = x,5
456
- a.should == x
457
- b.should == 5
458
- c.should == []
459
-
460
- # a,(b,c) = 5,x
461
- a.should == 5
462
- b.should == 1
463
- c.should == 2
464
-
465
- # a,(b,*c) = 5,x
466
- a.should == 5
467
- b.should == 1
468
- c.should == [2,3,4]
469
-
470
- # a,(b,(*c)) = 5,x
471
- a.should == 5
472
- b.should == 1
473
- c.should == [2]
474
-
475
- # a,(b,(*c),(*d)) = 5,x
476
- a.should == 5
477
- b.should == 1
478
- c.should == [2]
479
- d.should == [3]
480
-
481
- # a,(b,(*c),(d,*e)) = 5,x
482
- a.should == 5
483
- b.should == 1
484
- c.should == [2]
485
- d.should == 3
486
- e.should == []
487
- end
488
- end
489
-
490
- ruby_version_is "1.9" do
491
- it "calls #to_ary on RHS arg if the corresponding LHS var is a splat" do
492
- x = VariablesSpecs::ParAsgn.new
493
-
494
- # a,(*b),c = 5,x
495
- a.should == 5
496
- b.should == x.to_ary
497
- c.should == nil
498
- end
499
- end
500
-
501
- ruby_version_is ""..."1.9" do
502
- it "doen't call #to_ary on RHS arg when the corresponding LHS var is a splat" do
503
- x = VariablesSpecs::ParAsgn.new
504
-
505
- # a,(*b),c = 5,x
506
- a.should == 5
507
- b.should == [x]
508
- c.should == nil
509
- end
510
- end
511
-
512
- it "allows complex parallel assignment" do
513
- # a, (b, c), d = 1, [2, 3], 4
514
- a.should == 1
515
- b.should == 2
516
- c.should == 3
517
- d.should == 4
518
-
519
- # x, (y, z) = 1, 2, 3
520
- [x,y,z].should == [1,2,nil]
521
- # x, (y, z) = 1, [2,3]
522
- [x,y,z].should == [1,2,3]
523
- # x, (y, z) = 1, [2]
524
- [x,y,z].should == [1,2,nil]
525
-
526
- # a,(b,c,*d),(e,f),*g = 0,[1,2,3,4],[5,6],7,8
527
- a.should == 0
528
- b.should == 1
529
- c.should == 2
530
- d.should == [3,4]
531
- e.should == 5
532
- f.should == 6
533
- g.should == [7,8]
534
-
535
- x = VariablesSpecs::ParAsgn.new
536
- # a,(b,c,*d),(e,f),*g = 0,x,[5,6],7,8
537
- a.should == 0
538
- b.should == 1
539
- c.should == 2
540
- d.should == [3,4]
541
- e.should == 5
542
- f.should == 6
543
- g.should == [7,8]
544
- end
545
-
546
- it "allows a lhs arg to be used in another lhs args parallel assignment" do
547
- c = [4,5,6]
548
- a,b,c[a] = 1,2,3
549
- a.should == 1
550
- b.should == 2
551
- c.should == [4,3,6]
552
-
553
- c[a],b,a = 7,8,9
554
- a.should == 9
555
- b.should == 8
556
- c.should == [4,7,6]
557
- end
558
- end
559
-
560
- describe "Conditional assignment" do
561
- it "assigns the lhs if previously unassigned" do
562
- a=[]
563
- a[0] ||= "bar"
564
- a[0].should == "bar"
565
-
566
- h={}
567
- h["foo"] ||= "bar"
568
- h["foo"].should == "bar"
569
-
570
- h["foo".to_sym] ||= "bar"
571
- h["foo".to_sym].should == "bar"
572
-
573
- aa = 5
574
- aa ||= 25
575
- aa.should == 5
576
-
577
- bb ||= 25
578
- bb.should == 25
579
-
580
- cc &&=33
581
- cc.should == nil
582
-
583
- cc = 5
584
- cc &&=44
585
- cc.should == 44
586
- end
587
-
588
- it "checks for class variable definition before fetching its value" do
589
- class VariableSpecCVarSpec
590
- @@cvarspec ||= 5
591
- @@cvarspec.should == 5
592
- end
593
- end
594
- end
595
-
596
- describe "Unconditional operator assignment 'var op= expr'" do
597
- it "is equivalent to 'var = var op expr'" do
598
- x = 13
599
- (x += 5).should == 18
600
- x.should == 18
601
-
602
- x = 17
603
- (x -= 11).should == 6
604
- x.should == 6
605
-
606
- x = 2
607
- (x *= 5).should == 10
608
- x.should == 10
609
-
610
- x = 36
611
- (x /= 9).should == 4
612
- x.should == 4
613
-
614
- x = 23
615
- (x %= 5).should == 3
616
- x.should == 3
617
- (x %= 3).should == 0
618
- x.should == 0
619
-
620
- x = 2
621
- (x **= 3).should == 8
622
- x.should == 8
623
-
624
- x = 4
625
- (x |= 3).should == 7
626
- x.should == 7
627
- (x |= 4).should == 7
628
- x.should == 7
629
-
630
- x = 6
631
- (x &= 3).should == 2
632
- x.should == 2
633
- (x &= 4).should == 0
634
- x.should == 0
635
-
636
- # XOR
637
- x = 2
638
- (x ^= 3).should == 1
639
- x.should == 1
640
- (x ^= 4).should == 5
641
- x.should == 5
642
-
643
- # Bit-shift left
644
- x = 17
645
- (x <<= 3).should == 136
646
- x.should == 136
647
-
648
- # Bit-shift right
649
- x = 5
650
- (x >>= 1).should == 2
651
- x.should == 2
652
- end
653
- end
654
-
655
- describe "Conditional operator assignment 'var op= expr'" do
656
- it "assigns the lhs if its truthiness is false for ||, true for &&" do
657
- x = nil
658
- (x ||= 17).should == 17
659
- x.should == 17
660
- (x ||= 2).should == 17
661
- x.should == 17
662
-
663
- x = false
664
- (x &&= true).should == false
665
- x.should == false
666
- (x &&= false).should == false
667
- x.should == false
668
- x = true
669
- (x &&= true).should == true
670
- x.should == true
671
- (x &&= false).should == false
672
- x.should == false
673
- end
674
-
675
- it "may not assign at all, depending on the truthiness of lhs" do
676
- Object.new.instance_eval do
677
- @falsey = false
678
- @truthy = true
679
- freeze
680
- # lambda{ @truthy ||= 42 }.should_not raise_error
681
- # lambda{ @falsey &&= 42 }.should_not raise_error
682
- end
683
- end
684
-
685
- it "uses short-circuit arg evaluation" do
686
- x = 8
687
- y = VariablesSpecs::OpAsgn.new
688
- (x ||= y.do_side_effect).should == 8
689
- y.side_effect.should == nil
690
-
691
- x = nil
692
- (x &&= y.do_side_effect).should == nil
693
- y.side_effect.should == nil
694
-
695
- y.a = 5
696
- (x ||= y.do_side_effect).should == 5
697
- y.side_effect.should == true
698
- end
699
- end
700
-
701
- describe "Unconditional operator assignment 'obj.meth op= expr'" do
702
- it "is equivalent to 'obj.meth = obj.meth op expr'" do
703
- @x = VariablesSpecs::OpAsgn.new
704
- @x.a = 13
705
- (@x.a += 5).should == 18
706
- @x.a.should == 18
707
-
708
- @x.a = 17
709
- (@x.a -= 11).should == 6
710
- @x.a.should == 6
711
-
712
- @x.a = 2
713
- (@x.a *= 5).should == 10
714
- @x.a.should == 10
715
-
716
- @x.a = 36
717
- (@x.a /= 9).should == 4
718
- @x.a.should == 4
719
-
720
- @x.a = 23
721
- (@x.a %= 5).should == 3
722
- @x.a.should == 3
723
- (@x.a %= 3).should == 0
724
- @x.a.should == 0
725
-
726
- @x.a = 2
727
- (@x.a **= 3).should == 8
728
- @x.a.should == 8
729
-
730
- @x.a = 4
731
- (@x.a |= 3).should == 7
732
- @x.a.should == 7
733
- (@x.a |= 4).should == 7
734
- @x.a.should == 7
735
-
736
- @x.a = 6
737
- (@x.a &= 3).should == 2
738
- @x.a.should == 2
739
- (@x.a &= 4).should == 0
740
- @x.a.should == 0
741
-
742
- # XOR
743
- @x.a = 2
744
- (@x.a ^= 3).should == 1
745
- @x.a.should == 1
746
- (@x.a ^= 4).should == 5
747
- @x.a.should == 5
748
-
749
- @x.a = 17
750
- (@x.a <<= 3).should == 136
751
- @x.a.should == 136
752
-
753
- @x.a = 5
754
- (@x.a >>= 1).should == 2
755
- @x.a.should == 2
756
- end
757
- end
758
-
759
- describe "Conditional operator assignment 'obj.meth op= expr'" do
760
- it "is equivalent to 'obj.meth op obj.meth = expr'" do
761
- @x = VariablesSpecs::OpAsgn.new
762
- @x.a = nil
763
- (@x.a ||= 17).should == 17
764
- @x.a.should == 17
765
- (@x.a ||= 2).should == 17
766
- @x.a.should == 17
767
-
768
- @x.a = false
769
- (@x.a &&= true).should == false
770
- @x.a.should == false
771
- (@x.a &&= false).should == false
772
- @x.a.should == false
773
- @x.a = true
774
- (@x.a &&= true).should == true
775
- @x.a.should == true
776
- (@x.a &&= false).should == false
777
- @x.a.should == false
778
- end
779
-
780
- it "may not assign at all, depending on the truthiness of lhs" do
781
- m = mock("object")
782
- m.should_receive(:foo).and_return(:truthy)
783
- m.should_not_receive(:foo=)
784
- # m.foo ||= 42
785
-
786
- m.should_receive(:bar).and_return(false)
787
- m.should_not_receive(:bar=)
788
- # m.bar &&= 42
789
- end
790
-
791
- it "uses short-circuit arg evaluation" do
792
- x = 8
793
- y = VariablesSpecs::OpAsgn.new
794
- (x ||= y.do_side_effect).should == 8
795
- y.side_effect.should == nil
796
-
797
- x = nil
798
- (x &&= y.do_side_effect).should == nil
799
- y.side_effect.should == nil
800
-
801
- y.a = 5
802
- (x ||= y.do_side_effect).should == 5
803
- y.side_effect.should == true
804
- end
805
- end
806
-
807
- describe "Operator assignment 'obj.meth op= expr'" do
808
- it "evaluates lhs one time" do
809
- x = VariablesSpecs::OpAsgn.new
810
- x.a = 5
811
- (x.do_more_side_effects.a += 5).should == 15
812
- x.a.should == 15
813
-
814
- x.a = 5
815
- (x.do_more_side_effects.a -= 4).should == 6
816
- x.a.should == 6
817
-
818
- x.a = 2
819
- (x.do_more_side_effects.a *= 5).should == 35
820
- x.a.should == 35
821
-
822
- x.a = 31
823
- (x.do_more_side_effects.a /= 9).should == 4
824
- x.a.should == 4
825
-
826
- x.a = 18
827
- (x.do_more_side_effects.a %= 5).should == 3
828
- x.a.should == 3
829
-
830
- x.a = 0
831
- (x.do_more_side_effects.a **= 3).should == 125
832
- x.a.should == 125
833
-
834
- x.a = -1
835
- (x.do_more_side_effects.a |= 3).should == 7
836
- x.a.should == 7
837
-
838
- x.a = 1
839
- (x.do_more_side_effects.a &= 3).should == 2
840
- x.a.should == 2
841
-
842
- # XOR
843
- x.a = -3
844
- (x.do_more_side_effects.a ^= 3).should == 1
845
- x.a.should == 1
846
-
847
- x.a = 12
848
- (x.do_more_side_effects.a <<= 3).should == 136
849
- x.a.should == 136
850
-
851
- x.a = 0
852
- (x.do_more_side_effects.a >>= 1).should == 2
853
- x.a.should == 2
854
-
855
- x.a = nil
856
- x.b = 0
857
- (x.do_bool_side_effects.a ||= 17).should == 17
858
- x.a.should == 17
859
- x.b.should == 1
860
-
861
- x.a = false
862
- x.b = 0
863
- (x.do_bool_side_effects.a &&= true).should == false
864
- x.a.should == false
865
- x.b.should == 1
866
- (x.do_bool_side_effects.a &&= false).should == false
867
- x.a.should == false
868
- x.b.should == 2
869
- x.a = true
870
- x.b = 0
871
- (x.do_bool_side_effects.a &&= true).should == true
872
- x.a.should == true
873
- x.b.should == 1
874
- (x.do_bool_side_effects.a &&= false).should == false
875
- x.a.should == false
876
- x.b.should == 2
877
- end
878
- end
879
-
880
- describe "Unconditional operator assignment 'obj[idx] op= expr'" do
881
- it "is equivalent to 'obj[idx] = obj[idx] op expr'" do
882
- # x = [2,13,7]
883
- # (x[1] += 5).should == 18
884
- # x.should == [2,18,7]
885
-
886
- # x = [17,6]
887
- # (x[0] -= 11).should == 6
888
- # x.should == [6,6]
889
-
890
- # x = [nil,2,28]
891
- # (x[2] *= 2).should == 56
892
- # x.should == [nil,2,56]
893
-
894
- # x = [3,9,36]
895
- # (x[2] /= x[1]).should == 4
896
- # x.should == [3,9,4]
897
-
898
- # x = [23,4]
899
- # (x[0] %= 5).should == 3
900
- # x.should == [3,4]
901
- # (x[0] %= 3).should == 0
902
- # x.should == [0,4]
903
-
904
- # x = [1,2,3]
905
- # (x[1] **= 3).should == 8
906
- # x.should == [1,8,3]
907
-
908
- # x = [4,5,nil]
909
- # (x[0] |= 3).should == 7
910
- # x.should == [7,5,nil]
911
- # (x[0] |= 4).should == 7
912
- # x.should == [7,5,nil]
913
-
914
- # x = [3,6,9]
915
- # (x[1] &= 3).should == 2
916
- # x.should == [3,2,9]
917
- # (x[1] &= 4).should == 0
918
- # x.should == [3,0,9]
919
-
920
- # # XOR
921
- # x = [0,1,2]
922
- # (x[2] ^= 3).should == 1
923
- # x.should == [0,1,1]
924
- # (x[2] ^= 4).should == 5
925
- # x.should == [0,1,5]
926
-
927
- # x = [17]
928
- # (x[0] <<= 3).should == 136
929
- # x.should == [136]
930
-
931
- # x = [nil,5,8]
932
- # (x[1] >>= 1).should == 2
933
- # x.should == [nil,2,8]
934
- end
935
- end
936
-
937
- describe "Conditional operator assignment 'obj[idx] op= expr'" do
938
- it "is equivalent to 'obj[idx] op obj[idx] = expr'" do
939
- # x = [1,nil,12]
940
- # (x[1] ||= 17).should == 17
941
- # x.should == [1,17,12]
942
- # (x[1] ||= 2).should == 17
943
- # x.should == [1,17,12]
944
-
945
- # x = [true, false, false]
946
- # (x[1] &&= true).should == false
947
- # x.should == [true, false, false]
948
- # (x[1] &&= false).should == false
949
- # x.should == [true, false, false]
950
- # (x[0] &&= true).should == true
951
- # x.should == [true, false, false]
952
- # (x[0] &&= false).should == false
953
- # x.should == [false, false, false]
954
- end
955
-
956
- it "may not assign at all, depending on the truthiness of lhs" do
957
- # m = mock("object")
958
- # m.should_receive(:[]).and_return(:truthy)
959
- # m.should_not_receive(:[]=)
960
- # m[:foo] ||= 42
961
-
962
- # m = mock("object")
963
- # m.should_receive(:[]).and_return(false)
964
- # m.should_not_receive(:[]=)
965
- # m[:bar] &&= 42
966
- end
967
-
968
- it "uses short-circuit arg evaluation" do
969
- # x = 8
970
- # y = VariablesSpecs::OpAsgn.new
971
- # (x ||= y.do_side_effect).should == 8
972
- # y.side_effect.should == nil
973
-
974
- # x = nil
975
- # (x &&= y.do_side_effect).should == nil
976
- # y.side_effect.should == nil
977
-
978
- # y.a = 5
979
- # (x ||= y.do_side_effect).should == 5
980
- # y.side_effect.should == true
981
- end
982
- end
983
-
984
- describe "Operator assignment 'obj[idx] op= expr'" do
985
- class ArrayWithDefaultIndex < Array
986
- def [](index=nil)
987
- super(index || 0)
988
- end
989
-
990
- def []=(first_arg, second_arg=nil)
991
- if second_arg
992
- index = fist_arg
993
- value = second_arg
994
- else
995
- index = 0
996
- value = first_arg
997
- end
998
-
999
- super(index, value)
1000
- end
1001
- end
1002
-
1003
- it "handles empty index (idx) arguments" do
1004
- # array = ArrayWithDefaultIndex.new
1005
- # array << 1
1006
- # (array[] += 5).should == 6
1007
- end
1008
-
1009
- it "handles complex index (idx) arguments" do
1010
- # x = [1,2,3,4]
1011
- # (x[0,2] += [5]).should == [1,2,5]
1012
- # x.should == [1,2,5,3,4]
1013
- # (x[0,2] += [3,4]).should == [1,2,3,4]
1014
- # x.should == [1,2,3,4,5,3,4]
1015
-
1016
- # (x[2..3] += [8]).should == [3,4,8]
1017
- # x.should == [1,2,3,4,8,5,3,4]
1018
-
1019
- # y = VariablesSpecs::OpAsgn.new
1020
- # y.a = 1
1021
- # (x[y.do_side_effect] *= 2).should == 4
1022
- # x.should == [1,4,3,4,8,5,3,4]
1023
-
1024
- # h = {'key1' => 23, 'key2' => 'val'}
1025
- # (h['key1'] %= 5).should == 3
1026
- # (h['key2'] += 'ue').should == 'value'
1027
- # h.should == {'key1' => 3, 'key2' => 'value'}
1028
- end
1029
-
1030
- it "handles empty splat index (idx) arguments" do
1031
- # array = ArrayWithDefaultIndex.new
1032
- # array << 5
1033
- # splat_index = []
1034
-
1035
- # (array[*splat_index] += 5).should == 10
1036
- # array.should== [10]
1037
- end
1038
-
1039
- it "handles single splat index (idx) arguments" do
1040
- # array = [1,2,3,4]
1041
- # splat_index = [0]
1042
-
1043
- # (array[*splat_index] += 5).should == 6
1044
- # array.should == [6,2,3,4]
1045
- end
1046
-
1047
- it "handles multiple splat index (idx) arguments" do
1048
- # array = [1,2,3,4]
1049
- # splat_index = [0,2]
1050
-
1051
- # (array[*splat_index] += [5]).should == [1,2,5]
1052
- # array.should == [1,2,5,3,4]
1053
- end
1054
-
1055
- it "handles splat index (idx) arguments with normal arguments" do
1056
- # array = [1,2,3,4]
1057
- # splat_index = [2]
1058
-
1059
- # (array[0, *splat_index] += [5]).should == [1,2,5]
1060
- # array.should == [1,2,5,3,4]
1061
- end
1062
-
1063
- # This example fails on 1.9 because of bug #2050
1064
- it "returns result of rhs not result of []=" do
1065
- # a = VariablesSpecs::Hashalike.new
1066
-
1067
- # (a[123] = 2).should == 2
1068
- # (a[123] += 2).should == 125
1069
- # (a[123] -= 2).should == 121
1070
- # (a[123] *= 2).should == 246
1071
- # # Guard against the Mathn library
1072
- # # TODO: Make these specs not rely on specific behaviour / result values
1073
- # # by using mocks.
1074
- # conflicts_with :Prime do
1075
- # (a[123] /= 2).should == 61
1076
- # end
1077
- # (a[123] %= 2).should == 1
1078
- # (a[123] **= 2).should == 15129
1079
- # (a[123] |= 2).should == 123
1080
- # (a[123] &= 2).should == 2
1081
- # (a[123] ^= 2).should == 121
1082
- # (a[123] <<= 2).should == 492
1083
- # (a[123] >>= 2).should == 30
1084
- # (a[123] ||= 2).should == 123
1085
- # (a[nil] ||= 2).should == 2
1086
- # (a[123] &&= 2).should == 2
1087
- # (a[nil] &&= 2).should == nil
1088
- end
1089
- end
1090
-
1091
- describe "Single assignment" do
1092
- it "Assignment does not modify the lhs, it reassigns its reference" do
1093
- a = 'Foobar'
1094
- b = a
1095
- b = 'Bazquux'
1096
- a.should == 'Foobar'
1097
- b.should == 'Bazquux'
1098
- end
1099
-
1100
- it "Assignment does not copy the object being assigned, just creates a new reference to it" do
1101
- a = []
1102
- b = a
1103
- b << 1
1104
- a.should == [1]
1105
- end
1106
-
1107
- it "If rhs has multiple arguments, lhs becomes an Array of them" do
1108
- a = 1, 2, 3
1109
- a.should == [1, 2, 3]
1110
-
1111
- a = 1, (), 3
1112
- a.should == [1, nil, 3]
1113
- end
1114
- end
1115
-
1116
- describe "Multiple assignment without grouping or splatting" do
1117
- it "An equal number of arguments on lhs and rhs assigns positionally" do
1118
- a, b, c, d = 1, 2, 3, 4
1119
- a.should == 1
1120
- b.should == 2
1121
- c.should == 3
1122
- d.should == 4
1123
- end
1124
-
1125
- it "If rhs has too few arguments, the missing ones on lhs are assigned nil" do
1126
- a, b, c = 1, 2
1127
- a.should == 1
1128
- b.should == 2
1129
- c.should == nil
1130
- end
1131
-
1132
- it "If rhs has too many arguments, the extra ones are silently not assigned anywhere" do
1133
- a, b = 1, 2, 3
1134
- a.should == 1
1135
- b.should == 2
1136
- end
1137
-
1138
- it "The assignments are done in parallel so that lhs and rhs are independent of eachother without copying" do
1139
- o_of_a, o_of_b = mock('a'), mock('b')
1140
- a, b = o_of_a, o_of_b
1141
- a, b = b, a
1142
- a.should equal(o_of_b)
1143
- b.should equal(o_of_a)
1144
- end
1145
- end
1146
-
1147
- describe "Multiple assignments with splats" do
1148
- ruby_version_is ""..."1.9" do
1149
- it "* on the lhs has to be applied to the last parameter" do
1150
- lambda { eval 'a, *b, c = 1, 2, 3' }.should raise_error(SyntaxError)
1151
- end
1152
- end
1153
-
1154
- it "* on the lhs collects all parameters from its position onwards as an Array or an empty Array" do
1155
- a, *b = 1, 2
1156
- c, *d = 1
1157
- e, *f = 1, 2, 3
1158
- g, *h = 1, [2, 3]
1159
- *i = 1, [2,3]
1160
- *k = 1,2,3
1161
-
1162
- a.should == 1
1163
- b.should == [2]
1164
- c.should == 1
1165
- d.should == []
1166
- e.should == 1
1167
- f.should == [2, 3]
1168
- g.should == 1
1169
- h.should == [[2, 3]]
1170
- i.should == [1, [2, 3]]
1171
- k.should == [1,2,3]
1172
- end
1173
-
1174
- ruby_version_is ""..."1.9" do
1175
- it "* on the LHS returns the Array on the RHS enclosed in an Array" do
1176
- *j = [1,2,3]
1177
- j.should == [[1,2,3]]
1178
- end
1179
- end
1180
-
1181
- ruby_version_is "1.9" do
1182
- it "* on the LHS returns the Array on the RHS without enclosing it in an Array" do
1183
- *j = [1,2,3]
1184
- j.should == [1,2,3]
1185
- end
1186
- end
1187
- end
1188
-
1189
- describe "Multiple assignments with grouping" do
1190
- it "A group on the lhs is considered one position and treats its corresponding rhs position like an Array" do
1191
- # a, (b, c), d = 1, 2, 3, 4
1192
- # e, (f, g), h = 1, [2, 3, 4], 5
1193
- # i, (j, k), l = 1, 2, 3
1194
- a.should == 1
1195
- b.should == 2
1196
- c.should == nil
1197
- d.should == 3
1198
- e.should == 1
1199
- f.should == 2
1200
- g.should == 3
1201
- h.should == 5
1202
- i.should == 1
1203
- j.should == 2
1204
- k.should == nil
1205
- l.should == 3
1206
- end
1207
-
1208
- it "supports multiple levels of nested groupings" do
1209
- # a,(b,(c,d)) = 1,[2,[3,4]]
1210
- a.should == 1
1211
- b.should == 2
1212
- c.should == 3
1213
- d.should == 4
1214
-
1215
- # a,(b,(c,d)) = [1,[2,[3,4]]]
1216
- a.should == 1
1217
- b.should == 2
1218
- c.should == 3
1219
- d.should == 4
1220
-
1221
- x = [1,[2,[3,4]]]
1222
- # a,(b,(c,d)) = x
1223
- a.should == 1
1224
- b.should == 2
1225
- c.should == 3
1226
- d.should == 4
1227
- end
1228
-
1229
- it "rhs cannot use parameter grouping, it is a syntax error" do
1230
- lambda { eval '(a, b) = (1, 2)' }.should raise_error(SyntaxError)
1231
- end
1232
- end
1233
-
1234
- # TODO: merge the following two describe blocks and partition the specs
1235
- # into distinct cases.
1236
- describe "Multiple assignment" do
1237
- not_compliant_on :rubinius do
1238
- it "has the proper return value" do
1239
- # (a,b,*c = *[5,6,7,8,9,10]).should == [5,6,7,8,9,10]
1240
- # (d,e = VariablesSpecs.reverse_foo(4,3)).should == [3,4]
1241
- # (f,g,h = VariablesSpecs.reverse_foo(6,7)).should == [7,6]
1242
- # (i,*j = *[5,6,7]).should == [5,6,7]
1243
- # (k,*l = [5,6,7]).should == [5,6,7]
1244
- a.should == 5
1245
- b.should == 6
1246
- c.should == [7,8,9,10]
1247
- d.should == 3
1248
- e.should == 4
1249
- f.should == 7
1250
- g.should == 6
1251
- h.should == nil
1252
- i.should == 5
1253
- j.should == [6,7]
1254
- k.should == 5
1255
- l.should == [6,7]
1256
- end
1257
- end
1258
-
1259
- # TODO: write Rubinius versions
1260
- end
1261
-
1262
- # For now, masgn is deliberately non-compliant with MRI wrt the return val from an masgn.
1263
- # Rubinius returns true as the result of the assignment, but MRI returns an array
1264
- # containing all the elements on the rhs. As this result is never used, the cost
1265
- # of creating and then discarding this array is avoided
1266
- describe "Multiple assignment, array-style" do
1267
- not_compliant_on :rubinius do
1268
- it "returns an array of all rhs values" do
1269
- (a,b = 5,6,7).should == [5,6,7]
1270
- a.should == 5
1271
- b.should == 6
1272
-
1273
- (c,d,*e = 99,8).should == [99,8]
1274
- c.should == 99
1275
- d.should == 8
1276
- e.should == []
1277
-
1278
- (f,g,h = 99,8).should == [99,8]
1279
- f.should == 99
1280
- g.should == 8
1281
- h.should == nil
1282
- end
1283
- end
1284
-
1285
- deviates_on :rubinius do
1286
- it "returns true" do
1287
- (a,b = 5,6,7).should == true
1288
- a.should == 5
1289
- b.should == 6
1290
-
1291
- (c,d,*e = 99,8).should == true
1292
- c.should == 99
1293
- d.should == 8
1294
- e.should == []
1295
-
1296
- (f,g,h = 99,8).should == true
1297
- f.should == 99
1298
- g.should == 8
1299
- h.should == nil
1300
- end
1301
- end
1302
- end
1303
-
1304
- describe "Scope of variables" do
1305
- it "instance variables not overwritten by local variable in each block" do
1306
-
1307
- class ScopeVariables
1308
- attr_accessor :v
1309
-
1310
- def initialize
1311
- @v = ['a', 'b', 'c']
1312
- end
1313
-
1314
- def check_access
1315
- v.should == ['a', 'b', 'c']
1316
- self.v.should == ['a', 'b', 'c']
1317
- end
1318
-
1319
- def check_local_variable
1320
- v = nil
1321
- self.v.should == ['a', 'b', 'c']
1322
- end
1323
-
1324
- def check_each_block
1325
- self.v.each { |v|
1326
- # Don't actually do anything
1327
- }
1328
- self.v.should == ['a', 'b', 'c']
1329
- v.should == ['a', 'b', 'c']
1330
- self.v.object_id.should == v.object_id
1331
- end
1332
- end # Class ScopeVariables
1333
-
1334
- instance = ScopeVariables.new()
1335
- instance.check_access
1336
- instance.check_local_variable
1337
- instance.check_each_block
1338
- end
1339
- end
1340
-
1341
- describe "A local variable in a #define_method scope" do
1342
- ruby_bug '#1322', '1.8.7.228' do
1343
- it "shares the lexical scope containing the call to #define_method" do
1344
- # We need a new scope to reproduce this bug.
1345
- handle = mock("handle for containing scope method")
1346
-
1347
- def handle.produce_bug
1348
- local = 1
1349
-
1350
- klass = Class.new
1351
- klass.send :define_method, :set_local do |arg|
1352
- lambda { local = 2 }.call
1353
- end
1354
-
1355
- # We must call with at least one argument to reproduce the bug.
1356
- klass.new.set_local(nil)
1357
-
1358
- local
1359
- end
1360
-
1361
- handle.produce_bug.should == 2
1362
- end
1363
- end
1364
- end
1365
-
1366
- language_version __FILE__, "variables"