opal 0.8.1 → 0.9.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
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