opal-cj 0.7.0.beta1

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 (470) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +10 -0
  3. data/.gitmodules +27 -0
  4. data/.rspec +3 -0
  5. data/.spectator +2 -0
  6. data/.spectator-mspec +3 -0
  7. data/.travis.yml +45 -0
  8. data/CHANGELOG.md +406 -0
  9. data/CONTRIBUTING.md +41 -0
  10. data/Gemfile +27 -0
  11. data/Guardfile +77 -0
  12. data/LICENSE +19 -0
  13. data/README.md +178 -0
  14. data/Rakefile +116 -0
  15. data/benchmarks/operators.rb +11 -0
  16. data/bin/opal +22 -0
  17. data/bin/opal-build +77 -0
  18. data/bin/opal-mspec +10 -0
  19. data/bin/opal-repl +72 -0
  20. data/config.ru +14 -0
  21. data/examples/rack/Gemfile +3 -0
  22. data/examples/rack/app/application.rb +13 -0
  23. data/examples/rack/app/user.rb +21 -0
  24. data/examples/rack/config.ru +7 -0
  25. data/examples/rack/index.html.erb +10 -0
  26. data/examples/sinatra/Gemfile +4 -0
  27. data/examples/sinatra/app/application.rb +7 -0
  28. data/examples/sinatra/config.ru +28 -0
  29. data/lib/mspec/opal/main.rb.erb +9 -0
  30. data/lib/mspec/opal/rake_task.rb +278 -0
  31. data/lib/mspec/opal/runner.rb +206 -0
  32. data/lib/mspec/opal/sprockets.js +57 -0
  33. data/lib/opal.rb +11 -0
  34. data/lib/opal/builder.rb +135 -0
  35. data/lib/opal/builder_processors.rb +165 -0
  36. data/lib/opal/cli.rb +145 -0
  37. data/lib/opal/cli_options.rb +149 -0
  38. data/lib/opal/cli_runners.rb +10 -0
  39. data/lib/opal/cli_runners/nodejs.rb +56 -0
  40. data/lib/opal/cli_runners/phantom.js +35 -0
  41. data/lib/opal/cli_runners/phantomjs.rb +28 -0
  42. data/lib/opal/cli_runners/server.rb +54 -0
  43. data/lib/opal/compiler.rb +307 -0
  44. data/lib/opal/erb.rb +64 -0
  45. data/lib/opal/fragment.rb +41 -0
  46. data/lib/opal/hike_path_finder.rb +18 -0
  47. data/lib/opal/nodes.rb +26 -0
  48. data/lib/opal/nodes/arglist.rb +56 -0
  49. data/lib/opal/nodes/array.rb +54 -0
  50. data/lib/opal/nodes/base.rb +151 -0
  51. data/lib/opal/nodes/call.rb +283 -0
  52. data/lib/opal/nodes/call_special.rb +178 -0
  53. data/lib/opal/nodes/case.rb +96 -0
  54. data/lib/opal/nodes/class.rb +42 -0
  55. data/lib/opal/nodes/constants.rb +78 -0
  56. data/lib/opal/nodes/def.rb +157 -0
  57. data/lib/opal/nodes/defined.rb +113 -0
  58. data/lib/opal/nodes/definitions.rb +168 -0
  59. data/lib/opal/nodes/for.rb +35 -0
  60. data/lib/opal/nodes/hash.rb +67 -0
  61. data/lib/opal/nodes/helpers.rb +114 -0
  62. data/lib/opal/nodes/if.rb +67 -0
  63. data/lib/opal/nodes/iter.rb +131 -0
  64. data/lib/opal/nodes/literal.rb +230 -0
  65. data/lib/opal/nodes/logic.rb +217 -0
  66. data/lib/opal/nodes/masgn.rb +62 -0
  67. data/lib/opal/nodes/module.rb +46 -0
  68. data/lib/opal/nodes/rescue.rb +135 -0
  69. data/lib/opal/nodes/runtime_helpers.rb +45 -0
  70. data/lib/opal/nodes/scope.rb +293 -0
  71. data/lib/opal/nodes/singleton_class.rb +25 -0
  72. data/lib/opal/nodes/super.rb +97 -0
  73. data/lib/opal/nodes/top.rb +101 -0
  74. data/lib/opal/nodes/variables.rb +158 -0
  75. data/lib/opal/nodes/while.rb +65 -0
  76. data/lib/opal/nodes/yield.rb +95 -0
  77. data/lib/opal/parser.rb +658 -0
  78. data/lib/opal/parser/grammar.rb +5452 -0
  79. data/lib/opal/parser/grammar.y +1684 -0
  80. data/lib/opal/parser/keywords.rb +66 -0
  81. data/lib/opal/parser/lexer.rb +1208 -0
  82. data/lib/opal/parser/parser_scope.rb +25 -0
  83. data/lib/opal/parser/sexp.rb +75 -0
  84. data/lib/opal/path_reader.rb +28 -0
  85. data/lib/opal/paths.rb +38 -0
  86. data/lib/opal/source_map.rb +70 -0
  87. data/lib/opal/sprockets.rb +4 -0
  88. data/lib/opal/sprockets/cache_key_fix.rb +17 -0
  89. data/lib/opal/sprockets/environment.rb +37 -0
  90. data/lib/opal/sprockets/erb.rb +37 -0
  91. data/lib/opal/sprockets/path_reader.rb +34 -0
  92. data/lib/opal/sprockets/processor.rb +124 -0
  93. data/lib/opal/sprockets/server.rb +180 -0
  94. data/lib/opal/util.rb +64 -0
  95. data/lib/opal/version.rb +3 -0
  96. data/opal.gemspec +36 -0
  97. data/opal/README.md +6 -0
  98. data/opal/corelib/array.rb +1556 -0
  99. data/opal/corelib/array/inheritance.rb +113 -0
  100. data/opal/corelib/basic_object.rb +73 -0
  101. data/opal/corelib/boolean.rb +41 -0
  102. data/opal/corelib/class.rb +55 -0
  103. data/opal/corelib/comparable.rb +56 -0
  104. data/opal/corelib/complex.rb +3 -0
  105. data/opal/corelib/dir.rb +20 -0
  106. data/opal/corelib/enumerable.rb +1132 -0
  107. data/opal/corelib/enumerator.rb +422 -0
  108. data/opal/corelib/error.rb +63 -0
  109. data/opal/corelib/file.rb +56 -0
  110. data/opal/corelib/hash.rb +728 -0
  111. data/opal/corelib/helpers.rb +102 -0
  112. data/opal/corelib/io.rb +59 -0
  113. data/opal/corelib/kernel.rb +569 -0
  114. data/opal/corelib/main.rb +7 -0
  115. data/opal/corelib/match_data.rb +114 -0
  116. data/opal/corelib/method.rb +58 -0
  117. data/opal/corelib/module.rb +462 -0
  118. data/opal/corelib/nil_class.rb +62 -0
  119. data/opal/corelib/numeric.rb +532 -0
  120. data/opal/corelib/proc.rb +52 -0
  121. data/opal/corelib/range.rb +116 -0
  122. data/opal/corelib/rational.rb +3 -0
  123. data/opal/corelib/regexp.rb +133 -0
  124. data/opal/corelib/runtime.js +1240 -0
  125. data/opal/corelib/string.rb +1212 -0
  126. data/opal/corelib/string/inheritance.rb +78 -0
  127. data/opal/corelib/struct.rb +141 -0
  128. data/opal/corelib/time.rb +584 -0
  129. data/opal/corelib/variables.rb +24 -0
  130. data/opal/opal.rb +32 -0
  131. data/package.json +9 -0
  132. data/spec/filters/bugs/array.rb +232 -0
  133. data/spec/filters/bugs/basic_object.rb +14 -0
  134. data/spec/filters/bugs/class.rb +21 -0
  135. data/spec/filters/bugs/enumerable.rb +69 -0
  136. data/spec/filters/bugs/enumerator.rb +3 -0
  137. data/spec/filters/bugs/hash.rb +128 -0
  138. data/spec/filters/bugs/kernel.rb +10 -0
  139. data/spec/filters/bugs/language.rb +415 -0
  140. data/spec/filters/bugs/math.rb +95 -0
  141. data/spec/filters/bugs/module.rb +14 -0
  142. data/spec/filters/bugs/nil.rb +7 -0
  143. data/spec/filters/bugs/numeric.rb +20 -0
  144. data/spec/filters/bugs/opal.rb +14 -0
  145. data/spec/filters/bugs/regexp.rb +11 -0
  146. data/spec/filters/bugs/set.rb +7 -0
  147. data/spec/filters/bugs/singleton.rb +6 -0
  148. data/spec/filters/bugs/string.rb +360 -0
  149. data/spec/filters/bugs/stringscanner.rb +22 -0
  150. data/spec/filters/bugs/struct.rb +45 -0
  151. data/spec/filters/bugs/time.rb +177 -0
  152. data/spec/filters/bugs/unknown.rb +11 -0
  153. data/spec/filters/unsupported/encoding.rb +95 -0
  154. data/spec/filters/unsupported/enumerator.rb +14 -0
  155. data/spec/filters/unsupported/float.rb +5 -0
  156. data/spec/filters/unsupported/frozen.rb +90 -0
  157. data/spec/filters/unsupported/hash_compare_by_identity.rb +16 -0
  158. data/spec/filters/unsupported/integer_size.rb +7 -0
  159. data/spec/filters/unsupported/method_added.rb +10 -0
  160. data/spec/filters/unsupported/mutable_strings.rb +361 -0
  161. data/spec/filters/unsupported/private_constants.rb +30 -0
  162. data/spec/filters/unsupported/private_methods.rb +44 -0
  163. data/spec/filters/unsupported/random.rb +4 -0
  164. data/spec/filters/unsupported/ruby_exe.rb +5 -0
  165. data/spec/filters/unsupported/tainted.rb +155 -0
  166. data/spec/filters/unsupported/time.rb +21 -0
  167. data/spec/filters/unsupported/trusted.rb +80 -0
  168. data/spec/lib/builder_processors_spec.rb +27 -0
  169. data/spec/lib/builder_spec.rb +66 -0
  170. data/spec/lib/cli_spec.rb +134 -0
  171. data/spec/lib/compiler_spec.rb +197 -0
  172. data/spec/lib/dependency_resolver_spec.rb +40 -0
  173. data/spec/lib/fixtures/no_requires.rb +1 -0
  174. data/spec/lib/fixtures/opal_file.rb +2 -0
  175. data/spec/lib/fixtures/require_tree_test.rb +3 -0
  176. data/spec/lib/fixtures/required_tree_test/required_file1.rb +1 -0
  177. data/spec/lib/fixtures/required_tree_test/required_file2.rb +1 -0
  178. data/spec/lib/fixtures/requires.rb +7 -0
  179. data/spec/lib/fixtures/sprockets_file.js.rb +3 -0
  180. data/spec/lib/fixtures/sprockets_require_tree_test.rb +3 -0
  181. data/spec/lib/hike_path_finder_spec.rb +23 -0
  182. data/spec/lib/lexer_spec.rb +110 -0
  183. data/spec/lib/parser/alias_spec.rb +26 -0
  184. data/spec/lib/parser/and_spec.rb +13 -0
  185. data/spec/lib/parser/attrasgn_spec.rb +28 -0
  186. data/spec/lib/parser/begin_spec.rb +42 -0
  187. data/spec/lib/parser/block_spec.rb +12 -0
  188. data/spec/lib/parser/break_spec.rb +17 -0
  189. data/spec/lib/parser/call_spec.rb +139 -0
  190. data/spec/lib/parser/class_spec.rb +35 -0
  191. data/spec/lib/parser/comments_spec.rb +11 -0
  192. data/spec/lib/parser/def_spec.rb +61 -0
  193. data/spec/lib/parser/if_spec.rb +26 -0
  194. data/spec/lib/parser/iter_spec.rb +59 -0
  195. data/spec/lib/parser/lambda_spec.rb +64 -0
  196. data/spec/lib/parser/literal_spec.rb +118 -0
  197. data/spec/lib/parser/masgn_spec.rb +37 -0
  198. data/spec/lib/parser/module_spec.rb +27 -0
  199. data/spec/lib/parser/not_spec.rb +27 -0
  200. data/spec/lib/parser/op_asgn1_spec.rb +23 -0
  201. data/spec/lib/parser/op_asgn2_spec.rb +23 -0
  202. data/spec/lib/parser/or_spec.rb +13 -0
  203. data/spec/lib/parser/return_spec.rb +17 -0
  204. data/spec/lib/parser/sclass_spec.rb +21 -0
  205. data/spec/lib/parser/string_spec.rb +276 -0
  206. data/spec/lib/parser/super_spec.rb +20 -0
  207. data/spec/lib/parser/unary_spec.rb +48 -0
  208. data/spec/lib/parser/undef_spec.rb +15 -0
  209. data/spec/lib/parser/unless_spec.rb +13 -0
  210. data/spec/lib/parser/variables_spec.rb +92 -0
  211. data/spec/lib/parser/while_spec.rb +15 -0
  212. data/spec/lib/parser/yield_spec.rb +20 -0
  213. data/spec/lib/path_reader_spec.rb +24 -0
  214. data/spec/lib/shared/path_finder_shared.rb +19 -0
  215. data/spec/lib/shared/path_reader_shared.rb +31 -0
  216. data/spec/lib/spec_helper.rb +9 -0
  217. data/spec/lib/sprockets/environment_spec.rb +30 -0
  218. data/spec/lib/sprockets/erb_spec.rb +25 -0
  219. data/spec/lib/sprockets/path_reader_spec.rb +25 -0
  220. data/spec/lib/sprockets/processor_spec.rb +35 -0
  221. data/spec/lib/sprockets/server_spec.rb +20 -0
  222. data/spec/opal/compiler/irb_spec.rb +44 -0
  223. data/spec/opal/core/array/select_spec.rb +14 -0
  224. data/spec/opal/core/array/set_range_to_array_spec.rb +7 -0
  225. data/spec/opal/core/date_spec.rb +122 -0
  226. data/spec/opal/core/enumerable/all_break_spec.rb +5 -0
  227. data/spec/opal/core/enumerable/any_break_spec.rb +5 -0
  228. data/spec/opal/core/enumerable/collect_break_spec.rb +13 -0
  229. data/spec/opal/core/enumerable/count_break_spec.rb +5 -0
  230. data/spec/opal/core/enumerable/detect_break_spec.rb +5 -0
  231. data/spec/opal/core/enumerable/drop_while_break_spec.rb +5 -0
  232. data/spec/opal/core/enumerable/each_slice_break.rb +6 -0
  233. data/spec/opal/core/enumerable/each_with_index_break_spec.rb +5 -0
  234. data/spec/opal/core/enumerable/each_with_object_break_spec.rb +5 -0
  235. data/spec/opal/core/enumerable/find_all_break_spec.rb +5 -0
  236. data/spec/opal/core/enumerable/find_index_break_spec.rb +5 -0
  237. data/spec/opal/core/enumerable/grep_break_spec.rb +5 -0
  238. data/spec/opal/core/enumerable/max_break_spec.rb +5 -0
  239. data/spec/opal/core/enumerable/max_by_break_spec.rb +5 -0
  240. data/spec/opal/core/enumerable/min_break_spec.rb +5 -0
  241. data/spec/opal/core/enumerable/min_by_break_spec.rb +5 -0
  242. data/spec/opal/core/enumerable/none_break_spec.rb +5 -0
  243. data/spec/opal/core/enumerable/one_break_spec.rb +5 -0
  244. data/spec/opal/core/enumerable/reduce_break_spec.rb +5 -0
  245. data/spec/opal/core/enumerable/take_while_break_spec.rb +5 -0
  246. data/spec/opal/core/fixtures/class.rb +124 -0
  247. data/spec/opal/core/fixtures/class_variables.rb +0 -0
  248. data/spec/opal/core/fixtures/constants.rb +33 -0
  249. data/spec/opal/core/fixtures/require_tree_files/file 1.rb +1 -0
  250. data/spec/opal/core/fixtures/require_tree_files/file 2.rb +1 -0
  251. data/spec/opal/core/fixtures/require_tree_files/file 3.rb +1 -0
  252. data/spec/opal/core/fixtures/require_tree_files/file 4.rb +1 -0
  253. data/spec/opal/core/fixtures/require_tree_files/file 5.rb +1 -0
  254. data/spec/opal/core/kernel/Array_spec.rb +10 -0
  255. data/spec/opal/core/kernel/block_given_spec.rb +30 -0
  256. data/spec/opal/core/kernel/class_spec.rb +6 -0
  257. data/spec/opal/core/kernel/define_singleton_method_spec.rb +21 -0
  258. data/spec/opal/core/kernel/equal_value_spec.rb +12 -0
  259. data/spec/opal/core/kernel/extend_spec.rb +21 -0
  260. data/spec/opal/core/kernel/format_spec.rb +122 -0
  261. data/spec/opal/core/kernel/freeze_spec.rb +15 -0
  262. data/spec/opal/core/kernel/instance_eval_spec.rb +28 -0
  263. data/spec/opal/core/kernel/instance_variable_defined_spec.rb +15 -0
  264. data/spec/opal/core/kernel/instance_variable_get_spec.rb +14 -0
  265. data/spec/opal/core/kernel/instance_variable_set_spec.rb +10 -0
  266. data/spec/opal/core/kernel/loop_spec.rb +23 -0
  267. data/spec/opal/core/kernel/match_spec.rb +5 -0
  268. data/spec/opal/core/kernel/method_spec.rb +31 -0
  269. data/spec/opal/core/kernel/methods_spec.rb +25 -0
  270. data/spec/opal/core/kernel/nil_spec.rb +7 -0
  271. data/spec/opal/core/kernel/p_spec.rb +15 -0
  272. data/spec/opal/core/kernel/printf_spec.rb +11 -0
  273. data/spec/opal/core/kernel/proc_spec.rb +13 -0
  274. data/spec/opal/core/kernel/rand_spec.rb +23 -0
  275. data/spec/opal/core/kernel/require_tree_spec.rb +7 -0
  276. data/spec/opal/core/kernel/respond_to_spec.rb +41 -0
  277. data/spec/opal/core/kernel/send_spec.rb +56 -0
  278. data/spec/opal/core/kernel/sprintf_spec.rb +5 -0
  279. data/spec/opal/core/language/block_spec.rb +538 -0
  280. data/spec/opal/core/language/fixtures/array.rb +11 -0
  281. data/spec/opal/core/language/fixtures/block.rb +57 -0
  282. data/spec/opal/core/language/fixtures/break.rb +240 -0
  283. data/spec/opal/core/language/fixtures/ensure.rb +72 -0
  284. data/spec/opal/core/language/fixtures/literal_lambda.rb +7 -0
  285. data/spec/opal/core/language/fixtures/metaclass.rb +33 -0
  286. data/spec/opal/core/language/fixtures/module.rb +24 -0
  287. data/spec/opal/core/language/fixtures/next.rb +128 -0
  288. data/spec/opal/core/language/fixtures/return.rb +118 -0
  289. data/spec/opal/core/language/fixtures/send.rb +110 -0
  290. data/spec/opal/core/language/fixtures/send_1.9.rb +22 -0
  291. data/spec/opal/core/language/fixtures/super.rb +308 -0
  292. data/spec/opal/core/language/fixtures/variables.rb +58 -0
  293. data/spec/opal/core/language/fixtures/yield.rb +28 -0
  294. data/spec/opal/core/language/predefined_spec.rb +85 -0
  295. data/spec/opal/core/language/proc_spec.rb +263 -0
  296. data/spec/opal/core/language/regexp_spec.rb +20 -0
  297. data/spec/opal/core/language/send_spec.rb +225 -0
  298. data/spec/opal/core/language/string_spec.rb +44 -0
  299. data/spec/opal/core/language/symbol_spec.rb +40 -0
  300. data/spec/opal/core/language/variables_spec.rb +1366 -0
  301. data/spec/opal/core/language/versions/array_1.9.rb +39 -0
  302. data/spec/opal/core/language/versions/block_1.9.rb +0 -0
  303. data/spec/opal/core/language/versions/break_1.9.rb +0 -0
  304. data/spec/opal/core/language/versions/case_1.9.rb +20 -0
  305. data/spec/opal/core/language/versions/hash_1.9.rb +18 -0
  306. data/spec/opal/core/language/versions/literal_lambda_1.9.rb +143 -0
  307. data/spec/opal/core/language/versions/not_1.9.rb +22 -0
  308. data/spec/opal/core/language/versions/send_1.9.rb +241 -0
  309. data/spec/opal/core/language/versions/symbol_1.9.rb +15 -0
  310. data/spec/opal/core/language/versions/variables_1.9.rb +8 -0
  311. data/spec/opal/core/module/alias_method_spec.rb +28 -0
  312. data/spec/opal/core/module/ancestors_spec.rb +11 -0
  313. data/spec/opal/core/module/append_features_spec.rb +14 -0
  314. data/spec/opal/core/module/attr_accessor_spec.rb +26 -0
  315. data/spec/opal/core/module/const_defined_spec.rb +85 -0
  316. data/spec/opal/core/module/const_get_spec.rb +85 -0
  317. data/spec/opal/core/module/const_missing_spec.rb +17 -0
  318. data/spec/opal/core/module/const_set_spec.rb +64 -0
  319. data/spec/opal/core/module/constants_spec.rb +49 -0
  320. data/spec/opal/core/module/fixtures/classes.rb +434 -0
  321. data/spec/opal/core/module/method_defined_spec.rb +48 -0
  322. data/spec/opal/core/module/module_function_spec.rb +25 -0
  323. data/spec/opal/core/module/name_spec.rb +52 -0
  324. data/spec/opal/core/module/public_method_defined_spec.rb +18 -0
  325. data/spec/opal/core/module/remove_const_spec.rb +22 -0
  326. data/spec/opal/core/module/undef_method_spec.rb +66 -0
  327. data/spec/opal/core/numeric/bit_and_spec.rb +7 -0
  328. data/spec/opal/core/numeric/bit_or_spec.rb +8 -0
  329. data/spec/opal/core/numeric/bit_xor_spec.rb +6 -0
  330. data/spec/opal/core/numeric/ceil_spec.rb +8 -0
  331. data/spec/opal/core/numeric/chr_spec.rb +8 -0
  332. data/spec/opal/core/numeric/comparison_spec.rb +24 -0
  333. data/spec/opal/core/numeric/complement_spec.rb +8 -0
  334. data/spec/opal/core/numeric/divide_spec.rb +10 -0
  335. data/spec/opal/core/numeric/eql_spec.rb +9 -0
  336. data/spec/opal/core/numeric/exponent_spec.rb +33 -0
  337. data/spec/opal/core/numeric/floor_spec.rb +8 -0
  338. data/spec/opal/core/numeric/gt_spec.rb +11 -0
  339. data/spec/opal/core/numeric/gte_spec.rb +12 -0
  340. data/spec/opal/core/numeric/integer_spec.rb +9 -0
  341. data/spec/opal/core/numeric/left_shift_spec.rb +21 -0
  342. data/spec/opal/core/numeric/lt_spec.rb +11 -0
  343. data/spec/opal/core/numeric/lte_spec.rb +12 -0
  344. data/spec/opal/core/numeric/minus_spec.rb +8 -0
  345. data/spec/opal/core/numeric/modulo_spec.rb +19 -0
  346. data/spec/opal/core/numeric/multiply_spec.rb +9 -0
  347. data/spec/opal/core/numeric/next_spec.rb +9 -0
  348. data/spec/opal/core/numeric/ord_spec.rb +9 -0
  349. data/spec/opal/core/numeric/plus_spec.rb +8 -0
  350. data/spec/opal/core/numeric/pred_spec.rb +7 -0
  351. data/spec/opal/core/numeric/right_shift_spec.rb +25 -0
  352. data/spec/opal/core/numeric/step_spec.rb +11 -0
  353. data/spec/opal/core/numeric/succ_spec.rb +9 -0
  354. data/spec/opal/core/numeric/times_spec.rb +36 -0
  355. data/spec/opal/core/numeric/to_f_spec.rb +7 -0
  356. data/spec/opal/core/numeric/to_i_spec.rb +7 -0
  357. data/spec/opal/core/numeric/to_json_spec.rb +8 -0
  358. data/spec/opal/core/numeric/to_s_spec.rb +26 -0
  359. data/spec/opal/core/numeric/uminus_spec.rb +9 -0
  360. data/spec/opal/core/numeric/upto_spec.rb +19 -0
  361. data/spec/opal/core/numeric/zero_spec.rb +7 -0
  362. data/spec/opal/core/proc/call_spec.rb +21 -0
  363. data/spec/opal/core/proc/element_reference_spec.rb +21 -0
  364. data/spec/opal/core/proc/proc_tricks_spec.rb +7 -0
  365. data/spec/opal/core/runtime/begin_spec.rb +39 -0
  366. data/spec/opal/core/runtime/block_send_spec.rb +28 -0
  367. data/spec/opal/core/runtime/block_spec.rb +23 -0
  368. data/spec/opal/core/runtime/bridged_classes_spec.rb +64 -0
  369. data/spec/opal/core/runtime/constants_spec.rb +13 -0
  370. data/spec/opal/core/runtime/eval_spec.rb +5 -0
  371. data/spec/opal/core/runtime/main_methods_spec.rb +27 -0
  372. data/spec/opal/core/runtime/method_missing_spec.rb +62 -0
  373. data/spec/opal/core/runtime/method_spec.rb +31 -0
  374. data/spec/opal/core/runtime/operator_call_spec.rb +13 -0
  375. data/spec/opal/core/runtime/paren_spec.rb +14 -0
  376. data/spec/opal/core/runtime/rescue_spec.rb +38 -0
  377. data/spec/opal/core/runtime/return_spec.rb +38 -0
  378. data/spec/opal/core/runtime/send_spec.rb +34 -0
  379. data/spec/opal/core/runtime/singleton_class_spec.rb +13 -0
  380. data/spec/opal/core/runtime/super_spec.rb +212 -0
  381. data/spec/opal/core/runtime/truthy_spec.rb +23 -0
  382. data/spec/opal/core/runtime/variables_spec.rb +20 -0
  383. data/spec/opal/core/source_map_spec.rb +15 -0
  384. data/spec/opal/core/string_spec.rb +11 -0
  385. data/spec/opal/stdlib/erb/erb_spec.rb +30 -0
  386. data/spec/opal/stdlib/erb/inline_block.opalerb +3 -0
  387. data/spec/opal/stdlib/erb/quoted.opalerb +1 -0
  388. data/spec/opal/stdlib/erb/simple.opalerb +1 -0
  389. data/spec/opal/stdlib/json/ext_spec.rb +48 -0
  390. data/spec/opal/stdlib/json/parse_spec.rb +33 -0
  391. data/spec/opal/stdlib/native/alias_native_spec.rb +27 -0
  392. data/spec/opal/stdlib/native/each_spec.rb +13 -0
  393. data/spec/opal/stdlib/native/element_reference_spec.rb +16 -0
  394. data/spec/opal/stdlib/native/exposure_spec.rb +33 -0
  395. data/spec/opal/stdlib/native/ext_spec.rb +19 -0
  396. data/spec/opal/stdlib/native/initialize_spec.rb +17 -0
  397. data/spec/opal/stdlib/native/method_missing_spec.rb +51 -0
  398. data/spec/opal/stdlib/native/native_reader_spec.rb +22 -0
  399. data/spec/opal/stdlib/native/native_writer_spec.rb +30 -0
  400. data/spec/opal/stdlib/native/new_spec.rb +8 -0
  401. data/spec/opal/stdlib/promise/error_spec.rb +15 -0
  402. data/spec/opal/stdlib/promise/rescue_spec.rb +35 -0
  403. data/spec/opal/stdlib/promise/then_spec.rb +54 -0
  404. data/spec/opal/stdlib/promise/trace_spec.rb +35 -0
  405. data/spec/opal/stdlib/promise/value_spec.rb +15 -0
  406. data/spec/opal/stdlib/promise/when_spec.rb +34 -0
  407. data/spec/opal/stdlib/template/paths_spec.rb +10 -0
  408. data/spec/opal/stdlib/thread/mutex_spec.rb +40 -0
  409. data/spec/opal/stdlib/thread/thread_queue_spec.rb +32 -0
  410. data/spec/opal/stdlib/thread/thread_spec.rb +60 -0
  411. data/spec/rubyspecs +329 -0
  412. data/spec/spec_helper.rb +42 -0
  413. data/spec/support/mspec_rspec_adapter.rb +33 -0
  414. data/spec/support/parser_helpers.rb +37 -0
  415. data/stdlib/README.md +3 -0
  416. data/stdlib/base64.rb +152 -0
  417. data/stdlib/benchmark.rb +10 -0
  418. data/stdlib/buffer.rb +40 -0
  419. data/stdlib/buffer/array.rb +66 -0
  420. data/stdlib/buffer/view.rb +70 -0
  421. data/stdlib/date.rb +170 -0
  422. data/stdlib/delegate.rb +29 -0
  423. data/stdlib/dir.rb +1 -0
  424. data/stdlib/encoding.rb +166 -0
  425. data/stdlib/enumerator.rb +1 -0
  426. data/stdlib/erb.rb +16 -0
  427. data/stdlib/file.rb +1 -0
  428. data/stdlib/forwardable.rb +71 -0
  429. data/stdlib/json.rb +182 -0
  430. data/stdlib/math.rb +370 -0
  431. data/stdlib/native.rb +530 -0
  432. data/stdlib/nodejs.rb +5 -0
  433. data/stdlib/nodejs/dir.rb +13 -0
  434. data/stdlib/nodejs/file.rb +98 -0
  435. data/stdlib/nodejs/fileutils.rb +26 -0
  436. data/stdlib/nodejs/io.rb +2 -0
  437. data/stdlib/nodejs/irb.rb +45 -0
  438. data/stdlib/nodejs/process.rb +16 -0
  439. data/stdlib/nodejs/require.rb +32 -0
  440. data/stdlib/nodejs/rubygems.rb +68 -0
  441. data/stdlib/nodejs/runtime.rb +25 -0
  442. data/stdlib/nodejs/yaml.rb +11 -0
  443. data/stdlib/observer.rb +202 -0
  444. data/stdlib/opal-parser.rb +53 -0
  445. data/stdlib/opal-source-maps.rb +2 -0
  446. data/stdlib/ostruct.rb +69 -0
  447. data/stdlib/pathname.rb +31 -0
  448. data/stdlib/phantomjs.rb +8 -0
  449. data/stdlib/pp.rb +12 -0
  450. data/stdlib/process.rb +10 -0
  451. data/stdlib/promise.rb +300 -0
  452. data/stdlib/racc/parser.rb +215 -0
  453. data/stdlib/rbconfig.rb +20 -0
  454. data/stdlib/securerandom.rb +12 -0
  455. data/stdlib/set.rb +116 -0
  456. data/stdlib/singleton.rb +40 -0
  457. data/stdlib/source_map.rb +5 -0
  458. data/stdlib/source_map/map.rb +220 -0
  459. data/stdlib/source_map/mapping.rb +26 -0
  460. data/stdlib/source_map/offset.rb +88 -0
  461. data/stdlib/source_map/version.rb +3 -0
  462. data/stdlib/source_map/vlq.rb +98 -0
  463. data/stdlib/sourcemap.rb +1 -0
  464. data/stdlib/stringio.rb +181 -0
  465. data/stdlib/strscan.rb +155 -0
  466. data/stdlib/template.rb +46 -0
  467. data/stdlib/thread.rb +160 -0
  468. data/stdlib/time.rb +9 -0
  469. data/tasks/github.rake +19 -0
  470. metadata +690 -0
@@ -0,0 +1,16 @@
1
+ opal_filter "Hash#comapre_by_identity" do
2
+ fails "Hash#compare_by_identity causes future comparisons on the receiver to be made by identity"
3
+ fails "Hash#compare_by_identity causes #compare_by_identity? to return true"
4
+ fails "Hash#compare_by_identity returns self"
5
+ fails "Hash#compare_by_identity uses the semantics of BasicObject#equal? to determine key identity"
6
+ fails "Hash#compare_by_identity uses #equal? semantics, but doesn't actually call #equal? to determine identity"
7
+ fails "Hash#compare_by_identity regards #dup'd objects as having different identities"
8
+ fails "Hash#compare_by_identity regards #clone'd objects as having different identities"
9
+ fails "Hash#compare_by_identity regards references to the same object as having the same identity"
10
+ fails "Hash#compare_by_identity raises a RuntimeError on frozen hashes"
11
+ fails "Hash#compare_by_identity perists over #dups"
12
+ fails "Hash#compare_by_identity persists over #clones"
13
+ fails "Hash#compare_by_identity? returns false by default"
14
+ fails "Hash#compare_by_identity? returns true once #compare_by_identity has been invoked on self"
15
+ fails "Hash#compare_by_identity? returns true when called multiple times on the same ident hash"
16
+ end
@@ -0,0 +1,7 @@
1
+ opal_filter "fixnum and array size" do
2
+ fails "Array#slice raises a RangeError when the length is out of range of Fixnum"
3
+ fails "Array#slice raises a RangeError when the start index is out of range of Fixnum"
4
+ fails "Array#fill with (filler, index, length) raises an ArgumentError or RangeError for too-large sizes"
5
+ fails "Array#[] raises a RangeError when the length is out of range of Fixnum"
6
+ fails "Array#[] raises a RangeError when the start index is out of range of Fixnum"
7
+ end
@@ -0,0 +1,10 @@
1
+ opal_filter "method_added" do
2
+ fails "BasicObject#singleton_method_undefined is called when a method is removed on self"
3
+ fails "BasicObject#singleton_method_undefined is a private method"
4
+ fails "BasicObject#singleton_method_removed is called when a method is removed on self"
5
+ fails "BasicObject#singleton_method_removed is a private method"
6
+ fails "BasicObject#singleton_method_added is called when define_method is used in the singleton class"
7
+ fails "BasicObject#singleton_method_added is called when a method is defined in the singleton class"
8
+ fails "BasicObject#singleton_method_added is called when a method is defined on self"
9
+ fails "BasicObject#singleton_method_added is a private method"
10
+ end
@@ -0,0 +1,361 @@
1
+ opal_filter "Mutable strings are not supported in Opal" do
2
+ fails "String#upcase! raises a RuntimeError when self is frozen"
3
+ fails "String#upcase! returns nil if no modifications were made"
4
+ fails "String#upcase! modifies self in place"
5
+ fails "String#swapcase! modifies self in place"
6
+ fails "String#swapcase! returns nil if no modifications were made"
7
+ fails "String#swapcase! raises a RuntimeError when self is frozen"
8
+ fails "String#reverse! raises a RuntimeError on a frozen instance that would not be modified"
9
+ fails "String#reverse! raises a RuntimeError on a frozen instance that is modified"
10
+ fails "String#reverse! reverses self in place and always returns self"
11
+ fails "String#downcase! raises a RuntimeError when self is frozen"
12
+ fails "String#downcase! returns nil if no modifications were made"
13
+ fails "String#downcase! modifies self in place"
14
+ fails "String#capitalize! raises a RuntimeError when self is frozen"
15
+ fails "String#capitalize! returns nil when no changes are made"
16
+ fails "String#capitalize! capitalizes self in place"
17
+ fails "String#chomp! when passed a String does not taint the result when the argument is tainted"
18
+ fails "String#chomp! when passed a String taints the result if self is tainted"
19
+ fails "String#chomp! when passed a String returns nil when self is empty"
20
+ fails "String#chomp! when passed a String returns nil if the argument does not match the trailing characters"
21
+ fails "String#chomp! when passed a String removes the trailing characters if they match the argument"
22
+ fails "String#chomp! when passed an Object raises a TypeError if #to_str does not return a String"
23
+ fails "String#chomp! when passed an Object calls #to_str to convert to a String"
24
+ fails "String#chomp! when passed '\\n' returns nil when self is empty"
25
+ fails "String#chomp! when passed '\\n' taints the result if self is tainted"
26
+ fails "String#chomp! when passed '\\n' removes one trailing carrige return, newline pair"
27
+ fails "String#chomp! when passed '\\n' removes one trailing carriage return"
28
+ fails "String#chomp! when passed '\\n' removes one trailing newline"
29
+ fails "String#chomp! when passed '' returns nil when self is empty"
30
+ fails "String#chomp! when passed '' taints the result if self is tainted"
31
+ fails "String#chomp! when passed '' removes more than one trailing carriage return, newline pairs"
32
+ fails "String#chomp! when passed '' removes more than one trailing newlines"
33
+ fails "String#chomp! when passed '' does not remove a final carriage return"
34
+ fails "String#chomp! when passed '' removes a final carriage return, newline"
35
+ fails "String#chomp! when passed '' removes a final newline"
36
+ fails "String#chomp! when passed nil returns nil when self is empty"
37
+ fails "String#chomp! when passed nil returns nil"
38
+ fails "String#chomp! when passed no argument removes trailing characters that match $/ when it has been assigned a value"
39
+ fails "String#chomp! when passed no argument returns subclass instances when called on a subclass"
40
+ fails "String#chomp! when passed no argument taints the result if self is tainted"
41
+ fails "String#chomp! when passed no argument returns nil when self is empty"
42
+ fails "String#chomp! when passed no argument removes one trailing carrige return, newline pair"
43
+ fails "String#chomp! when passed no argument removes one trailing carriage return"
44
+ fails "String#chomp! when passed no argument removes one trailing newline"
45
+ fails "String#chomp! when passed no argument returns nil if self is not modified"
46
+ fails "String#chomp! when passed no argument modifies self"
47
+ fails "String#chomp! raises a RuntimeError on a frozen instance when it would not be modified"
48
+ fails "String#chomp! raises a RuntimeError on a frozen instance when it is modified"
49
+
50
+ fails "Array#fill does not replicate the filler"
51
+
52
+ fails "Hash literal freezes string keys on initialization"
53
+
54
+ fails "Time#strftime formats time according to the directives in the given format string"
55
+ fails "Time#strftime with %z formats a local time with positive UTC offset as '+HHMM'"
56
+ fails "Time#strftime with %z formats a local time with negative UTC offset as '-HHMM'"
57
+
58
+ fails "String#<< concatenates the given argument to self and returns self"
59
+ fails "String#<< converts the given argument to a String using to_str"
60
+ fails "String#<< converts the given argument to a String using to_str"
61
+ fails "String#<< raises a TypeError if the given argument can't be converted to a String"
62
+ fails "String#<< raises a RuntimeError when self is frozen"
63
+ fails "String#<< works when given a subclass instance"
64
+ fails "String#<< taints self if other is tainted"
65
+ fails "String#<< untrusts self if other is untrusted"
66
+ fails "String#<< with Integer concatencates the argument interpreted as a codepoint"
67
+ fails "String#<< with Integer returns a ASCII-8BIT string if self is US-ASCII and the argument is between 128-255 (inclusive)"
68
+ fails "String#<< with Integer raises RangeError if the argument is an invalid codepoint for self's encoding"
69
+ fails "String#<< with Integer raises RangeError if the argument is negative"
70
+ fails "String#<< with Integer doesn't call to_int on its argument"
71
+ fails "String#<< with Integer raises a RuntimeError when self is frozen"
72
+ fails "String#<< when self is in an ASCII-incompatible encoding incompatible with the argument's encoding uses self's encoding if both are empty"
73
+ fails "String#<< when self is in an ASCII-incompatible encoding incompatible with the argument's encoding uses self's encoding if the argument is empty"
74
+ fails "String#<< when self is in an ASCII-incompatible encoding incompatible with the argument's encoding uses the argument's encoding if self is empty"
75
+ fails "String#<< when self is in an ASCII-incompatible encoding incompatible with the argument's encoding raises Encoding::CompatibilityError if neither are empty"
76
+ fails "String#<< when the argument is in an ASCII-incompatible encoding incompatible with self's encoding uses self's encoding if both are empty"
77
+ fails "String#<< when the argument is in an ASCII-incompatible encoding incompatible with self's encoding uses self's encoding if the argument is empty"
78
+ fails "String#<< when the argument is in an ASCII-incompatible encoding incompatible with self's encoding uses the argument's encoding if self is empty"
79
+ fails "String#<< when the argument is in an ASCII-incompatible encoding incompatible with self's encoding raises Encoding::CompatibilityError if neither are empty"
80
+ fails "String#<< when self and the argument are in different ASCII-compatible encodings uses self's encoding if both are ASCII-only"
81
+ fails "String#<< when self and the argument are in different ASCII-compatible encodings uses self's encoding if the argument is ASCII-only"
82
+ fails "String#<< when self and the argument are in different ASCII-compatible encodings uses the argument's encoding if self is ASCII-only"
83
+ fails "String#<< when self and the argument are in different ASCII-compatible encodings raises Encoding::CompatibilityError if neither are ASCII-only"
84
+ fails "String#<< when self is ASCII-8BIT and argument is US-ASCII uses ASCII-8BIT encoding"
85
+
86
+ fails "String#chomp when passed no argument returns a copy of the String when it is not modified"
87
+
88
+ fails "String#chop returns a new string when applied to an empty string"
89
+
90
+ fails "String#chop! removes the final character"
91
+ fails "String#chop! removes the final carriage return"
92
+ fails "String#chop! removes the final newline"
93
+ fails "String#chop! removes the final carriage return, newline"
94
+ fails "String#chop! removes the carrige return, newline if they are the only characters"
95
+ fails "String#chop! does not remove more than the final carriage return, newline"
96
+ fails "String#chop! returns self if modifications were made"
97
+ fails "String#chop! returns nil when called on an empty string"
98
+ fails "String#chop! raises a RuntimeError on a frozen instance that is modified"
99
+ fails "String#chop! raises a RuntimeError on a frozen instance that would not be modified"
100
+
101
+ fails "String#gsub! with pattern and Hash returns self with all occurrences of pattern replaced with the value of the corresponding hash key"
102
+ fails "String#gsub! with pattern and Hash ignores keys that don't correspond to matches"
103
+ fails "String#gsub! with pattern and Hash replaces self with an empty string if the pattern matches but the hash specifies no replacements"
104
+ fails "String#gsub! with pattern and Hash ignores non-String keys"
105
+ fails "String#gsub! with pattern and Hash uses a key's value as many times as needed"
106
+ fails "String#gsub! with pattern and Hash uses the hash's default value for missing keys"
107
+ fails "String#gsub! with pattern and Hash coerces the hash values with #to_s"
108
+ fails "String#gsub! with pattern and Hash coerces the hash values with #to_s"
109
+ fails "String#gsub! with pattern and Hash uses the hash's value set from default_proc for missing keys"
110
+ fails "String#gsub! with pattern and Hash sets $~ to MatchData of last match and nil when there's none for access from outside"
111
+ fails "String#gsub! with pattern and Hash doesn't interpolate special sequences like \\1 for the block's return value"
112
+ fails "String#gsub! with pattern and Hash keeps untrusted state"
113
+ fails "String#gsub! with pattern and Hash untrusts self if a hash value is untrusted"
114
+ fails "String#gsub! with pattern and Hash keeps tainted state"
115
+ fails "String#gsub! with pattern and Hash taints self if a hash value is tainted"
116
+ fails "String#gsub! with pattern and replacement modifies self in place and returns self"
117
+ fails "String#gsub! with pattern and replacement taints self if replacement is tainted"
118
+ fails "String#gsub! with pattern and replacement untrusts self if replacement is untrusted"
119
+ fails "String#gsub! with pattern and replacement returns nil if no modifications were made"
120
+ fails "String#gsub! with pattern and replacement raises a RuntimeError when self is frozen"
121
+ fails "String#gsub! with pattern and block modifies self in place and returns self"
122
+ fails "String#gsub! with pattern and block taints self if block's result is tainted"
123
+ fails "String#gsub! with pattern and block untrusts self if block's result is untrusted"
124
+ fails "String#gsub! with pattern and block returns nil if no modifications were made"
125
+ fails "String#gsub! with pattern and block raises a RuntimeError when self is frozen"
126
+ fails "String#gsub! with pattern and block uses the compatible encoding if they are compatible"
127
+ fails "String#gsub! with pattern and block raises an Encoding::CompatibilityError if the encodings are not compatible"
128
+ fails "String#gsub! with pattern and block replaces the incompatible part properly even if the encodings are not compatible"
129
+
130
+ fails "String#lstrip! modifies self in place and returns self"
131
+ fails "String#lstrip! returns nil if no modifications were made"
132
+ fails "String#lstrip! raises a RuntimeError on a frozen instance that is modified"
133
+ fails "String#lstrip! raises a RuntimeError on a frozen instance that would not be modified"
134
+
135
+ fails "String#next! is equivalent to succ, but modifies self in place (still returns self)"
136
+ fails "String#next! raises a RuntimeError if self is frozen"
137
+
138
+ fails "String#rstrip! modifies self in place and returns self"
139
+ fails "String#rstrip! modifies self removing trailing NULL bytes and whitespace"
140
+ fails "String#rstrip! returns nil if no modifications were made"
141
+ fails "String#rstrip! raises a RuntimeError on a frozen instance that is modified"
142
+ fails "String#rstrip! raises a RuntimeError on a frozen instance that would not be modified"
143
+
144
+ fails "String#slice! with index deletes and return the char at the given position"
145
+ fails "String#slice! with index returns nil if idx is outside of self"
146
+ fails "String#slice! with index raises a RuntimeError if self is frozen"
147
+ fails "String#slice! with index calls to_int on index"
148
+ fails "String#slice! with index, length deletes and returns the substring at idx and the given length"
149
+ fails "String#slice! with index, length always taints resulting strings when self is tainted"
150
+ fails "String#slice! with index, length returns nil if the length is negative"
151
+ fails "String#slice! with index, length raises a RuntimeError if self is frozen"
152
+ fails "String#slice! with index, length calls to_int on idx and length"
153
+ fails "String#slice! with index, length returns subclass instances"
154
+ fails "String#slice! Range deletes and return the substring given by the offsets of the range"
155
+ fails "String#slice! Range returns nil if the given range is out of self"
156
+ fails "String#slice! Range always taints resulting strings when self is tainted"
157
+ fails "String#slice! Range returns subclass instances"
158
+ fails "String#slice! Range calls to_int on range arguments"
159
+ fails "String#slice! Range works with Range subclasses"
160
+ fails "String#slice! Range raises a RuntimeError on a frozen instance that is modified"
161
+ fails "String#slice! Range raises a RuntimeError on a frozen instance that would not be modified"
162
+ fails "String#slice! with Regexp deletes and returns the first match from self"
163
+ fails "String#slice! with Regexp returns nil if there was no match"
164
+ fails "String#slice! with Regexp always taints resulting strings when self or regexp is tainted"
165
+ fails "String#slice! with Regexp doesn't taint self when regexp is tainted"
166
+ fails "String#slice! with Regexp returns subclass instances"
167
+ fails "String#slice! with Regexp sets $~ to MatchData when there is a match and nil when there's none"
168
+ fails "String#slice! with Regexp raises a RuntimeError on a frozen instance that is modified"
169
+ fails "String#slice! with Regexp raises a RuntimeError on a frozen instance that would not be modified"
170
+ fails "String#slice! with Regexp, index deletes and returns the capture for idx from self"
171
+ fails "String#slice! with Regexp, index always taints resulting strings when self or regexp is tainted"
172
+ fails "String#slice! with Regexp, index doesn't taint self when regexp is tainted"
173
+ fails "String#slice! with Regexp, index returns nil if there was no match"
174
+ fails "String#slice! with Regexp, index returns nil if there is no capture for idx"
175
+ fails "String#slice! with Regexp, index calls to_int on idx"
176
+ fails "String#slice! with Regexp, index returns subclass instances"
177
+ fails "String#slice! with Regexp, index sets $~ to MatchData when there is a match and nil when there's none"
178
+ fails "String#slice! with Regexp, index raises a RuntimeError if self is frozen"
179
+ fails "String#slice! with String removes and returns the first occurrence of other_str from self"
180
+ fails "String#slice! with String taints resulting strings when other is tainted"
181
+ fails "String#slice! with String doesn't set $~"
182
+ fails "String#slice! with String returns nil if self does not contain other"
183
+ fails "String#slice! with String doesn't call to_str on its argument"
184
+ fails "String#slice! with String returns a subclass instance when given a subclass instance"
185
+ fails "String#slice! with String raises a RuntimeError if self is frozen"
186
+
187
+ fails "String#[]= with Fixnum index replaces the char at idx with other_str"
188
+ fails "String#[]= with Fixnum index taints self if other_str is tainted"
189
+ fails "String#[]= with Fixnum index raises an IndexError without changing self if idx is outside of self"
190
+ fails "String#[]= with Fixnum index allows assignment to the zero'th element of an empty String"
191
+ fails "String#[]= with Fixnum index raises IndexError if the string index doesn't match a position in the string"
192
+ fails "String#[]= with Fixnum index raises a RuntimeError when self is frozen"
193
+ fails "String#[]= with Fixnum index calls to_int on index"
194
+ fails "String#[]= with Fixnum index calls #to_str to convert other to a String"
195
+ fails "String#[]= with Fixnum index raises a TypeError if other_str can't be converted to a String"
196
+ fails "String#[]= with String index replaces fewer characters with more characters"
197
+ fails "String#[]= with String index replaces more characters with fewer characters"
198
+ fails "String#[]= with String index replaces characters with no characters"
199
+ fails "String#[]= with String index raises an IndexError if the search String is not found"
200
+ fails "String#[]= with a Regexp index replaces the matched text with the rhs"
201
+ fails "String#[]= with a Regexp index raises IndexError if the regexp index doesn't match a position in the string"
202
+ fails "String#[]= with a Regexp index calls #to_str to convert the replacement"
203
+ fails "String#[]= with a Regexp index checks the match before calling #to_str to convert the replacement"
204
+ fails "String#[]= with a Regexp index with 3 arguments calls #to_int to convert the second object"
205
+ fails "String#[]= with a Regexp index with 3 arguments raises a TypeError if #to_int does not return a Fixnum"
206
+ fails "String#[]= with a Regexp index with 3 arguments uses the 2nd of 3 arguments as which capture should be replaced"
207
+ fails "String#[]= with a Regexp index with 3 arguments allows the specified capture to be negative and count from the end"
208
+ fails "String#[]= with a Regexp index with 3 arguments checks the match index before calling #to_str to convert the replacement"
209
+ fails "String#[]= with a Regexp index with 3 arguments raises IndexError if the specified capture isn't available"
210
+ fails "String#[]= with a Regexp index with 3 arguments when the optional capture does not match raises an IndexError before setting the replacement"
211
+ fails "String#[]= with a Range index replaces the contents with a shorter String"
212
+ fails "String#[]= with a Range index replaces the contents with a longer String"
213
+ fails "String#[]= with a Range index replaces a partial string"
214
+ fails "String#[]= with a Range index raises a RangeError if negative Range begin is out of range"
215
+ fails "String#[]= with a Range index raises a RangeError if positive Range begin is greater than String size"
216
+ fails "String#[]= with a Range index uses the Range end as an index rather than a count"
217
+ fails "String#[]= with a Range index treats a negative out-of-range Range end with a positive Range begin as a zero count"
218
+ fails "String#[]= with a Range index treats a negative out-of-range Range end with a negative Range begin as a zero count"
219
+ fails "String#[]= with a Range index with an empty replacement does not replace a character with a zero-index, zero exclude-end range"
220
+ fails "String#[]= with a Range index with an empty replacement does not replace a character with a zero exclude-end range"
221
+ fails "String#[]= with a Range index with an empty replacement replaces a character with zero-index, zero non-exclude-end range"
222
+ fails "String#[]= with a Range index with an empty replacement replaces a character with a zero non-exclude-end range"
223
+ fails "String#[]= with Fixnum index, count starts at idx and overwrites count characters before inserting the rest of other_str"
224
+ fails "String#[]= with Fixnum index, count counts negative idx values from end of the string"
225
+ fails "String#[]= with Fixnum index, count overwrites and deletes characters if count is more than the length of other_str"
226
+ fails "String#[]= with Fixnum index, count deletes characters if other_str is an empty string"
227
+ fails "String#[]= with Fixnum index, count deletes characters up to the maximum length of the existing string"
228
+ fails "String#[]= with Fixnum index, count appends other_str to the end of the string if idx == the length of the string"
229
+ fails "String#[]= with Fixnum index, count taints self if other_str is tainted"
230
+ fails "String#[]= with Fixnum index, count calls #to_int to convert the index and count objects"
231
+ fails "String#[]= with Fixnum index, count raises a TypeError if #to_int for index does not return an Integer"
232
+ fails "String#[]= with Fixnum index, count raises a TypeError if #to_int for count does not return an Integer"
233
+ fails "String#[]= with Fixnum index, count calls #to_str to convert the replacement object"
234
+ fails "String#[]= with Fixnum index, count raises a TypeError of #to_str does not return a String"
235
+ fails "String#[]= with Fixnum index, count raises an IndexError if |idx| is greater than the length of the string"
236
+ fails "String#[]= with Fixnum index, count raises an IndexError if count < 0"
237
+ fails "String#[]= with Fixnum index, count raises a TypeError if other_str is a type other than String"
238
+
239
+ fails "String#squeeze! modifies self in place and returns self"
240
+ fails "String#squeeze! returns nil if no modifications were made"
241
+ fails "String#squeeze! raises an ArgumentError when the parameter is out of sequence"
242
+ fails "String#squeeze! raises a RuntimeError when self is frozen"
243
+
244
+ fails "String#strip! modifies self in place and returns self"
245
+ fails "String#strip! returns nil if no modifications where made"
246
+ fails "String#strip! modifies self removing trailing NULL bytes and whitespace"
247
+ fails "String#strip! raises a RuntimeError on a frozen instance that is modified"
248
+ fails "String#strip! raises a RuntimeError on a frozen instance that would not be modified"
249
+
250
+ fails "String#sub! with pattern, replacement modifies self in place and returns self"
251
+ fails "String#sub! with pattern, replacement taints self if replacement is tainted"
252
+ fails "String#sub! with pattern, replacement returns nil if no modifications were made"
253
+ fails "String#sub! with pattern, replacement raises a RuntimeError when self is frozen"
254
+ fails "String#sub! with pattern and block modifies self in place and returns self"
255
+ fails "String#sub! with pattern and block sets $~ for access from the block"
256
+ fails "String#sub! with pattern and block taints self if block's result is tainted"
257
+ fails "String#sub! with pattern and block returns nil if no modifications were made"
258
+ fails "String#sub! with pattern and block raises a RuntimeError if the string is modified while substituting"
259
+ fails "String#sub! with pattern and block raises a RuntimeError when self is frozen"
260
+ fails "String#sub! with pattern and Hash returns self with the first occurrence of pattern replaced with the value of the corresponding hash key"
261
+ fails "String#sub! with pattern and Hash removes keys that don't correspond to matches"
262
+ fails "String#sub! with pattern and Hash ignores non-String keys"
263
+ fails "String#sub! with pattern and Hash uses a key's value only a single time"
264
+ fails "String#sub! with pattern and Hash uses the hash's default value for missing keys"
265
+ fails "String#sub! with pattern and Hash coerces the hash values with #to_s"
266
+ fails "String#sub! with pattern and Hash coerces the hash values with #to_s"
267
+ fails "String#sub! with pattern and Hash uses the hash's value set from default_proc for missing keys"
268
+ fails "String#sub! with pattern and Hash sets $~ to MatchData of first match and nil when there's none for access from outside"
269
+ fails "String#sub! with pattern and Hash doesn't interpolate special sequences like \\1 for the block's return value"
270
+ fails "String#sub! with pattern and Hash keeps untrusted state"
271
+ fails "String#sub! with pattern and Hash untrusts self if a hash value is untrusted"
272
+ fails "String#sub! with pattern and Hash keeps tainted state"
273
+ fails "String#sub! with pattern and Hash taints self if a hash value is tainted"
274
+
275
+ fails "String#succ! is equivalent to succ, but modifies self in place (still returns self)"
276
+ fails "String#succ! raises a RuntimeError if self is frozen"
277
+
278
+ fails "String#tr! modifies self in place"
279
+ fails "String#tr! returns nil if no modification was made"
280
+ fails "String#tr! does not modify self if from_str is empty"
281
+ fails "String#tr! raises a RuntimeError if self is frozen"
282
+
283
+ fails "String#tr_s! modifies self in place"
284
+ fails "String#tr_s! returns nil if no modification was made"
285
+ fails "String#tr_s! does not modify self if from_str is empty"
286
+ fails "String#tr_s! raises a RuntimeError if self is frozen"
287
+
288
+ fails "String#setbyte raises a TypeError unless the second argument is an Integer"
289
+ fails "String#setbyte raises a RuntimeError if self is frozen"
290
+ fails "String#setbyte does not modify the original string when using String.new"
291
+ fails "String#setbyte sets a byte at an index greater than String size"
292
+ fails "String#setbyte raises an IndexError if the nexgative index is greater magnitude than the String bytesize"
293
+ fails "String#setbyte raises an IndexError if the index is greater than the String bytesize"
294
+ fails "String#setbyte regards a negative index as counting from the end of the String"
295
+ fails "String#setbyte can invalidate a String's encoding"
296
+ fails "String#setbyte allows changing bytes in multi-byte characters"
297
+ fails "String#setbyte changes the byte at the given index to the new byte"
298
+ fails "String#setbyte modifies the receiver"
299
+ fails "String#setbyte returns an Integer"
300
+
301
+ fails "String#prepend taints self if other is tainted"
302
+ fails "String#prepend works when given a subclass instance"
303
+ fails "String#prepend raises a RuntimeError when self if frozen"
304
+ fails "String#prepend raises a TypeError if the given argument can't be converted to a String"
305
+ fails "String#prepend converts the given argument to a String using to_str"
306
+ fails "String#prepend prepends the given argument to self and returns self"
307
+
308
+ fails "String#replace raises a RuntimeError on a frozen instance when self-replacing"
309
+ fails "String#replace raises a RuntimeError on a frozen instance that is modified"
310
+ fails "String#replace raises a TypeError if other can't be converted to string"
311
+ fails "String#replace tries to convert other to string using to_str"
312
+ fails "String#replace replaces the encoding of self with that of other"
313
+ fails "String#replace does not trust self if other is trusted"
314
+ fails "String#replace untrusts self if other is untrusted"
315
+ fails "String#replace does not untaint self if other is untainted"
316
+ fails "String#replace taints self if other is tainted"
317
+ fails "String#replace replaces the content of self with other"
318
+ fails "String#replace returns self"
319
+ fails "String#replace does not raise an exception when frozen"
320
+
321
+ fails "String#insert with index, other raises a RuntimeError if self is frozen"
322
+ fails "String#insert with index, other raises a TypeError if other can't be converted to string"
323
+ fails "String#insert with index, other taints self if string to insert is tainted"
324
+ fails "String#insert with index, other converts other to a string using to_str"
325
+ fails "String#insert with index, other converts index to an integer using to_int"
326
+ fails "String#insert with index, other raises an IndexError if the index is beyond string"
327
+ fails "String#insert with index, other inserts after the given character on an negative count"
328
+ fails "String#insert with index, other modifies self in place"
329
+ fails "String#insert with index, other inserts other before the character at the given index"
330
+
331
+ fails "String#delete! modifies self in place and returns self"
332
+ fails "String#delete! returns nil if no modifications were made"
333
+ fails "String#delete! raises a RuntimeError when self is frozen"
334
+
335
+ fails "String#concat concatenates the given argument to self and returns self"
336
+ fails "String#concat converts the given argument to a String using to_str"
337
+ fails "String#concat raises a TypeError if the given argument can't be converted to a String"
338
+ fails "String#concat raises a RuntimeError when self is frozen"
339
+ fails "String#concat works when given a subclass instance"
340
+ fails "String#concat taints self if other is tainted"
341
+ fails "String#concat untrusts self if other is untrusted"
342
+ fails "String#concat with Integer concatencates the argument interpreted as a codepoint"
343
+ fails "String#concat with Integer returns a ASCII-8BIT string if self is US-ASCII and the argument is between 128-255 (inclusive)"
344
+ fails "String#concat with Integer raises RangeError if the argument is an invalid codepoint for self's encoding"
345
+ fails "String#concat with Integer raises RangeError if the argument is negative"
346
+ fails "String#concat with Integer doesn't call to_int on its argument"
347
+ fails "String#concat with Integer raises a RuntimeError when self is frozen"
348
+ fails "String#concat when self is in an ASCII-incompatible encoding incompatible with the argument's encoding uses self's encoding if both are empty"
349
+ fails "String#concat when self is in an ASCII-incompatible encoding incompatible with the argument's encoding uses self's encoding if the argument is empty"
350
+ fails "String#concat when self is in an ASCII-incompatible encoding incompatible with the argument's encoding uses the argument's encoding if self is empty"
351
+ fails "String#concat when self is in an ASCII-incompatible encoding incompatible with the argument's encoding raises Encoding::CompatibilityError if neither are empty"
352
+ fails "String#concat when the argument is in an ASCII-incompatible encoding incompatible with self's encoding uses self's encoding if both are empty"
353
+ fails "String#concat when the argument is in an ASCII-incompatible encoding incompatible with self's encoding uses self's encoding if the argument is empty"
354
+ fails "String#concat when the argument is in an ASCII-incompatible encoding incompatible with self's encoding uses the argument's encoding if self is empty"
355
+ fails "String#concat when the argument is in an ASCII-incompatible encoding incompatible with self's encoding raises Encoding::CompatibilityError if neither are empty"
356
+ fails "String#concat when self and the argument are in different ASCII-compatible encodings uses self's encoding if both are ASCII-only"
357
+ fails "String#concat when self and the argument are in different ASCII-compatible encodings uses self's encoding if the argument is ASCII-only"
358
+ fails "String#concat when self and the argument are in different ASCII-compatible encodings uses the argument's encoding if self is ASCII-only"
359
+ fails "String#concat when self and the argument are in different ASCII-compatible encodings raises Encoding::CompatibilityError if neither are ASCII-only"
360
+ fails "String#concat when self is ASCII-8BIT and argument is US-ASCII uses ASCII-8BIT encoding"
361
+ end
@@ -0,0 +1,30 @@
1
+ opal_filter "{private,public,protected}_constant" do
2
+ fails "Module#public_constant marked constants in Object is defined? using ::Const form"
3
+ fails "Module#public_constant marked constants in Object can be accessed using ::Const form"
4
+ fails "Module#public_constant marked constants in a class is defined? with A::B form"
5
+ fails "Module#public_constant marked constants in a class can be accessed from outside the class"
6
+ fails "Module#public_constant marked constants in a module is defined? with A::B form"
7
+ fails "Module#public_constant marked constants in a module can be accessed from outside the module"
8
+ fails "Module#private_constant marked constants in Object is defined? through the normal search"
9
+ fails "Module#private_constant marked constants in Object is not defined? using ::Const form"
10
+ fails "Module#private_constant marked constants in Object cannot be accessed using ::Const form"
11
+ fails "Module#private_constant marked constants in a class is defined? from subclasses"
12
+ fails "Module#private_constant marked constants in a class is defined? from lexical scope"
13
+ fails "Module#private_constant marked constants in a class can be accessed from lexical scope"
14
+ fails "Module#private_constant marked constants in a class is defined? from the class itself"
15
+ fails "Module#private_constant marked constants in a class can be accessed from the class itself"
16
+ fails "Module#private_constant marked constants in a class is not defined? with A::B form"
17
+ fails "Module#private_constant marked constants in a class cannot be reopened as a class"
18
+ fails "Module#private_constant marked constants in a class cannot be reopened as a module"
19
+ fails "Module#private_constant marked constants in a class cannot be accessed from outside the class"
20
+ fails "Module#private_constant marked constants in a module is defined? from classes that include the module"
21
+ fails "Module#private_constant marked constants in a module is defined? from lexical scope"
22
+ fails "Module#private_constant marked constants in a module can be accessed from lexical scope"
23
+ fails "Module#private_constant marked constants in a module is defined? from the module itself"
24
+ fails "Module#private_constant marked constants in a module can be accessed from the module itself"
25
+ fails "Module#private_constant marked constants in a module is not defined? with A::B form"
26
+ fails "Module#private_constant marked constants in a module cannot be reopened as a class"
27
+ fails "Module#private_constant marked constants in a module cannot be reopened as a module"
28
+ fails "Module#private_constant marked constants in a module cannot be accessed from outside the module"
29
+ fails "Module#private_constant marked constants remain private even when updated"
30
+ end
@@ -0,0 +1,44 @@
1
+ opal_filter "Private methods" do
2
+ fails "Array#initialize is private"
3
+ fails "The defined? keyword when called with a method name having a module as a receiver returns nil if the method is private"
4
+ fails "Array#initialize_copy is private"
5
+
6
+ fails "BasicObject#initialize is a private instance method"
7
+ fails "BasicObject#method_missing is a private method"
8
+ fails "BasicObject#!= is a public instance method"
9
+ fails "BasicObject#! is a public instance method"
10
+
11
+ fails "Hash#initialize_copy is private"
12
+ fails "Hash#initialize is private"
13
+
14
+ fails "Struct#initialize is private"
15
+
16
+ fails "Defining an 'initialize' method sets the method's visibility to private"
17
+ fails "Defining an 'initialize_copy' method sets the method's visibility to private"
18
+
19
+ fails "Invoking a private getter method does not permit self as a receiver"
20
+ fails "The defined? keyword when called with a method name having a module as receiver returns nil if the method is private"
21
+ fails "The defined? keyword when called with a method name having a module as receiver returns nil if the method is protected"
22
+
23
+ fails "SimpleDelegator.new doesn't forward private method calls"
24
+ fails "SimpleDelegator.new doesn't forward private method calls even via send or __send__"
25
+ fails "SimpleDelegator.new forwards protected method calls"
26
+
27
+ fails "Set#initialize is private"
28
+
29
+ fails "Singleton.allocate is a private method"
30
+ fails "Singleton.new is a private method"
31
+
32
+ fails "The private keyword changes the visibility of the existing method in the subclass"
33
+ fails "The private keyword changes visiblity of previously called methods with same send/call site"
34
+ fails "The private keyword changes visibility of previously called method"
35
+ fails "The private keyword is overridden when a new class is opened"
36
+ fails "The private keyword marks following methods as being private"
37
+
38
+ fails "Class.inherited is called when marked as a public class method"
39
+ fails "Class#initialize is private"
40
+
41
+ fails "Math#atanh is a private instance method"
42
+
43
+ fails "Kernel#warn is a private method"
44
+ end