opal 0.8.1 → 0.9.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 (331) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -2
  3. data/.gitmodules +3 -3
  4. data/.jshintrc +17 -20
  5. data/.travis.yml +22 -11
  6. data/CHANGELOG.md +51 -1
  7. data/CODE_OF_CONDUCT.md +15 -0
  8. data/CONTRIBUTING.md +125 -9
  9. data/Gemfile +1 -1
  10. data/Guardfile +2 -2
  11. data/README.md +95 -29
  12. data/Rakefile +1 -1
  13. data/benchmark/benchmarks +103 -0
  14. data/benchmark/bm_array_flatten.rb +9 -0
  15. data/benchmark/bm_array_intersection_numbers.rb +7 -0
  16. data/benchmark/bm_array_intersection_objects.rb +7 -0
  17. data/benchmark/bm_array_intersection_strings.rb +7 -0
  18. data/benchmark/bm_array_join_ary.rb +9 -0
  19. data/benchmark/bm_array_minus_numbers.rb +7 -0
  20. data/benchmark/bm_array_minus_objects.rb +7 -0
  21. data/benchmark/bm_array_minus_strings.rb +7 -0
  22. data/benchmark/bm_array_union_numbers.rb +7 -0
  23. data/benchmark/bm_array_union_objects.rb +7 -0
  24. data/benchmark/bm_array_union_strings.rb +7 -0
  25. data/benchmark/bm_array_uniq_bang_numbers.rb +5 -0
  26. data/benchmark/bm_array_uniq_bang_objects.rb +5 -0
  27. data/benchmark/bm_array_uniq_bang_strings.rb +5 -0
  28. data/benchmark/bm_array_uniq_numbers.rb +5 -0
  29. data/benchmark/bm_array_uniq_objects.rb +5 -0
  30. data/benchmark/bm_array_uniq_strings.rb +5 -0
  31. data/benchmark/bm_dispatch_bind_table.rb +57 -0
  32. data/benchmark/bm_dispatch_code_gen.rb +65 -0
  33. data/benchmark/bm_dispatch_code_gen_if.rb +64 -0
  34. data/benchmark/bm_dispatch_hardcoded.rb +44 -0
  35. data/benchmark/bm_dispatch_send.rb +38 -0
  36. data/benchmark/bm_dispatch_send_table.rb +57 -0
  37. data/benchmark/bm_hash_assoc_object.rb +11 -0
  38. data/benchmark/bm_hash_assoc_string.rb +9 -0
  39. data/benchmark/bm_hash_clone_object.rb +9 -0
  40. data/benchmark/bm_hash_clone_string.rb +9 -0
  41. data/benchmark/bm_hash_delete_object.rb +11 -0
  42. data/benchmark/bm_hash_delete_string.rb +9 -0
  43. data/benchmark/bm_hash_each_key_object.rb +9 -0
  44. data/benchmark/bm_hash_each_key_string.rb +9 -0
  45. data/benchmark/bm_hash_each_object.rb +9 -0
  46. data/benchmark/bm_hash_each_string.rb +9 -0
  47. data/benchmark/bm_hash_each_value_object.rb +9 -0
  48. data/benchmark/bm_hash_each_value_string.rb +9 -0
  49. data/benchmark/bm_hash_element_reference_object.rb +11 -0
  50. data/benchmark/bm_hash_element_reference_string.rb +9 -0
  51. data/benchmark/bm_hash_element_set_object.rb +5 -0
  52. data/benchmark/bm_hash_element_set_string.rb +5 -0
  53. data/benchmark/bm_hash_equal_value_object.rb +14 -0
  54. data/benchmark/bm_hash_equal_value_string.rb +11 -0
  55. data/benchmark/bm_hash_fetch_object.rb +11 -0
  56. data/benchmark/bm_hash_fetch_string.rb +9 -0
  57. data/benchmark/bm_hash_flatten_object.rb +9 -0
  58. data/benchmark/bm_hash_flatten_string.rb +9 -0
  59. data/benchmark/bm_hash_has_key_object.rb +11 -0
  60. data/benchmark/bm_hash_has_key_string.rb +9 -0
  61. data/benchmark/bm_hash_has_value_object.rb +9 -0
  62. data/benchmark/bm_hash_has_value_string.rb +9 -0
  63. data/benchmark/bm_hash_hash_object.rb +9 -0
  64. data/benchmark/bm_hash_hash_string.rb +9 -0
  65. data/benchmark/bm_hash_inspect_object.rb +9 -0
  66. data/benchmark/bm_hash_inspect_string.rb +9 -0
  67. data/benchmark/bm_hash_invert_object.rb +9 -0
  68. data/benchmark/bm_hash_invert_string.rb +9 -0
  69. data/benchmark/bm_hash_keep_if_object.rb +9 -0
  70. data/benchmark/bm_hash_keep_if_string.rb +9 -0
  71. data/benchmark/bm_hash_key_object.rb +9 -0
  72. data/benchmark/bm_hash_key_string.rb +9 -0
  73. data/benchmark/bm_hash_keys_object.rb +9 -0
  74. data/benchmark/bm_hash_keys_string.rb +9 -0
  75. data/benchmark/bm_hash_literal_mixed_large.rb +3 -0
  76. data/benchmark/bm_hash_literal_mixed_small.rb +3 -0
  77. data/benchmark/bm_hash_literal_object_large.rb +4 -0
  78. data/benchmark/bm_hash_literal_object_small.rb +3 -0
  79. data/benchmark/bm_hash_literal_string_large.rb +4 -0
  80. data/benchmark/bm_hash_literal_string_small.rb +3 -0
  81. data/benchmark/bm_hash_merge_object.rb +22 -0
  82. data/benchmark/bm_hash_merge_string.rb +18 -0
  83. data/benchmark/bm_hash_rassoc_object.rb +9 -0
  84. data/benchmark/bm_hash_rassoc_string.rb +9 -0
  85. data/benchmark/bm_hash_rehash_object.rb +9 -0
  86. data/benchmark/bm_hash_rehash_string.rb +9 -0
  87. data/benchmark/bm_hash_reject_bang_object.rb +9 -0
  88. data/benchmark/bm_hash_reject_bang_string.rb +9 -0
  89. data/benchmark/bm_hash_reject_object.rb +9 -0
  90. data/benchmark/bm_hash_reject_string.rb +9 -0
  91. data/benchmark/bm_hash_replace_object.rb +18 -0
  92. data/benchmark/bm_hash_replace_string.rb +14 -0
  93. data/benchmark/bm_hash_select_bang_object.rb +9 -0
  94. data/benchmark/bm_hash_select_bang_string.rb +9 -0
  95. data/benchmark/bm_hash_select_object.rb +9 -0
  96. data/benchmark/bm_hash_select_string.rb +9 -0
  97. data/benchmark/bm_hash_shift_object.rb +10 -0
  98. data/benchmark/bm_hash_shift_string.rb +10 -0
  99. data/benchmark/bm_hash_to_a_object.rb +9 -0
  100. data/benchmark/bm_hash_to_a_string.rb +9 -0
  101. data/benchmark/bm_hash_to_h_object.rb +10 -0
  102. data/benchmark/bm_hash_to_h_string.rb +10 -0
  103. data/benchmark/bm_hash_values_object.rb +9 -0
  104. data/benchmark/bm_hash_values_string.rb +9 -0
  105. data/benchmark/run.rb +48 -0
  106. data/bin/opal-mspec +1 -1
  107. data/bin/opal-repl +4 -4
  108. data/docs/compiled_ruby.md +214 -56
  109. data/docs/configuring_gems.md +2 -2
  110. data/docs/faq.md +2 -2
  111. data/docs/getting_started.md +19 -2
  112. data/docs/jquery.md +5 -5
  113. data/docs/opal_parser.md +53 -0
  114. data/docs/unsupported_features.md +2 -2
  115. data/docs/upgrading.md +22 -0
  116. data/docs/using_sprockets.md +15 -0
  117. data/examples/rack/config.ru +13 -0
  118. data/examples/sinatra/config.ru +4 -5
  119. data/lib/mspec/opal/runner.rb +54 -11
  120. data/lib/opal.rb +1 -1
  121. data/lib/opal/builder.rb +1 -1
  122. data/lib/opal/builder_processors.rb +1 -1
  123. data/lib/opal/cli.rb +17 -13
  124. data/lib/opal/cli_options.rb +1 -1
  125. data/lib/opal/compiler.rb +12 -0
  126. data/lib/opal/config.rb +4 -0
  127. data/lib/opal/nodes/arglist.rb +5 -7
  128. data/lib/opal/nodes/call.rb +6 -1
  129. data/lib/opal/nodes/call_special.rb +74 -0
  130. data/lib/opal/nodes/def.rb +35 -28
  131. data/lib/opal/nodes/definitions.rb +3 -5
  132. data/lib/opal/nodes/for.rb +13 -0
  133. data/lib/opal/nodes/helpers.rb +15 -1
  134. data/lib/opal/nodes/if.rb +5 -5
  135. data/lib/opal/nodes/iter.rb +6 -1
  136. data/lib/opal/nodes/literal.rb +1 -1
  137. data/lib/opal/nodes/logic.rb +2 -2
  138. data/lib/opal/nodes/masgn.rb +1 -2
  139. data/lib/opal/nodes/module.rb +2 -1
  140. data/lib/opal/nodes/rescue.rb +10 -1
  141. data/lib/opal/nodes/scope.rb +8 -2
  142. data/lib/opal/nodes/singleton_class.rb +1 -1
  143. data/lib/opal/nodes/top.rb +11 -0
  144. data/lib/opal/nodes/variables.rb +4 -4
  145. data/lib/opal/parser.rb +21 -3
  146. data/lib/opal/parser/grammar.rb +3115 -2961
  147. data/lib/opal/parser/grammar.y +29 -6
  148. data/lib/opal/parser/lexer.rb +18 -8
  149. data/lib/opal/sprockets.rb +85 -0
  150. data/lib/opal/sprockets/processor.rb +11 -35
  151. data/lib/opal/sprockets/server.rb +3 -15
  152. data/lib/opal/version.rb +2 -2
  153. data/opal.gemspec +4 -4
  154. data/opal/README.md +9 -0
  155. data/opal/corelib/array.rb +433 -181
  156. data/opal/corelib/basic_object.rb +48 -4
  157. data/opal/corelib/boolean.rb +15 -6
  158. data/opal/corelib/class.rb +6 -5
  159. data/opal/corelib/comparable.rb +12 -0
  160. data/opal/corelib/complex.rb +282 -0
  161. data/opal/corelib/constants.rb +9 -0
  162. data/opal/corelib/enumerable.rb +83 -34
  163. data/opal/corelib/enumerator.rb +3 -1
  164. data/opal/corelib/error.rb +49 -10
  165. data/opal/corelib/file.rb +1 -0
  166. data/opal/corelib/hash.rb +353 -577
  167. data/opal/corelib/helpers.rb +20 -0
  168. data/opal/corelib/kernel.rb +114 -59
  169. data/opal/corelib/math.rb +470 -0
  170. data/opal/corelib/method.rb +11 -2
  171. data/opal/corelib/module.rb +96 -96
  172. data/opal/corelib/{nil_class.rb → nil.rb} +20 -1
  173. data/opal/corelib/number.rb +751 -0
  174. data/opal/corelib/numeric.rb +77 -437
  175. data/opal/corelib/proc.rb +81 -1
  176. data/opal/corelib/process.rb +27 -0
  177. data/opal/corelib/rational.rb +358 -0
  178. data/opal/corelib/regexp.rb +156 -27
  179. data/opal/corelib/runtime.js +724 -335
  180. data/opal/corelib/string.rb +93 -104
  181. data/opal/corelib/string/encoding.rb +177 -0
  182. data/opal/corelib/string/inheritance.rb +2 -0
  183. data/opal/corelib/struct.rb +105 -18
  184. data/opal/corelib/time.rb +267 -146
  185. data/opal/corelib/unsupported.rb +216 -0
  186. data/opal/corelib/variables.rb +0 -6
  187. data/opal/opal.rb +8 -22
  188. data/opal/opal/base.rb +9 -0
  189. data/opal/opal/mini.rb +17 -0
  190. data/spec/README.md +1 -1
  191. data/spec/filters/bugs/array.rb +38 -136
  192. data/spec/filters/bugs/{basic_object.rb → basicobject.rb} +14 -15
  193. data/spec/filters/bugs/class.rb +6 -12
  194. data/spec/filters/bugs/complex.rb +3 -0
  195. data/spec/filters/bugs/date.rb +162 -10
  196. data/spec/filters/bugs/enumerable.rb +31 -58
  197. data/spec/filters/bugs/enumerator.rb +42 -0
  198. data/spec/filters/bugs/exception.rb +66 -10
  199. data/spec/filters/bugs/float.rb +17 -0
  200. data/spec/filters/bugs/hash.rb +11 -97
  201. data/spec/filters/bugs/inheritance.rb +5 -0
  202. data/spec/filters/bugs/integer.rb +28 -0
  203. data/spec/filters/bugs/kernel.rb +304 -12
  204. data/spec/filters/bugs/language.rb +133 -399
  205. data/spec/filters/bugs/language_opal.rb +88 -0
  206. data/spec/filters/bugs/module.rb +203 -62
  207. data/spec/filters/bugs/numeric.rb +32 -0
  208. data/spec/filters/bugs/proc.rb +39 -0
  209. data/spec/filters/bugs/range.rb +148 -0
  210. data/spec/filters/bugs/regexp.rb +168 -0
  211. data/spec/filters/bugs/set.rb +46 -3
  212. data/spec/filters/bugs/singleton.rb +1 -2
  213. data/spec/filters/bugs/string.rb +59 -90
  214. data/spec/filters/bugs/strscan.rb +80 -0
  215. data/spec/filters/bugs/struct.rb +10 -20
  216. data/spec/filters/bugs/time.rb +17 -184
  217. data/spec/filters/bugs/unboundmethod.rb +22 -0
  218. data/spec/filters/unsupported/array.rb +163 -0
  219. data/spec/filters/unsupported/basicobject.rb +14 -0
  220. data/spec/filters/unsupported/bignum.rb +46 -0
  221. data/spec/filters/unsupported/class.rb +4 -0
  222. data/spec/filters/unsupported/delegator.rb +5 -0
  223. data/spec/filters/unsupported/enumerable.rb +11 -0
  224. data/spec/filters/unsupported/enumerator.rb +8 -9
  225. data/spec/filters/unsupported/fixnum.rb +14 -0
  226. data/spec/filters/unsupported/float.rb +41 -7
  227. data/spec/filters/unsupported/freeze.rb +45 -0
  228. data/spec/filters/unsupported/hash.rb +50 -0
  229. data/spec/filters/unsupported/integer.rb +3 -0
  230. data/spec/filters/unsupported/kernel.rb +31 -0
  231. data/spec/filters/unsupported/language.rb +17 -0
  232. data/spec/filters/unsupported/matchdata.rb +30 -0
  233. data/spec/filters/unsupported/math.rb +3 -0
  234. data/spec/filters/unsupported/module.rb +5 -3
  235. data/spec/filters/unsupported/pathname.rb +3 -0
  236. data/spec/filters/unsupported/privacy.rb +136 -0
  237. data/spec/filters/unsupported/proc.rb +3 -0
  238. data/spec/filters/unsupported/regexp.rb +59 -0
  239. data/spec/filters/unsupported/set.rb +4 -0
  240. data/spec/filters/unsupported/{marshal.rb → singleton.rb} +4 -2
  241. data/spec/filters/unsupported/{mutable_strings.rb → string.rb} +456 -336
  242. data/spec/filters/unsupported/struct.rb +3 -0
  243. data/spec/filters/unsupported/symbol.rb +5 -0
  244. data/spec/filters/unsupported/taint.rb +16 -0
  245. data/spec/filters/unsupported/thread.rb +5 -0
  246. data/spec/filters/unsupported/time.rb +197 -16
  247. data/spec/lib/cli_spec.rb +14 -4
  248. data/spec/lib/compiler_spec.rb +9 -1
  249. data/spec/lib/parser/call_spec.rb +18 -0
  250. data/spec/lib/parser/not_spec.rb +2 -8
  251. data/spec/lib/sprockets_spec.rb +24 -0
  252. data/spec/opal/core/array/intersection_spec.rb +38 -0
  253. data/spec/opal/core/array/minus_spec.rb +38 -0
  254. data/spec/opal/core/array/union_spec.rb +38 -0
  255. data/spec/opal/core/array/uniq_spec.rb +49 -0
  256. data/spec/opal/core/exception_spec.rb +7 -0
  257. data/spec/opal/core/fixtures/require_tree_with_dot/file 1.rb +1 -0
  258. data/spec/opal/core/fixtures/require_tree_with_dot/file 2.rb +1 -0
  259. data/spec/opal/core/fixtures/require_tree_with_dot/file 3.rb +1 -0
  260. data/spec/opal/core/fixtures/require_tree_with_dot/index.rb +3 -0
  261. data/spec/opal/core/hash/internals_spec.rb +332 -0
  262. data/spec/opal/core/helpers_spec.rb +14 -0
  263. data/spec/opal/core/kernel/freeze_spec.rb +1 -1
  264. data/spec/opal/core/kernel/raise_spec.rb +13 -0
  265. data/spec/opal/core/kernel/require_tree_spec.rb +9 -0
  266. data/spec/opal/core/language/class_spec.rb +55 -0
  267. data/spec/opal/core/language/fixtures/send.rb +1 -0
  268. data/spec/opal/core/language/keyword_arguments_spec.rb +11 -0
  269. data/spec/opal/core/language/send_spec.rb +5 -0
  270. data/spec/opal/core/method/to_proc_spec.rb +28 -0
  271. data/spec/opal/core/module/name_spec.rb +0 -17
  272. data/spec/opal/core/runtime/bridged_classes_spec.rb +2 -2
  273. data/spec/opal/core/runtime/eval_spec.rb +1 -1
  274. data/spec/opal/core/runtime/method_missing_spec.rb +6 -0
  275. data/spec/opal/core/runtime_spec.rb +51 -0
  276. data/spec/opal/stdlib/js_spec.rb +66 -0
  277. data/spec/opal/stdlib/native/hash_spec.rb +36 -0
  278. data/spec/rubyspecs +152 -273
  279. data/spec/spec_helper.rb +10 -11
  280. data/stdlib/base64.rb +9 -9
  281. data/stdlib/benchmark.rb +551 -4
  282. data/stdlib/console.rb +94 -0
  283. data/stdlib/date.rb +1 -1
  284. data/stdlib/encoding.rb +1 -170
  285. data/stdlib/js.rb +56 -0
  286. data/stdlib/json.rb +9 -14
  287. data/stdlib/math.rb +1 -370
  288. data/stdlib/native.rb +133 -63
  289. data/stdlib/nodejs/file.rb +5 -0
  290. data/stdlib/nodejs/fileutils.rb +13 -6
  291. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/README.md +1 -1
  292. data/stdlib/opal-parser.rb +1 -2
  293. data/stdlib/ostruct.rb +65 -6
  294. data/stdlib/pp.rb +2 -4
  295. data/stdlib/rbconfig.rb +1 -3
  296. data/stdlib/strscan.rb +164 -28
  297. data/tasks/benchmarking.rake +88 -0
  298. data/tasks/testing.rake +181 -55
  299. data/{lib/mspec/opal/special_calls.rb → tasks/testing/mspec_special_calls.rb} +1 -1
  300. data/{lib/mspec/opal/sprockets.js → tasks/testing/phantomjs1-sprockets.js} +17 -6
  301. data/test/opal/test_keyword.rb +590 -0
  302. data/vendored-minitest/minitest.rb +2 -2
  303. data/vendored-minitest/test/unit.rb +5 -0
  304. metadata +229 -62
  305. data/benchmarks/operators.rb +0 -11
  306. data/benchmarks/prova.js.rb +0 -13
  307. data/docs/libraries.md +0 -36
  308. data/lib/mspec/opal/new.html.erb +0 -1
  309. data/lib/mspec/opal/rake_task.rb +0 -248
  310. data/opal/corelib/match_data.rb +0 -128
  311. data/spec/filters/bugs/math.rb +0 -95
  312. data/spec/filters/bugs/nil.rb +0 -7
  313. data/spec/filters/bugs/opal.rb +0 -9
  314. data/spec/filters/bugs/regular_expressions.rb +0 -41
  315. data/spec/filters/bugs/stringscanner.rb +0 -33
  316. data/spec/filters/unsupported/encoding.rb +0 -102
  317. data/spec/filters/unsupported/frozen.rb +0 -92
  318. data/spec/filters/unsupported/hash_compare_by_identity.rb +0 -16
  319. data/spec/filters/unsupported/integer_size.rb +0 -59
  320. data/spec/filters/unsupported/method_added.rb +0 -10
  321. data/spec/filters/unsupported/private_constants.rb +0 -30
  322. data/spec/filters/unsupported/private_methods.rb +0 -55
  323. data/spec/filters/unsupported/random.rb +0 -4
  324. data/spec/filters/unsupported/rational_numbers.rb +0 -4
  325. data/spec/filters/unsupported/regular_expressions.rb +0 -137
  326. data/spec/filters/unsupported/ruby_exe.rb +0 -5
  327. data/spec/filters/unsupported/symbols.rb +0 -17
  328. data/spec/filters/unsupported/tainted.rb +0 -180
  329. data/spec/filters/unsupported/trusted.rb +0 -88
  330. data/stdlib/process.rb +0 -10
  331. data/tasks/documenting.rake +0 -37
@@ -0,0 +1,14 @@
1
+ require 'spec_helper'
2
+
3
+ describe Opal do
4
+ context '.instance_variable_name!' do
5
+ it 'does not use regular expressions on Opal level, so $` stays the same' do
6
+ 'some string' =~ /string/
7
+ post_match = $`
8
+
9
+ Opal.instance_variable_name!(:@ivar_name)
10
+
11
+ expect($`).to eq(post_match)
12
+ end
13
+ end
14
+ end
@@ -5,7 +5,7 @@ describe "Kernel#freeze" do
5
5
  o = mock('o')
6
6
  o.frozen?.should be_false
7
7
  o.freeze
8
- o.frozen?.should be_true
8
+ o.frozen?.should be_false
9
9
  end
10
10
 
11
11
  it "returns self" do
@@ -0,0 +1,13 @@
1
+ describe "Kernel#raise" do
2
+ # rubyspecs test most of this, but rubyspecs won't differentiate between nil and undefined
3
+ it "raises messages without exceptions" do
4
+ lambda { raise Exception }.should raise_error(Exception)
5
+ ex = nil
6
+ begin
7
+ raise Exception
8
+ rescue Exception => e
9
+ ex = e
10
+ end
11
+ ex.to_s.should == 'Exception'
12
+ end
13
+ end
@@ -6,4 +6,13 @@ describe 'Kernel.require_tree' do
6
6
  $ScratchPad.sort.should == ['file 1', 'file 2', 'file 3', 'file 4', 'file 5',
7
7
  'nested 1', 'nested 2', 'other 1']
8
8
  end
9
+
10
+ it 'can be used with "."' do
11
+ $ScratchPad = []
12
+ require_relative '../fixtures/require_tree_with_dot/index'
13
+
14
+ $ScratchPad[0].should == 'indexpre'
15
+ $ScratchPad[1...-1].sort.should == ['file 1', 'file 2', 'file 3']
16
+ $ScratchPad[-1].should == 'indexpost'
17
+ end
9
18
  end
@@ -0,0 +1,55 @@
1
+ class AssignClassNewConst
2
+ TEST_CONST = :bar
3
+
4
+ def foo
5
+ TEST_CONST
6
+ end
7
+
8
+ def self.assign_klass
9
+ k = Class.new(self) do
10
+ def foobar
11
+ # ensure we can still use constants from AssignClassNewConst even though we use AssignClassConstBase
12
+ TEST_CONST
13
+ end
14
+ end
15
+ AssignClassConstBase.assign_const(k)
16
+ end
17
+ end
18
+
19
+ module AssignClassConstBase
20
+ def self.assign_const(group)
21
+ self.const_set("MyStuff", group)
22
+ end
23
+ end
24
+
25
+ describe "Assigning Class.new to a constant" do
26
+ klass = Class.new do
27
+ def bar
28
+ :bar
29
+ end
30
+ end
31
+ ConstantWithAssignedClass = klass
32
+ class ConstantWithAssignedClass
33
+ def foo
34
+ :foo
35
+ end
36
+ end
37
+
38
+ it "sets the class' name" do
39
+ ConstantWithAssignedClass.name.should == 'ConstantWithAssignedClass'
40
+ end
41
+
42
+ it "can be reopened by the constant name" do
43
+ ConstantWithAssignedClass.new.foo.should == :foo
44
+ ConstantWithAssignedClass.new.bar.should == :bar
45
+ end
46
+
47
+ it "respects a different base scope" do
48
+ AssignClassNewConst.assign_klass
49
+ AssignClassConstBase::MyStuff.to_s.should == "AssignClassConstBase::MyStuff"
50
+ AssignClassConstBase::MyStuff.name.should == "AssignClassConstBase::MyStuff"
51
+ obj = AssignClassConstBase::MyStuff.new
52
+ obj.foo.should == :bar
53
+ obj.foobar.should == :bar
54
+ end
55
+ end
@@ -17,6 +17,7 @@ module LangSendSpecs
17
17
  def self.fooM1R(a, *r); [a, r]; end
18
18
  def self.fooM0O1R(a=1, *r); [a, r]; end
19
19
  def self.fooM1O1R(a, b=1, *r); [a, b, r]; end
20
+ def self.fooM1O2(a, b={}, &block); [a, b, block]; end
20
21
 
21
22
  def self.one(a); a; end
22
23
  def self.oneb(a,&b); [a,yield(b)]; end
@@ -0,0 +1,11 @@
1
+ describe "Keyword arguments" do
2
+ def m a, b = nil, c: 123
3
+ [a, b, c]
4
+ end
5
+
6
+ it "def method_a(b, c=nil, d:nil)" do
7
+ m(1,2,c: 3).should == [1, 2, 3]
8
+ m(1, c: 3).should == [1, nil, 3]
9
+ m(1).should == [1, nil, 123]
10
+ end
11
+ end
@@ -73,6 +73,11 @@ describe "Invoking a method" do
73
73
  specs.fooM1O1(1,2,3)
74
74
  }.should raise_error(ArgumentError)
75
75
  end
76
+
77
+ it "keeps the block if supplied" do
78
+ block = lambda {}
79
+ specs.fooM1O2(1, foo: :bar, &block).should == [1, {foo: :bar}, block]
80
+ end
76
81
  end
77
82
 
78
83
  describe "with a rest argument" do
@@ -0,0 +1,28 @@
1
+ describe "Method#to_proc" do
2
+
3
+ it "returns a Proc object that is bound to the method's receiver" do
4
+ "hello".method(:capitalize).to_proc.call.should == "Hello"
5
+ "hello".method(:upcase).to_proc.call.should == "HELLO"
6
+ end
7
+
8
+ it "works with class methods" do
9
+ class Lender
10
+ def self.abc
11
+ self
12
+ end
13
+ def self.xyz
14
+ abc
15
+ end
16
+ end
17
+
18
+ module Namespace
19
+ class Borrower
20
+ class << self
21
+ define_method(:xyz, &::Lender.method(:xyz))
22
+ end
23
+ end
24
+ end
25
+
26
+ Namespace::Borrower.xyz.should == Lender
27
+ end
28
+ end
@@ -32,21 +32,4 @@ describe "Module#name" do
32
32
  ModuleNameSpec::A.name.should == "ModuleNameSpec::A"
33
33
  ModuleNameSpec::A::B.name.should == "ModuleNameSpec::A::B"
34
34
  end
35
-
36
- it "uses just child name when class set inside anonymous parent" do
37
- a = Class.new
38
- b = Class.new
39
- a.const_set :Child, b
40
- b.name.should == "Child"
41
- end
42
-
43
- it "uses parent name once parent anonymous class gets name" do
44
- a = Class.new
45
- b = Class.new
46
- a.const_set :Child, b
47
- b.name.should == "Child"
48
-
49
- ModuleNameSpec.const_set :Parent, a
50
- b.name.should == "ModuleNameSpec::Parent::Child"
51
- end
52
35
  end
@@ -14,7 +14,7 @@ describe "Bridged Classes" do
14
14
  describe "Passing native constructor to class keyword" do
15
15
  before do
16
16
  @bridged = ::TopBridgedClassDemo
17
- @instance = `new bridge_class_demo`
17
+ @instance = `new bridge_class_demo()`
18
18
  end
19
19
 
20
20
  it "should expose the given class at the top level scope" do
@@ -84,7 +84,7 @@ end
84
84
  describe 'Bridged classes in different modules' do
85
85
  before do
86
86
  @bridged = BridgeModule::ModularizedBridgeClass
87
- @instance = `new bridge_class_demo_module`
87
+ @instance = `new bridge_class_demo_module()`
88
88
  end
89
89
 
90
90
  it "should expose the given class not at the top level scope" do
@@ -1,5 +1,5 @@
1
1
  describe "Opal.eval()" do
2
2
  it "evaluates ruby code by compiling it to javascript and running" do
3
- `Opal.eval("'foo'.class")`.should == String
3
+ `Opal['eval']("'foo'.class")`.should == String
4
4
  end
5
5
  end
@@ -30,6 +30,12 @@ describe "method_missing" do
30
30
  @obj.bar(1, 2, 3).should == [:bar, [1, 2, 3]]
31
31
  end
32
32
 
33
+ it "calls method missing for operators" do
34
+ obj = Object.new
35
+ obj.should_receive(:method_missing).with(:+, 123).and_return(42)
36
+ (obj + 123).should == 42
37
+ end
38
+
33
39
  it "should pass blocks to method_missing" do
34
40
  obj = MethodMissingSpecs::B.new
35
41
  proc = proc { 1 }
@@ -5,3 +5,54 @@ describe '`Opal.hash`' do
5
5
  `Opal.hash({a: 1, b: 2})`.should == {a: 1, b: 2}
6
6
  end
7
7
  end
8
+
9
+ describe 'javascript access using .JS' do
10
+ it 'should call javascript methods via .JS.method()' do
11
+ "a1234b5678c".JS.indexOf('c').should == 10
12
+ "a1234b5678c".JS.replace(/[0-9]/g, '').should == 'abc'
13
+ end
14
+
15
+ it 'should call javascript methods via .JS.method arg' do
16
+ ("a1234b5678c".JS.indexOf 'c').should == 10
17
+ ("a1234b5678c".JS.replace /[0-9]/g, '').should == 'abc'
18
+ end
19
+
20
+ it 'should call javascript methods with blocks via .JS.method' do
21
+ f = `{a:function(f){return f(1) + f(2)}}`
22
+ f.JS.a{|v| v*2}.should == 6
23
+ v = f.JS.a do |v| v*2 end
24
+ v.should == 6
25
+ end
26
+
27
+ it 'should call javascript methods with args and blocks via .JS.method' do
28
+ f = `{a:function(a, f){return f(a, 1) + f(a, 2)}}`
29
+ f.JS.a(3){|b, v| b+v*2}.should == 12
30
+ v = f.JS.a 3 do |b, v| b+v*2 end
31
+ v.should == 12
32
+ end
33
+
34
+ it 'should support javascript properties via .JS[]' do
35
+ "a1234b5678c".JS['length'].should == 11
36
+ `{a:1}`.JS['a'].should == 1
37
+ `{a:1}`.JS['a'].should == 1
38
+ [2, 4].JS[0].should == 2
39
+ [2, 4].JS[1].should == 4
40
+ [2, 4].JS[:length].should == 2
41
+ end
42
+
43
+ it 'should be chainable' do
44
+ "a1234b5678c".JS.replace(/[0-9]/g, '').JS.toUpperCase.should == 'ABC'
45
+ "a1234b5678c".JS.replace(/[0-9]/g, '').JS[:length].should == 3
46
+ "a1234b5678c".JS[:length].JS.toString.should == "11"
47
+ `{a:{b:1}}`.JS[:a].JS[:b].JS.toString.should == '1'
48
+ f = `{a:function(f){return {b: function(f2){return f(f2(1)) + f(f2(2))}}}}`
49
+ f.JS.a{|v| v*2}.JS.b{|v| v*3}.should == 18
50
+ end
51
+
52
+ it 'should set javascript properties via .JS[arg] = rhs' do
53
+ a = `{}`
54
+ a.JS[:foo] = 1
55
+ a.JS[:foo].should == 1
56
+ `a["foo"]`.should == 1
57
+ end
58
+ end
@@ -0,0 +1,66 @@
1
+ require 'spec_helper'
2
+ require 'js'
3
+
4
+ describe 'javascript operations using JS module' do
5
+ it 'JS.typeof uses typeof to return underlying javascript type' do
6
+ [1, `null`, `undefined`, Object.new, [], ""].each do |v|
7
+ JS.typeof(v).should == `typeof #{v}`
8
+ end
9
+ end
10
+
11
+ it 'JS.new uses new to create new instance' do
12
+ f = `function(){}`
13
+ f.JS[:prototype].JS[:color] = 'black'
14
+ JS.new(f).JS[:color].should == 'black'
15
+ end
16
+
17
+ it 'JS.new handles blocks' do
18
+ f = `function(a){this.a = a}`
19
+ JS.new(f){1}.JS.a.should == 1
20
+ end
21
+
22
+ it 'JS.instanceof uses instanceof to check if value is an instance of a function' do
23
+ f = `function(){}`
24
+ JS.instanceof(JS.new(f), f).should == true
25
+ JS.instanceof(JS.new(f), `function(){}`).should == false
26
+ end
27
+
28
+ it 'JS.delete uses delete to remove properties from objects' do
29
+ f = `{a:1}`
30
+ f.JS[:a].should == 1
31
+ JS.delete(f, :a)
32
+ `#{f.JS[:a]} === undefined`.should == true
33
+ end
34
+
35
+ it 'JS.in uses in to check for properties in objects' do
36
+ f = `{a:1}`
37
+ JS.in(:a, f).should == true
38
+ JS.in(:b, f).should == false
39
+ end
40
+
41
+ it 'JS.void returns undefined' do
42
+ f = 1
43
+ `#{JS.void(f += 1)} === undefined`.should == true
44
+ f.should == 2
45
+ end
46
+
47
+ it 'JS.call calls global javascript methods' do
48
+ JS.call(:parseFloat, '1.0').should == 1
49
+ JS.call(:parseInt, '1').should == 1
50
+ JS.call(:eval, "({a:1})").JS[:a].should == 1
51
+ end
52
+
53
+ it 'JS.method_missing calls global javascript methods' do
54
+ JS.parseFloat('1.0').should == 1
55
+ JS.parseInt('1').should == 1
56
+ end
57
+
58
+ it 'JS.call calls global javascript methods with blocks' do
59
+ begin
60
+ JS.global.JS[:_test_global_function] = lambda{|pr| pr.call + 1}
61
+ JS._test_global_function{1}.should == 2
62
+ ensure
63
+ JS.delete(JS.global, :_test_global_function)
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,36 @@
1
+ require 'native'
2
+
3
+ describe Hash do
4
+ it 'turns a native JS object into a hash' do
5
+ obj = %x{
6
+ {
7
+ a: 1,
8
+ b: "two",
9
+ c: {
10
+ d: 1,
11
+ },
12
+ e: [
13
+ {
14
+ f: 'g',
15
+ },
16
+ ],
17
+ }
18
+ }
19
+
20
+ h = Hash.new(obj)
21
+ expected_hash = {
22
+ a: 1,
23
+ b: "two",
24
+ c: {
25
+ d: 1,
26
+ },
27
+ e: [
28
+ {
29
+ f: 'g',
30
+ },
31
+ ],
32
+ }
33
+
34
+ expect(h).to eq(expected_hash)
35
+ end
36
+ end
data/spec/rubyspecs CHANGED
@@ -1,273 +1,152 @@
1
- # all spec files inside these directories are loaded (matching *_spec.rb)
2
- corelib/core/array
3
- corelib/core/basicobject
4
- corelib/core/class
5
- corelib/core/comparable
6
- corelib/core/enumerable
7
- corelib/core/false
8
- corelib/core/hash
9
- corelib/core/nil
10
- corelib/core/struct
11
- corelib/core/true
12
- corelib/core/math
13
-
14
- corelib/core/fixnum/abs_spec
15
- corelib/core/fixnum/case_compare_spec
16
- corelib/core/fixnum/comparison_spec
17
- corelib/core/fixnum/equal_value_spec
18
- corelib/core/fixnum/element_reference_spec
19
- corelib/core/fixnum/even_spec
20
- corelib/core/fixnum/gt_spec
21
- corelib/core/fixnum/gte_spec
22
- corelib/core/fixnum/left_shift_spec
23
- corelib/core/fixnum/right_shift_spec
24
- corelib/core/fixnum/lt_spec
25
- corelib/core/fixnum/lte_spec
26
- corelib/core/fixnum/magnitude_spec
27
- corelib/core/fixnum/minus_spec
28
- corelib/core/fixnum/odd_spec
29
- corelib/core/fixnum/plus_spec
30
- corelib/core/fixnum/to_s_spec
31
- corelib/core/fixnum/zero_spec
32
-
33
- corelib/core/integer/downto_spec
34
- corelib/core/integer/even_spec
35
- corelib/core/integer/upto_spec
36
-
37
- corelib/core/enumerator/each_spec
38
- corelib/core/enumerator/new_spec
39
- corelib/core/enumerator/next_spec
40
- corelib/core/enumerator/rewind_spec
41
- corelib/core/enumerator/with_index_spec
42
-
43
- corelib/core/exception/initialize_spec
44
- corelib/core/exception/inspect_spec
45
- corelib/core/exception/message_spec
46
- corelib/core/exception/name_spec
47
- corelib/core/exception/new_spec
48
- corelib/core/exception/reason_spec
49
- corelib/core/exception/to_s_spec
50
-
51
- corelib/core/kernel/Array_spec
52
- corelib/core/kernel/case_compare_spec
53
- corelib/core/kernel/comparison_spec
54
- corelib/core/kernel/eql_spec
55
- corelib/core/kernel/equal_spec
56
- corelib/core/kernel/equal_value_spec
57
- corelib/core/kernel/format_spec
58
- corelib/core/kernel/Hash_spec
59
- corelib/core/kernel/Integer_spec
60
- corelib/core/kernel/Float_spec
61
- corelib/core/kernel/sprintf_spec
62
- corelib/core/kernel/String_spec
63
- corelib/core/kernel/tap_spec
64
- corelib/core/kernel/to_s_spec
65
- corelib/core/kernel/warn_spec
66
-
67
- corelib/core/matchdata
68
-
69
- corelib/core/module/class_variable_get_spec
70
- corelib/core/module/class_variable_set_spec
71
- corelib/core/module/module_function_spec
72
- corelib/core/module/const_get_spec
73
- corelib/core/module/include_spec
74
- corelib/core/module/instance_methods_spec
75
- corelib/core/module/define_method_spec
76
-
77
- corelib/core/range/begin_spec
78
- corelib/core/range/case_compare_spec
79
- corelib/core/range/end_spec
80
- corelib/core/range/new_spec
81
- corelib/core/range/size_spec
82
-
83
- corelib/core/string
84
- !corelib/core/string/crypt_spec
85
- !corelib/core/string/scrub_spec
86
-
87
- corelib/core/symbol/to_proc_spec
88
-
89
- corelib/core/time/asctime_spec
90
- corelib/core/time/at_spec
91
- corelib/core/time/ctime_spec
92
- corelib/core/time/day_spec
93
- corelib/core/time/eql_spec
94
- corelib/core/time/friday_spec
95
- corelib/core/time/getgm_spec
96
- corelib/core/time/gm_spec
97
- corelib/core/time/gmt_offset_spec
98
- corelib/core/time/hour_spec
99
- corelib/core/time/inspect_spec
100
- corelib/core/time/local_spec
101
- corelib/core/time/mday_spec
102
- corelib/core/time/min_spec
103
- corelib/core/time/minus_spec
104
- corelib/core/time/mktime_spec
105
- corelib/core/time/mon_spec
106
- corelib/core/time/monday_spec
107
- corelib/core/time/month_spec
108
- # corelib/core/time/new_spec - js parse error (xstring in shared/now)
109
- # corelib/core/time/now_spec - js parse error (xstring in shared/now)
110
- corelib/core/time/plus_spec
111
- corelib/core/time/saturday_spec
112
- corelib/core/time/sec_spec
113
- corelib/core/time/strftime_spec
114
- corelib/core/time/sunday_spec
115
- corelib/core/time/thursday_spec
116
- corelib/core/time/to_i_spec
117
- corelib/core/time/to_s_spec
118
- corelib/core/time/tuesday_spec
119
- corelib/core/time/utc_offset_spec
120
- corelib/core/time/utc_spec
121
- corelib/core/time/wday_spec
122
- corelib/core/time/wednesday_spec
123
- corelib/core/time/yday_spec
124
- corelib/core/time/year_spec
125
-
126
- corelib/core/regexp/case_compare_spec
127
- corelib/core/regexp/eql_spec
128
- corelib/core/regexp/equal_value_spec
129
- corelib/core/regexp/escape_spec
130
- corelib/core/regexp/last_match_spec
131
- corelib/core/regexp/match_spec
132
- corelib/core/regexp/quote_spec
133
- corelib/core/regexp/options_spec
134
- corelib/core/regexp/union_spec
135
- corelib/core/regexp/new_spec
136
-
137
- corelib/language/BEGIN_spec
138
- corelib/language/alias_spec
139
- corelib/language/and_spec
140
- corelib/language/array_spec
141
- # corelib/language/block_spec - can't parse |(a, (b, c))| args, or |a, b; c, d|
142
- # corelib/language/break_spec - can't parse break expr with block
143
- corelib/language/case_spec
144
- corelib/language/class_spec
145
- corelib/language/class_variable_spec
146
- # corelib/language/constants_spec - throw exception - NameError: uninitialized constant X::CS_SINGLETON4_CLASSES
147
- # corelib/language/def_spec - can't parse f('key'=>'value', *[5, 'string'])
148
- corelib/language/defined_spec
149
- # corelib/language/encoding_spec - can't parse encodings
150
- corelib/language/ensure_spec
151
- # corelib/language/execution_spec - can't parse x-strings with shell commands
152
- corelib/language/file_spec
153
- corelib/language/for_spec
154
- # corelib/language/hash_spec - parse error on value "**" (tPOW) :corelib/language/hash_spec:82
155
- corelib/language/if_spec
156
- # corelib/language/line_spec - $LOADED_FEATURES not present
157
- # corelib/language/lambda_spec - Can't parse literal {} in parenthesized argument list
158
- corelib/language/loop_spec
159
- corelib/language/magic_comment_spec
160
- # corelib/language/match_spec - generates invalid regexp
161
- corelib/language/metaclass_spec
162
- # corelib/language/module_spec - infinite loop in "The module keyword sets the name of contained modules when assigning a toplevel anonymous module"
163
- # corelib/language/next_spec - can't parse break expr with block
164
- corelib/language/not_spec
165
- corelib/language/numbers_spec
166
- corelib/language/or_spec
167
- corelib/language/order_spec
168
- corelib/language/precedence_spec
169
- # corelib/language/predefined_spec - ruby_exe() specs all failing
170
- corelib/language/private_spec
171
- # corelib/language/proc_spec - javascript Parse error
172
- corelib/language/redo_spec
173
- # corelib/language/regexp_spec - invalid javascript Regexp
174
- corelib/language/rescue_spec
175
- corelib/language/retry_spec
176
- # corelib/language/return_spec - can't parse return with expr using block
177
- # corelib/language/send_spec - can't parse trailing comma in call argument list
178
- corelib/language/singleton_class_spec
179
- # corelib/language/splat_spec - can't parse all splats
180
- # corelib/language/string_spec - can't parse strings using control-characters
181
- corelib/language/super_spec
182
- # corelib/language/symbol_spec - parse error on value "}" (tRCURLY) :corelib/language/symbol_spec:89
183
- # corelib/language/throw_spec - unsupported
184
- corelib/language/undef_spec
185
- corelib/language/unless_spec
186
- corelib/language/until_spec
187
- # corelib/language/variables_spec - can't parse whole file
188
- # corelib/language/while_spec - infinite loops in:
189
- # it "stops running body if interrupted by break in a begin ... end element op-assign-or value" do
190
- # it "stops running body if interrupted by break in a parenthesized attribute op-assign-or value" do
191
- # it "stops running body if interrupted by break in a begin ... end attribute op-assign-or value" do
192
- # it "stops running body if interrupted by break in a parenthesized attribute op-assign-or value" do
193
- # it "stops running body if interrupted by break in a begin ... end attribute op-assign-or value" do
194
-
195
- # corelib/language/yield_spec - can't parse destructuring argument list, see block_spec
196
-
197
- corelib/library/singleton
198
- corelib/library/observer
199
- corelib/library/pathname
200
-
201
- corelib/library/stringscanner/beginning_of_line_spec
202
- corelib/library/stringscanner/bol_spec
203
- corelib/library/stringscanner/check_spec
204
- corelib/library/stringscanner/element_reference_spec
205
- corelib/library/stringscanner/eos_spec
206
- corelib/library/stringscanner/get_byte_spec
207
- corelib/library/stringscanner/peek_spec
208
- corelib/library/stringscanner/pos_spec
209
- corelib/library/stringscanner/reset_spec
210
- corelib/library/stringscanner/rest_spec
211
- corelib/library/stringscanner/scan_spec
212
- corelib/library/stringscanner/skip_spec
213
- corelib/library/stringscanner/terminate_spec
214
-
215
- corelib/library/delegate/delegator/send_spec
216
-
217
- corelib/library/erb/util/h_spec
218
- corelib/library/erb/util/html_escape_spec
219
-
220
- corelib/library/set/add_spec
221
- corelib/library/set/append_spec
222
- corelib/library/set/classify_spec
223
- corelib/library/set/clear_spec
224
- corelib/library/set/collect_spec
225
- corelib/library/set/constructor_spec
226
- corelib/library/set/delete_if_spec
227
- corelib/library/set/delete_spec
228
- corelib/library/set/difference_spec
229
- corelib/library/set/each_spec
230
- corelib/library/set/empty_spec
231
- corelib/library/set/enumerable/to_set_spec
232
- corelib/library/set/eql_spec
233
- corelib/library/set/equal_value_spec
234
- corelib/library/set/include_spec
235
- corelib/library/set/initialize_spec
236
- corelib/library/set/length_spec
237
- corelib/library/set/map_spec
238
- corelib/library/set/member_spec
239
- corelib/library/set/merge_spec
240
- corelib/library/set/minus_spec
241
- corelib/library/set/replace_spec
242
- corelib/library/set/size_spec
243
- corelib/library/set/subtract_spec
244
- corelib/library/set/to_a_spec
245
- corelib/library/set/plus_spec
246
- corelib/library/set/union_spec
247
- # corelib/library/set/divide_spec
248
- # corelib/library/set/exclusion_spec
249
- # corelib/library/set/flatten_merge_spec
250
- # corelib/library/set/flatten_spec
251
- # corelib/library/set/hash_spec
252
- # corelib/library/set/initialize_copy_spec
253
- # corelib/library/set/inspect_spec
254
- # corelib/library/set/intersection_spec
255
- # corelib/library/set/keep_if_spec
256
- # corelib/library/set/pretty_print_cycle_spec
257
- # corelib/library/set/pretty_print_spec
258
- # corelib/library/set/proper_subset_spec
259
- # corelib/library/set/proper_superset_spec
260
- # corelib/library/set/reject_spec
261
- # corelib/library/set/select_spec
262
- # corelib/library/set/subset_spec
263
- # corelib/library/set/superset_spec
264
-
265
- corelib/library/date/add_month_spec
266
- corelib/library/date/add_spec
267
- corelib/library/date/append_spec
268
- corelib/library/date/case_compare_spec
269
- corelib/library/date/eql_spec
270
- corelib/library/date/minus_month_spec
271
- corelib/library/date/minus_spec
272
- corelib/library/date/plus_spec
273
- corelib/library/date/strftime_spec
1
+ rubyspec/core/array
2
+ rubyspec/core/basicobject
3
+ rubyspec/core/builtin_constants
4
+ rubyspec/core/class
5
+ rubyspec/core/comparable
6
+ rubyspec/core/enumerable
7
+ rubyspec/core/enumerator
8
+
9
+ rubyspec/core/exception
10
+ !rubyspec/core/exception/load_error_spec
11
+
12
+ rubyspec/core/false
13
+ rubyspec/core/fixnum
14
+ rubyspec/core/float
15
+ rubyspec/core/hash
16
+
17
+ rubyspec/core/integer
18
+ !rubyspec/core/integer/times_spec
19
+
20
+ rubyspec/core/kernel
21
+ !rubyspec/core/kernel/abort_spec
22
+ !rubyspec/core/kernel/at_exit_spec
23
+ !rubyspec/core/kernel/autoload_spec
24
+ !rubyspec/core/kernel/backtick_spec
25
+ !rubyspec/core/kernel/binding_spec
26
+ !rubyspec/core/kernel/callcc_spec
27
+ !rubyspec/core/kernel/caller_locations_spec
28
+ !rubyspec/core/kernel/caller_spec
29
+ !rubyspec/core/kernel/catch_spec
30
+ !rubyspec/core/kernel/chomp_spec
31
+ !rubyspec/core/kernel/chop_spec
32
+ !rubyspec/core/kernel/exec_spec
33
+ !rubyspec/core/kernel/exit_spec
34
+ !rubyspec/core/kernel/extend_spec
35
+ rubyspec/core/kernel/fail_spec
36
+ !rubyspec/core/kernel/fork_spec
37
+ !rubyspec/core/kernel/gets_spec
38
+ !rubyspec/core/kernel/load_spec
39
+ !rubyspec/core/kernel/open_spec
40
+ !rubyspec/core/kernel/putc_spec
41
+ rubyspec/core/kernel/raise_spec
42
+ !rubyspec/core/kernel/readline_spec
43
+ !rubyspec/core/kernel/readlines_spec
44
+ !rubyspec/core/kernel/require_relative_spec
45
+ !rubyspec/core/kernel/require_spec
46
+ !rubyspec/core/kernel/select_spec
47
+ !rubyspec/core/kernel/set_trace_func_spec
48
+ !rubyspec/core/kernel/spawn_spec
49
+ !rubyspec/core/kernel/syscall_spec
50
+ !rubyspec/core/kernel/system_spec
51
+ !rubyspec/core/kernel/taint_spec
52
+ !rubyspec/core/kernel/tainted_spec
53
+ !rubyspec/core/kernel/test_spec
54
+ !rubyspec/core/kernel/throw_spec
55
+ !rubyspec/core/kernel/trace_var_spec
56
+ !rubyspec/core/kernel/trap_spec
57
+ !rubyspec/core/kernel/trust_spec
58
+ !rubyspec/core/kernel/untaint_spec
59
+ !rubyspec/core/kernel/untrace_var_spec
60
+ !rubyspec/core/kernel/untrust_spec
61
+ !rubyspec/core/kernel/untrusted_spec
62
+
63
+ rubyspec/core/matchdata
64
+ rubyspec/core/math
65
+
66
+ # rubyspec/core/method - cannot parse `def one_splat_one_req(*a,b); end`
67
+
68
+ rubyspec/core/module
69
+ !rubyspec/core/module/autoload_spec
70
+ !rubyspec/core/module/const_defined_spec
71
+ !rubyspec/core/module/const_set_spec
72
+ !rubyspec/core/module/name_spec
73
+
74
+ rubyspec/core/nil
75
+ rubyspec/core/numeric
76
+
77
+ rubyspec/core/proc
78
+ !rubyspec/core/proc/arity_spec
79
+ !rubyspec/core/proc/parameters_spec
80
+
81
+ rubyspec/core/range
82
+ !rubyspec/core/range/to_a_spec
83
+
84
+ rubyspec/core/rational
85
+ !rubyspec/core/rational/marshal_dump_spec
86
+
87
+ rubyspec/core/complex
88
+ !rubyspec/core/complex/marshal_dump_spec
89
+
90
+ rubyspec/core/regexp
91
+ !rubyspec/core/regexp/named_captures_spec
92
+ !rubyspec/core/regexp/names_spec
93
+ !rubyspec/core/regexp/encoding_spec
94
+ !rubyspec/core/regexp/fixed_encoding_spec
95
+
96
+ rubyspec/core/string
97
+ !rubyspec/core/string/crypt_spec
98
+ !rubyspec/core/string/scrub_spec
99
+
100
+ rubyspec/core/struct
101
+ rubyspec/core/symbol/to_proc_spec
102
+
103
+ rubyspec/core/time
104
+ !rubyspec/core/time/_dump_spec
105
+ !rubyspec/core/time/_load_spec
106
+
107
+ rubyspec/core/true
108
+
109
+ rubyspec/core/unboundmethod
110
+ !rubyspec/core/unboundmethod/arity_spec
111
+
112
+ rubyspec/language
113
+ !rubyspec/language/block_spec
114
+ !rubyspec/language/break_spec
115
+ !rubyspec/language/constants_spec
116
+ !rubyspec/language/def_spec
117
+ !rubyspec/language/encoding_spec
118
+ !rubyspec/language/execution_spec
119
+ !rubyspec/language/hash_spec
120
+ !rubyspec/language/line_spec
121
+ !rubyspec/language/lambda_spec
122
+ !rubyspec/language/match_spec
123
+ !rubyspec/language/method_spec
124
+ !rubyspec/language/next_spec
125
+ !rubyspec/language/predefined_spec
126
+ !rubyspec/language/proc_spec
127
+ !rubyspec/language/regexp_spec
128
+ !rubyspec/language/return_spec
129
+ !rubyspec/language/send_spec
130
+ !rubyspec/language/string_spec
131
+ !rubyspec/language/symbol_spec
132
+ !rubyspec/language/variables_spec
133
+ !rubyspec/language/while_spec
134
+ !rubyspec/language/yield_spec
135
+
136
+ rubyspec/library/date
137
+
138
+ rubyspec/library/delegate/delegator/send_spec
139
+
140
+ rubyspec/library/erb/util/h_spec
141
+ rubyspec/library/erb/util/html_escape_spec
142
+
143
+ rubyspec/library/observer
144
+ rubyspec/library/openstruct
145
+ !rubyspec/library/openstruct/frozen_spec
146
+ !rubyspec/library/openstruct/marshal_load_spec
147
+ !rubyspec/library/openstruct/marshal_dump_spec
148
+ rubyspec/library/pathname
149
+ rubyspec/library/pp
150
+ rubyspec/library/set
151
+ rubyspec/library/singleton
152
+ rubyspec/library/stringscanner