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,14 @@
1
+ opal_filter "Module" do
2
+ fails "A class definition has no class variables"
3
+ fails "A class definition allows the declaration of class variables in the body"
4
+ fails "A class definition allows the declaration of class variables in a class method"
5
+ fails "A class definition allows the declaration of class variables in an instance method"
6
+
7
+ fails "Module#method_defined? converts the given name to a string using to_str"
8
+ fails "Module#method_defined? raises a TypeError when the given object is not a string/symbol/fixnum"
9
+ fails "Module#method_defined? does not search Object or Kernel when called on a module"
10
+ fails "Module#method_defined? returns true if a public or private method with the given name is defined in self, self's ancestors or one of self's included modules"
11
+
12
+ fails "Module#const_defined? should not search parent scopes of classes and modules if inherit is false"
13
+ fails "Module#const_get should not search parent scopes of classes and modules if inherit is false"
14
+ end
@@ -0,0 +1,7 @@
1
+ opal_filter "nil" do
2
+ fails "NilClass#to_r returns 0/1"
3
+ fails "NilClass#to_c returns Complex(0, 0)"
4
+ fails "NilClass#rationalize raises ArgumentError when passed more than one argument"
5
+ fails "NilClass#rationalize ignores a single argument"
6
+ fails "NilClass#rationalize returns 0/1"
7
+ end
@@ -0,0 +1,20 @@
1
+ opal_filter "Fixnum bugs" do
2
+ fails "Integer#downto [stop] when self and stop are Fixnums raises an ArgumentError for invalid endpoints"
3
+
4
+ fails "Fixnum#to_s when no base given returns self converted to a String using base 10"
5
+
6
+ fails "Fixnum#zero? returns true if self is 0"
7
+ end
8
+
9
+ opal_filter "Fixnum#<< doesn't handle Bignum and large number checks" do
10
+ fails "Fixnum#<< with n << m returns a Bignum == fixnum_min() * 2 when fixnum_min() << 1 and n < 0"
11
+ fails "Fixnum#<< with n << m returns a Bignum == fixnum_max() * 2 when fixnum_max() << 1 and n > 0"
12
+ fails "Fixnum#<< with n << m returns 0 when m < 0 and m is a Bignum"
13
+ fails "Fixnum#<< with n << m returns 0 when m < 0 and m == p where 2**p > n >= 2**(p-1)"
14
+ end
15
+
16
+ opal_filter "Fixnum#>> doesn't handle Bignum" do
17
+ fails "Fixnum#>> with n >> m returns a Bignum == fixnum_max() * 2 when fixnum_max() >> -1 and n > 0"
18
+ fails "Fixnum#>> with n >> m returns a Bignum == fixnum_min() * 2 when fixnum_min() >> -1 and n < 0"
19
+ fails "Fixnum#>> with n >> m returns 0 when m is a Bignum"
20
+ end
@@ -0,0 +1,14 @@
1
+ opal_filter "Opal bugs" do
2
+ fails "Array#join raises a NoMethodError if an element does not respond to #to_str, #to_ary, or #to_s"
3
+
4
+ # arity checking bugs
5
+ fails "Array#shift passed a number n as an argument raises an ArgumentError if more arguments are passed"
6
+ fails "Array#pop passed a number n as an argument raises an ArgumentError if more arguments are passed"
7
+
8
+ # lacking regexp conversion
9
+ fails "String#index with Regexp supports \\G which matches at the given start offset"
10
+ fails "String#index with Regexp starts the search at the given offset"
11
+ fails "String#index with Regexp returns the index of the first match of regexp"
12
+
13
+ fails "Kernel#warn requires multiple arguments"
14
+ end
@@ -0,0 +1,11 @@
1
+ opal_filter "RegExp" do
2
+ fails "Regexp#eql? is true if self and other have the same character set code"
3
+ fails "Regexp#== is true if self and other have the same character set code"
4
+ fails "Regexp#~ matches against the contents of $_"
5
+ fails "Regexp#match uses the start as a character offset"
6
+ fails "Regexp#match matches the input at a given position"
7
+ fails "Regexp#match with [string, position] when given a positive position matches the input at a given position"
8
+ fails "Regexp#match with [string, position] when given a negative position matches the input at a given position"
9
+ fails "MatchData#regexp returns the pattern used in the match"
10
+ fails "MatchData#values_at when passed a Range returns an array of the matching value"
11
+ end
@@ -0,0 +1,7 @@
1
+ opal_filter "Set" do
2
+ fails "Set#== returns true when the passed Object is a Set and self and the Object contain the same elements"
3
+ fails "Set#== does not depend on the order of nested Sets"
4
+ fails "Set#merge raises an ArgumentError when passed a non-Enumerable"
5
+
6
+ fails "Emumerable#to_set allows passing an alternate class for Set"
7
+ end
@@ -0,0 +1,6 @@
1
+ opal_filter "Singleton" do
2
+ fails "Singleton#_dump returns an empty string"
3
+ fails "Singleton#_dump returns an empty string from a singleton subclass"
4
+ fails "Singleton.instance returns an instance of the singleton's clone"
5
+ fails "Singleton.instance returns the same instance for multiple class to instance on clones"
6
+ end
@@ -0,0 +1,360 @@
1
+ opal_filter "String" do
2
+ fails "String#=== ignores subclass differences"
3
+ fails "String#=== returns false if obj does not respond to to_str"
4
+ fails "String#=== returns obj == self if obj responds to to_str"
5
+ fails "String#=== returns obj == self if obj responds to to_str"
6
+
7
+ fails "String#=~ raises a TypeError if a obj is a string"
8
+
9
+ fails "String#[] calls to_int on the given index"
10
+ fails "String#[] calls to_int on the given index"
11
+ fails "String#[] raises a TypeError if the given index is nil"
12
+ fails "String#[] raises a TypeError if the given index can't be converted to an Integer"
13
+ fails "String#[] with index, length returns nil if the length is negative"
14
+ fails "String#[] with index, length calls to_int on the given index and the given length"
15
+ fails "String#[] with index, length calls to_int on the given index and the given length"
16
+ fails "String#[] with index, length raises a TypeError when idx or length can't be converted to an integer"
17
+ fails "String#[] with index, length raises a TypeError when the given index or the given length is nil"
18
+ fails "String#[] with Range returns nil if the beginning of the range falls outside of self"
19
+ fails "String#[] with Range calls to_int on range arguments"
20
+ fails "String#[] with Range calls to_int on range arguments"
21
+ fails "String#[] with Range handles repeated application"
22
+ fails "String#[] with Regexp returns the matching portion of self"
23
+ fails "String#[] with Regexp returns nil if there is no match"
24
+ fails "String#[] with Regexp sets $~ to MatchData when there is a match and nil when there's none"
25
+ fails "String#[] with Regexp, index returns the capture for the given index"
26
+ fails "String#[] with Regexp, index returns nil if there is no match"
27
+ fails "String#[] with Regexp, index returns nil if there is no capture for the given index"
28
+ fails "String#[] with Regexp, index calls to_int on the given index"
29
+ fails "String#[] with Regexp, index calls to_int on the given index"
30
+ fails "String#[] with Regexp, index raises a TypeError when the given index can't be converted to Integer"
31
+ fails "String#[] with Regexp, index raises a TypeError when the given index is nil"
32
+ fails "String#[] with Regexp, index sets $~ to MatchData when there is a match and nil when there's none"
33
+ fails "String#[] with String returns other_str if it occurs in self"
34
+ fails "String#[] with String returns nil if there is no match"
35
+ fails "String#[] with String doesn't call to_str on its argument"
36
+ fails "String#[] with String returns a subclass instance when given a subclass instance"
37
+
38
+ fails "String#dup does not copy constants defined in the singleton class"
39
+ fails "String#dup does not modify the original string when changing dupped string"
40
+
41
+ fails "String#end_with? converts its argument using :to_str"
42
+ fails "String#end_with? returns true if other is empty"
43
+
44
+ fails "String#each_line accepts a string separator"
45
+ fails "String#each_line passes self as a whole to the block if the separator is nil"
46
+ fails "String#each_line yields paragraphs (broken by 2 or more successive newlines) when passed ''"
47
+ fails "String#each_line uses $/ as the separator when none is given"
48
+ fails "String#each_line yields subclass instances for subclasses"
49
+ fails "String#each_line tries to convert the separator to a string using to_str"
50
+ fails "String#each_line tries to convert the separator to a string using to_str"
51
+ fails "String#each_line does not care if the string is modified while substituting"
52
+ fails "String#each_line raises a TypeError when the separator can't be converted to a string"
53
+ fails "String#each_line accept string separator"
54
+ fails "String#each_line raises a TypeError when the separator is a symbol"
55
+ fails "String#each_line returns an enumerator when no block given"
56
+
57
+ fails "String#gsub with pattern and replacement inserts the replacement around every character when the pattern collapses"
58
+ fails "String#gsub with pattern and replacement respects $KCODE when the pattern collapses"
59
+ fails "String#gsub with pattern and replacement doesn't freak out when replacing ^"
60
+ fails "String#gsub with pattern and replacement returns a copy of self with all occurrences of pattern replaced with replacement"
61
+ fails "String#gsub with pattern and replacement supports \\G which matches at the beginning of the remaining (non-matched) string"
62
+ fails "String#gsub with pattern and replacement replaces \\1 sequences with the regexp's corresponding capture"
63
+ fails "String#gsub with pattern and replacement treats \\1 sequences without corresponding captures as empty strings"
64
+ fails "String#gsub with pattern and replacement replaces \\& and \\0 with the complete match"
65
+ fails "String#gsub with pattern and replacement replaces \\` with everything before the current match"
66
+ fails "String#gsub with pattern and replacement replaces \\' with everything after the current match"
67
+ fails "String#gsub with pattern and replacement replaces \\+ with the last paren that actually matched"
68
+ fails "String#gsub with pattern and replacement treats \\+ as an empty string if there was no captures"
69
+ fails "String#gsub with pattern and replacement maps \\\\ in replacement to \\"
70
+ fails "String#gsub with pattern and replacement handles pattern collapse without $KCODE"
71
+ fails "String#gsub with pattern and replacement raises a TypeError when replacement can't be converted to a string"
72
+ fails "String#gsub with pattern and replacement sets $~ to MatchData of last match and nil when there's none"
73
+ fails "String#gsub with pattern and Hash returns a copy of self with all occurrences of pattern replaced with the value of the corresponding hash key"
74
+ fails "String#gsub with pattern and Hash ignores keys that don't correspond to matches"
75
+ fails "String#gsub with pattern and Hash returns an empty string if the pattern matches but the hash specifies no replacements"
76
+ fails "String#gsub with pattern and Hash ignores non-String keys"
77
+ fails "String#gsub with pattern and Hash uses a key's value as many times as needed"
78
+ fails "String#gsub with pattern and Hash uses the hash's default value for missing keys"
79
+ fails "String#gsub with pattern and Hash coerces the hash values with #to_s"
80
+ fails "String#gsub with pattern and Hash coerces the hash values with #to_s"
81
+ fails "String#gsub with pattern and Hash uses the hash's value set from default_proc for missing keys"
82
+ fails "String#gsub with pattern and Hash sets $~ to MatchData of last match and nil when there's none for access from outside"
83
+ fails "String#gsub with pattern and Hash doesn't interpolate special sequences like \\1 for the block's return value"
84
+ fails "String#gsub with pattern and block sets $~ for access from the block"
85
+ fails "String#gsub with pattern and block restores $~ after leaving the block"
86
+ fails "String#gsub with pattern and block sets $~ to MatchData of last match and nil when there's none for access from outside"
87
+
88
+ fails "String#index raises a TypeError if passed a Symbol"
89
+
90
+ fails "String#intern does not special case certain operators"
91
+ fails "String#intern special cases +(binary) and -(binary)"
92
+
93
+ fails "String#lines accepts a string separator"
94
+ fails "String#lines should split on the default record separator and return enumerator if not block is given"
95
+ fails "String#lines splits using default newline separator when none is specified"
96
+ fails "String#lines splits self using the supplied record separator and passes each substring to the block"
97
+ fails "String#lines passes self as a whole to the block if the separator is nil"
98
+ fails "String#lines yields paragraphs (broken by 2 or more successive newlines) when passed ''"
99
+ fails "String#lines yields subclass instances for subclasses"
100
+ fails "String#lines returns self"
101
+ fails "String#lines tries to convert the separator to a string using to_str"
102
+ fails "String#lines tries to convert the separator to a string using to_str"
103
+ fails "String#lines does not care if the string is modified while substituting"
104
+ fails "String#lines raises a TypeError when the separator can't be converted to a string"
105
+ fails "String#lines accept string separator"
106
+ fails "String#lines raises a TypeError when the separator is a symbol"
107
+ fails "String#lines returns an array when no block given"
108
+
109
+ fails "String#lstrip returns a copy of self with leading whitespace removed"
110
+
111
+ fails "String#next returns the successor by increasing the rightmost alphanumeric (digit => digit, letter => letter with same case)"
112
+ fails "String#next increases the next best alphanumeric (jumping over non-alphanumerics) if there is a carry"
113
+ fails "String#next increases the next best character if there is a carry for non-alphanumerics"
114
+ fails "String#next adds an additional character (just left to the last increased one) if there is a carry and no character left to increase"
115
+
116
+
117
+ fails "String#partition with String accepts regexp"
118
+ fails "String#partition with String sets global vars if regexp used"
119
+ fails "String#partition with String converts its argument using :to_str"
120
+ fails "String#partition with String converts its argument using :to_str"
121
+ fails "String#partition with String raises an error if not convertible to string"
122
+
123
+ fails "String#rindex with object raises a TypeError if obj isn't a String, Fixnum or Regexp"
124
+ fails "String#rindex with object tries to convert obj to a string via to_str"
125
+ fails "String#rindex with String ignores string subclasses"
126
+ fails "String#rindex with String returns nil if the substring isn't found"
127
+ fails "String#rindex with String raises a TypeError when given offset is nil"
128
+ fails "String#rindex with Regexp behaves the same as String#rindex(string) for escaped string regexps"
129
+ fails "String#rindex with Regexp returns the index of the first match from the end of string of regexp"
130
+ fails "String#rindex with Regexp sets $~ to MatchData of match and nil when there's none"
131
+ fails "String#rindex with Regexp starts the search at the given offset"
132
+ fails "String#rindex with Regexp supports \\G which matches at the given start offset"
133
+ fails "String#rindex with Regexp tries to convert start_offset to an integer via to_int"
134
+ fails "String#rindex with Regexp raises a TypeError when given offset is nil"
135
+
136
+ fails "String#rstrip returns a copy of self with trailing whitespace removed"
137
+ fails "String#rstrip returns a copy of self with all trailing whitespace and NULL bytes removed"
138
+
139
+ fails "String#slice calls to_int on the given index"
140
+ fails "String#slice calls to_int on the given index"
141
+ fails "String#slice raises a TypeError if the given index is nil"
142
+ fails "String#slice raises a TypeError if the given index can't be converted to an Integer"
143
+ fails "String#slice with index, length returns nil if the length is negative"
144
+ fails "String#slice with index, length calls to_int on the given index and the given length"
145
+ fails "String#slice with index, length calls to_int on the given index and the given length"
146
+ fails "String#slice with index, length raises a TypeError when idx or length can't be converted to an integer"
147
+ fails "String#slice with index, length raises a TypeError when the given index or the given length is nil"
148
+ fails "String#slice with Range returns nil if the beginning of the range falls outside of self"
149
+ fails "String#slice with Range calls to_int on range arguments"
150
+ fails "String#slice with Range calls to_int on range arguments"
151
+ fails "String#slice with Range handles repeated application"
152
+ fails "String#slice with Regexp returns the matching portion of self"
153
+ fails "String#slice with Regexp returns nil if there is no match"
154
+ fails "String#slice with Regexp sets $~ to MatchData when there is a match and nil when there's none"
155
+ fails "String#slice with Regexp, index returns the capture for the given index"
156
+ fails "String#slice with Regexp, index returns nil if there is no match"
157
+ fails "String#slice with Regexp, index returns nil if there is no capture for the given index"
158
+ fails "String#slice with Regexp, index calls to_int on the given index"
159
+ fails "String#slice with Regexp, index calls to_int on the given index"
160
+ fails "String#slice with Regexp, index raises a TypeError when the given index can't be converted to Integer"
161
+ fails "String#slice with Regexp, index raises a TypeError when the given index is nil"
162
+ fails "String#slice with Regexp, index sets $~ to MatchData when there is a match and nil when there's none"
163
+ fails "String#slice with String returns other_str if it occurs in self"
164
+ fails "String#slice with String returns nil if there is no match"
165
+ fails "String#slice with String doesn't call to_str on its argument"
166
+ fails "String#slice with String returns a subclass instance when given a subclass instance"
167
+ fails "String#slice with Regexp, group"
168
+
169
+ fails "String#split with String returns subclass instances based on self"
170
+ fails "String#split with Regexp respects $KCODE when splitting between characters"
171
+ fails "String#split with Regexp includes all captures in the result array"
172
+ fails "String#split with Regexp does not include non-matching captures in the result array"
173
+ fails "String#split with Regexp returns subclass instances based on self"
174
+ fails "String#split with Regexp does not call constructor on created subclass instances"
175
+ fails "String#split with String does not call constructor on created subclass instances"
176
+
177
+ fails "String#squeeze negates sets starting with ^"
178
+ fails "String#squeeze squeezes all chars in a sequence"
179
+ fails "String#squeeze raises an ArgumentError when the parameter is out of sequence"
180
+
181
+ fails "String#start_with? ignores arguments not convertible to string"
182
+ fails "String#start_with? converts its argument using :to_str"
183
+
184
+ fails "String#strip returns a new string with leading and trailing whitespace removed"
185
+ fails "String#strip returns a copy of self with trailing NULL bytes and whitespace"
186
+
187
+ fails "String#sub with pattern, replacement supports \\G which matches at the beginning of the string"
188
+ fails "String#sub with pattern, replacement replaces \\1 sequences with the regexp's corresponding capture"
189
+ fails "String#sub with pattern, replacement treats \\1 sequences without corresponding captures as empty strings"
190
+ fails "String#sub with pattern, replacement replaces \\& and \\0 with the complete match"
191
+ fails "String#sub with pattern, replacement replaces \\` with everything before the current match"
192
+ fails "String#sub with pattern, replacement replaces \\' with everything after the current match"
193
+ fails "String#sub with pattern, replacement replaces \\+ with the last paren that actually matched"
194
+ fails "String#sub with pattern, replacement treats \\+ as an empty string if there was no captures"
195
+ fails "String#sub with pattern, replacement sets $~ to MatchData of match and nil when there's none"
196
+ fails "String#sub with pattern and block sets $~ for access from the block"
197
+ fails "String#sub with pattern and block sets $~ to MatchData of last match and nil when there's none for access from outside"
198
+ fails "String#sub with pattern and block doesn't raise a RuntimeError if the string is modified while substituting"
199
+
200
+ fails "String#succ returns the successor by increasing the rightmost alphanumeric (digit => digit, letter => letter with same case)"
201
+ fails "String#succ increases the next best alphanumeric (jumping over non-alphanumerics) if there is a carry"
202
+ fails "String#succ increases the next best character if there is a carry for non-alphanumerics"
203
+ fails "String#succ adds an additional character (just left to the last increased one) if there is a carry and no character left to increase"
204
+
205
+ fails "String#sum returns a basic n-bit checksum of the characters in self"
206
+ fails "String#sum tries to convert n to an integer using to_int"
207
+ fails "String#sum tries to convert n to an integer using to_int"
208
+ fails "String#sum returns sum of the bytes in self if n less or equal to zero"
209
+
210
+ fails "String#to_str returns a new instance of String when called on a subclass"
211
+
212
+ fails "String#to_sym does not special case certain operators"
213
+ fails "String#to_sym special cases +(binary) and -(binary)"
214
+
215
+ fails "String#tr raises an ArgumentError a descending range in the replacement as containing just the start character"
216
+ fails "String#tr raises an ArgumentError a descending range in the source as empty"
217
+ fails "String#tr translates chars not in from_string when it starts with a ^"
218
+ fails "String#tr tries to convert from_str and to_str to strings using to_str"
219
+ fails "String#tr tries to convert from_str and to_str to strings using to_str"
220
+
221
+ fails "String#tr_s translates chars not in from_string when it starts with a ^"
222
+ fails "String#tr_s tries to convert from_str and to_str to strings using to_str"
223
+
224
+ fails "String#sub with pattern, replacement replaces \\\\\\+ with \\\\+"
225
+ fails "String#sub with pattern, replacement replaces \\\\\1 with \\"
226
+ fails "String#sub with pattern, replacement replaces \\\1 with \1"
227
+ fails "String#sub with pattern and Hash returns a copy of self with the first occurrence of pattern replaced with the value of the corresponding hash key"
228
+ fails "String#sub with pattern and Hash removes keys that don't correspond to matches"
229
+ fails "String#sub with pattern and Hash ignores non-String keys"
230
+ fails "String#sub with pattern and Hash uses a key's value only a single time"
231
+ fails "String#sub with pattern and Hash uses the hash's default value for missing keys"
232
+ fails "String#sub with pattern and Hash coerces the hash values with #to_s"
233
+ fails "String#sub with pattern and Hash uses the hash's value set from default_proc for missing keys"
234
+ fails "String#sub with pattern and Hash sets $~ to MatchData of first match and nil when there's none for access from outside"
235
+ fails "String#sub with pattern and Hash doesn't interpolate special sequences like \\1 for the block's return value"
236
+ fails "String#sub with pattern and Hash untrusts the result if the original string is untrusted"
237
+ fails "String#sub with pattern and Hash untrusts the result if a hash value is untrusted"
238
+ fails "String#sub with pattern and Hash taints the result if the original string is tainted"
239
+ fails "String#sub with pattern and Hash taints the result if a hash value is tainted"
240
+
241
+
242
+
243
+ fails "String#casecmp independent of case for non-ASCII characters returns -1 when numerically less than other"
244
+ fails "String#casecmp independent of case for non-ASCII characters returns 1 when numerically greater than other"
245
+
246
+ fails "String#byteslice returns the character code of the character at the given index"
247
+ fails "String#byteslice returns nil if index is outside of self"
248
+ fails "String#byteslice calls to_int on the given index"
249
+ fails "String#byteslice raises a TypeError if the given index is nil"
250
+ fails "String#byteslice raises a TypeError if the given index can't be converted to an Integer"
251
+ fails "String#byteslice with index, length returns the substring starting at the given index with the given length"
252
+ fails "String#byteslice with index, length always taints resulting strings when self is tainted"
253
+ fails "String#byteslice with index, length returns nil if the offset falls outside of self"
254
+ fails "String#byteslice with index, length returns nil if the length is negative"
255
+ fails "String#byteslice with index, length calls to_int on the given index and the given length"
256
+ fails "String#byteslice with index, length raises a TypeError when idx or length can't be converted to an integer"
257
+ fails "String#byteslice with index, length raises a TypeError when the given index or the given length is nil"
258
+ fails "String#byteslice with index, length returns subclass instances"
259
+ fails "String#byteslice with index, length handles repeated application"
260
+ fails "String#byteslice with Range returns the substring given by the offsets of the range"
261
+ fails "String#byteslice with Range returns nil if the beginning of the range falls outside of self"
262
+ fails "String#byteslice with Range returns an empty string if range.begin is inside self and > real end"
263
+ fails "String#byteslice with Range always taints resulting strings when self is tainted"
264
+ fails "String#byteslice with Range returns subclass instances"
265
+ fails "String#byteslice with Range calls to_int on range arguments"
266
+ fails "String#byteslice with Range works with Range subclasses"
267
+ fails "String#byteslice with Range handles repeated application"
268
+
269
+ fails "String#count counts occurrences of chars from the intersection of the specified sets"
270
+ fails "String#count negates sets starting with ^"
271
+ fails "String#count counts all chars in a sequence"
272
+ fails "String#count raises if the given sequences are invalid"
273
+ fails "String#count calls #to_str to convert each set arg to a String"
274
+ fails "String#count raises a TypeError when a set arg can't be converted to a string"
275
+
276
+ fails "String#delete returns a new string with the chars from the intersection of sets removed"
277
+ fails "String#delete raises an ArgumentError when given no arguments"
278
+ fails "String#delete negates sets starting with ^"
279
+ fails "String#delete deletes all chars in a sequence"
280
+ fails "String#delete respects backslash for escaping a -"
281
+ fails "String#delete raises if the given ranges are invalid"
282
+ fails "String#delete taints result when self is tainted"
283
+ fails "String#delete tries to convert each set arg to a string using to_str"
284
+ fails "String#delete raises a TypeError when one set arg can't be converted to a string"
285
+ fails "String#delete returns subclass instances when called on a subclass"
286
+
287
+ fails "String#each_byte returns an enumerator when no block given"
288
+ fails "String#each_byte keeps iterating from the old position (to new string end) when self changes"
289
+ fails "String#each_byte passes each byte in self to the given block"
290
+
291
+ fails "String#== returns obj == self if obj responds to to_str"
292
+ fails "String#== returns false if obj does not respond to to_str"
293
+ fails "String#eql? when given a non-String returns false"
294
+
295
+ fails "String#hex treats leading characters of self as a string of hex digits"
296
+
297
+ fails "String#initialize with an argument raises a RuntimeError on a frozen instance when self-replacing"
298
+ fails "String#initialize with an argument raises a RuntimeError on a frozen instance that is modified"
299
+ fails "String#initialize with an argument raises a TypeError if other can't be converted to string"
300
+ fails "String#initialize with an argument tries to convert other to string using to_str"
301
+ fails "String#initialize with an argument replaces the encoding of self with that of other"
302
+ fails "String#initialize with an argument does not trust self if other is trusted"
303
+ fails "String#initialize with an argument untrusts self if other is untrusted"
304
+ fails "String#initialize with an argument does not untaint self if other is untainted"
305
+ fails "String#initialize with an argument taints self if other is tainted"
306
+ fails "String#initialize with an argument replaces the content of self with other"
307
+ fails "String#initialize with an argument returns self"
308
+ fails "String#initialize with no arguments does not raise an exception when frozen"
309
+ fails "String#initialize is a private method"
310
+
311
+ fails "String#upto passes successive values, starting at self and ending at other_string, to the block"
312
+ fails "String#upto calls the block once even when start eqals stop"
313
+ fails "String#upto doesn't call block with self even if self is less than stop but stop length is less than self length"
314
+ fails "String#upto doesn't call block if stop is less than self and stop length is less than self length"
315
+ fails "String#upto doesn't call the block if self is greater than stop"
316
+ fails "String#upto stops iterating as soon as the current value's character count gets higher than stop's"
317
+ fails "String#upto returns self"
318
+ fails "String#upto tries to convert other to string using to_str"
319
+ fails "String#upto raises a TypeError if other can't be converted to a string"
320
+ fails "String#upto does not work with symbols"
321
+ fails "String#upto returns an enumerator when no block given"
322
+ fails "String#upto returns non-alphabetic characters in the ASCII range for single letters"
323
+ fails "String#upto stops before the last value if exclusive"
324
+ fails "String#upto on sequence of numbers calls the block as Integer#upto"
325
+
326
+ fails "String#* always taints the result when self is tainted"
327
+ fails "String#* returns subclass instances"
328
+ fails "String#* raises a RangeError when given integer is a Bignum"
329
+ fails "String#* raises an ArgumentError when given integer is negative"
330
+ fails "String#* tries to convert the given argument to an integer using to_int"
331
+
332
+ fails "String.new returns a binary String"
333
+ fails "String.new raises TypeError on inconvertible object"
334
+ fails "String.new is called on subclasses"
335
+ fails "String.new returns an instance of a subclass"
336
+ fails "String.new returns a new string given a string argument"
337
+ fails "String.new returns a fully-formed String"
338
+
339
+ fails "String#+ taints the result when self or other is tainted"
340
+ fails "String#+ when self is in an ASCII-incompatible encoding incompatible with the argument's encoding uses self's encoding if both are empty"
341
+ 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"
342
+ 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"
343
+ fails "String#+ when self is in an ASCII-incompatible encoding incompatible with the argument's encoding raises Encoding::CompatibilityError if neither are empty"
344
+ fails "String#+ when the argument is in an ASCII-incompatible encoding incompatible with self's encoding uses self's encoding if both are empty"
345
+ 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"
346
+ 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"
347
+ fails "String#+ when the argument is in an ASCII-incompatible encoding incompatible with self's encoding raises Encoding::CompatibilityError if neither are empty"
348
+ fails "String#+ when self and the argument are in different ASCII-compatible encodings uses self's encoding if both are ASCII-only"
349
+ fails "String#+ when self and the argument are in different ASCII-compatible encodings uses self's encoding if the argument is ASCII-only"
350
+ fails "String#+ when self and the argument are in different ASCII-compatible encodings uses the argument's encoding if self is ASCII-only"
351
+ fails "String#+ when self and the argument are in different ASCII-compatible encodings raises Encoding::CompatibilityError if neither are ASCII-only"
352
+ fails "String#+ when self is ASCII-8BIT and argument is US-ASCII uses ASCII-8BIT encoding"
353
+
354
+ fails "String#rpartition with String raises an error if not convertible to string"
355
+ fails "String#rpartition with String converts its argument using :to_str"
356
+ fails "String#rpartition with String affects $~"
357
+ fails "String#rpartition with String accepts regexp"
358
+ fails "String#rpartition with String always returns 3 elements"
359
+ fails "String#rpartition with String returns an array of substrings based on splitting on the given string"
360
+ end