Commit graph

6735 commits

Author SHA1 Message Date
nobu
817eb7d17d * vm_insnhelper.c (argument_error): use line number at the beginning
of lambda, not the first code ob its body.
  [ruby-core:43314][Bug #6151]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35052 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-16 03:00:44 +00:00
shugo
29f73009ca * enumerator.c (lazy_take): don't enumerate an extra value.
[ruby-dev:45370] [Bug #6152]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35050 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-16 02:22:20 +00:00
shugo
2baeb78294 * enum.c (rb_enum_values_pack): rename from enum_values_pack, and
remove static.

* enumerator.c (lazy_init_iterator, lazy_init_yielder,
  lazy_select_func, lazy_reject_func, lazy_grep_func): handle
  multiple values correctly.

* enumerator.c (lazy_grep): change the behavior when a block is
  given, to be consistent with Enumerable#grep.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35043 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-15 14:20:27 +00:00
shugo
d135138f9b * enumerator.c (lazy_zip): rescue StopIteration returned by
Enumerator#next.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35042 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-15 10:14:22 +00:00
shugo
032861ade7 * enumerator.c (lazy_zip, lazy_cycle): Enumerator::Lazy#{zip,cycle}
should be eager when a block is given, to be consistent with
  Enumerable#{zip,cycle}.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35041 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-15 09:25:03 +00:00
shugo
ff1f6107f9 * enumerator.c (InitVM_Enumerator): renamed Enumerable::Lazy to
Enumerator::Lazy.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35040 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-15 08:47:09 +00:00
nobu
bf87ec4eb9 * parse.y (parser_yylex): fix warning line number.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35038 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-15 06:37:46 +00:00
nobu
b30c4aa8d7 * test/ruby/test_m17n.rb (assert_warning): use common method.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35037 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-15 06:24:10 +00:00
nobu
375aedbfb4 * parse.y (sym_check_asciionly): check ascii compatibility before
scanning for code range.
* parse.y (intern_str): set to us-ascii if ascii only.
  [ruby-dev:45363][Bug #6146]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35034 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-15 06:04:44 +00:00
shugo
d18dc74698 * enumerator.c (lazy_cycle): add Enumerable::Lazy#cycle.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35028 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-15 02:00:30 +00:00
nobu
9f9201b85d * test/ruby/test_arity.rb (TestArity#err_mess): use assert_raise.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35026 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-15 01:31:43 +00:00
drbrain
724e683e86 * vm_eval.c (check_funcall): Raise ArgumentError if respond_to?
requires more than three arguments. [Bug #6000]
	* test/ruby/test_object.rb (class TestObject):  Test for respond_to?
	  requiring more than three arguments.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35025 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-14 22:12:53 +00:00
marcandre
7316302483 * include/ruby/intern.h: Add rb_check_arity, rb_error_arity [#6085]
* array.c: Use rb_check_arity / rb_error_arity

* class.c: ditto

* enumerator.c: ditto

* eval.c: ditto

* file.c: ditto

* hash.c: ditto

* numeric.c: ditto

* proc.c: ditto

* process.c: ditto

* random.c: ditto

* re.c: ditto

* signal.c: ditto

* string.c: ditto

* struct.c: ditto

* transcode.c: ditto

* vm_eval.c: ditto

* vm_insnhelper.c: ditto & implementation of rb_error_arity

* test/ruby/test_arity.rb: tests for above

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35024 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-14 21:10:34 +00:00
marcandre
35c356ea72 * vm_insnhelper.c: improve number of arguments error in case of
optional parameters (issue #6085)

* include/ruby/intern.h: define UNLIMITED_ARGUMENTS

* test/ruby/test_arity.rb:  test for above

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35023 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-14 21:10:16 +00:00
shugo
c8860b504e * enumerator.c (lazy_init_iterator): break when Qundef is returned
to make obj.drop(3).take(2) work properly.

* enumerator.c (lazy_take_while): add Enumerable::Lazy#take_while.

* enumerator.c (lazy_drop): add Enumerable::Lazy#drop.

* enumerator.c (lazy_drop_while): add Enumerable::Lazy#drop_while.

* enumerator.c (InitVM_Enumerator): add Enumerable::Lazy#force as an
  alias of to_a.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35019 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-14 13:04:18 +00:00
shugo
0b35e9e5dd * enumerator.c (lazy_take): add Enumerable::Lazy#take.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35018 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-14 10:29:25 +00:00
usa
005953a17b * test/test_tmpdir.rb (TestTmpdir#test_world_writable): skip on Windows.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35014 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-14 07:42:30 +00:00
marcandre
4c2e2d8bde * numeric.c: fix flodivmod for cornercases [Bug #6044]
add ruby_float_mod

* insns.def (opt_mod): use ruby_float_mod

* internal.h: declare ruby_float_mod

* test/ruby/test_float.rb: tests for above

* test/ruby/envutil.rb: create helper assert_is_minus_zero

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35013 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-14 06:10:01 +00:00
nobu
4bce9fc7bd more GCable
* test/test_weakref.rb (make_weakref): more GCable, probably.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35009 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-14 02:29:48 +00:00
nobu
cb1d290886 * enumerator.c (lazy_grep_func): should use === instead of =~, as
well as Enumerable#grep

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35008 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-14 01:44:37 +00:00
nobu
8cdfe403d3 Init_Enumerator
* enumerator.c (Init_Enumerator): initialize method IDs first.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35006 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-14 01:35:09 +00:00
shugo
6b4525912b * enumerator.c (lazy_zip_func): use each for non-Array objects.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35004 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-13 23:16:37 +00:00
shugo
22434473c7 * enumerator.c (lazy_zip): add Enumerable::Lazy#flat_map.
* enumerator.c (lazy_lazy): just returns self.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35003 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-13 23:08:15 +00:00
nobu
8fe3fb4c0f * compile.c (iseq_set_arguments): keyword rest arg without keyword args.
* node.c (dump_node): dump kw_rest_arg too.
* parse.y (block_param, f_arg): more kwrest patterns.
  [ruby-core:42455][Bug #5989]
* parse.y (new_args_gen): no extra kw_rest_arg if no keyword rest arg.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34999 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-13 13:00:17 +00:00
nobu
d6a977f667 * parse.y (block_param, f_args): add rules for the case arguments
begin with kwrest.  [ruby-core:42455][Bug #5989]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34998 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-13 06:17:08 +00:00
naruse
db83618d2c * io.c (io_encoding_set): always warn if external encoding and internal
encoding are identical. [ruby-core:40727] [Bug #5568]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34997 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-13 04:03:06 +00:00
naruse
272d72efc0 Fix error and show given message and match message.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34996 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-13 04:03:03 +00:00
nobu
df058ea0e3 Bug #5350
* gc.c: add ObjectSpace::WeakMap.  [ruby-dev:44565][Bug #5350]
* lib/weakref.rb: use WeakMap instead of _id2ref.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34995 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-13 03:37:06 +00:00
nobu
826cdd67a0 assert_warn, assert_warning
* test/ruby/envutil.rb (assert_warn): add optional message argument.

* test/ruby/envutil.rb (assert_warning): moved from test_io_m17n.rb

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34994 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-13 03:34:11 +00:00
naruse
7f199d12e0 Add missing assert_warning.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34991 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-12 15:17:27 +00:00
nobu
33ceea5cdb * encoding.c (rb_find_encoding): new function find encoding from
arbitrary object as a pointer to rb_encoding, and return NULL if
  not found.
* io.c (io_encoding_set): just warn unsupported encodings, but not
  exception.  [ruby-core:40726] [Bug #5567]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34986 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-12 10:23:17 +00:00
nobu
a2229db3e8 * vm_method.c (Init_eval_method): copy basic methods to Exception.
[ruby-core:40287][Bug #5473]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34983 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-12 03:44:40 +00:00
nobu
b19f3a8a15 * eval_jump.c (rb_exec_end_proc): remember the latest exit status.
[ruby-core:43173][Bug #5218]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34982 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-12 01:13:40 +00:00
naruse
90b7ddb89f Exclude json/add/complex.rb.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34981 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-12 00:32:16 +00:00
nobu
bcb9e567c4 * lib/tmpdir.rb (Dir.tmpdir): should not use world-writable but
non-sticky directory.
* lib/tmpdir.rb (Dir.mktmpdir): check the parent directory.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34979 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-11 22:19:06 +00:00
nobu
b87f2fe1e4 * random.c (random_s_rand): ensure default PRNG is re-initialized
after fork.  patched by Eric Wong.  [ruby-core:41209][Bug #5661]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34977 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-11 22:03:36 +00:00
naruse
b7df3e9f4e * pack.c (pack_unpack): when unpack('M') occurs an illegal byte
sequence, output the "=" character and the following character in
  the decoded data without any transformation.
  [ruby-dev:44875] [Bug #5635]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34972 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-11 14:59:42 +00:00
naruse
4d8d3184d1 * ext/json: Merge 164a75c8bd2007d32c4d7665d53140d8fc126dcd.
[ruby-core:41917] [Bug #5846]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34971 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-11 13:36:06 +00:00
nobu
a73d958c33 * st.c: add st_foreach_check for fixing iteration over packed table
and st_delete_safe.  patched by Sokolov Yura at
  https://github.com/ruby/ruby/pull/84


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34963 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-10 14:52:19 +00:00
nobu
efae619458 * st.c: fix packed num_entries on delete_safe. patched by Sokolov
Yura at https://github.com/ruby/ruby/pull/84


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34962 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-10 14:52:06 +00:00
naruse
3c45e3f1b7 Rescue even if it test_readpartial_locktmp RuntimeError. [Bug#6099]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34957 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-09 05:52:18 +00:00
shugo
a21d0f72c2 * enumerator.c (lazy_flat_map): add Enumerable::Lazy#flat_map.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34956 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-09 05:34:41 +00:00
nobu
5452b18f99 * test/ruby/test_lazy_enumerator.rb: tests for r34951 and r34952.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34955 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-09 01:13:59 +00:00
tenderlove
240c9acb5c * ext/psych/lib/psych.rb (load, parse): stop parsing or loading after
the first document has been parsed.

* test/psych/test_stream.rb: pertinent tests.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34954 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-08 21:31:05 +00:00
tenderlove
a2e3de1b3f * ext/psych/lib/psych.rb (parse_stream, load_stream): if a block is
given, documents will be yielded to the block as they are parsed.
  [ruby-core:42404] [Bug #5978]

* ext/psych/lib/psych/handlers/document_stream.rb: add a handler that
  yields documents as they are parsed

* test/psych/test_stream.rb: corresponding tests.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34953 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-08 21:21:52 +00:00
nobu
e160610200 * enumerator.c (enumerator_each, generator_each): pass arguments to
the block with yielder.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34950 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-08 15:26:01 +00:00
nagachika
0c8ae91651 * lib/xmlrpc/client.rb (module XMLRPC): fix typo.
* test/xmlrpc/test_client.rb (test_async_call): add test for
  XMLRPC::Client#call_async to check above fix.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34945 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-07 13:45:04 +00:00
nobu
075d98c7dc * error.c (rb_load_fail): should honor encoding.
* load.c (load_failed): ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34944 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-07 07:30:31 +00:00
tenderlove
d576a25c26 * error.c (rb_loaderror_with_path): Adding the missing file as an
instance variable to the LoadError exception.

* load.c: call rb_loaderror_with_path so that the missing path is
  added to the exception.

* ruby.c: call rb_loaderror rather than raising our own LoadError
  exception.

* include/ruby/intern.h: add declaration for rb_loaderror_with_path.

* test/ruby/test_require.rb: add supporting test for LoadError#path
  method.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34938 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-06 23:38:33 +00:00
tenderlove
ce2f69862e * lib/xmlrpc/parser.rb: support i8 types. Thanks Stas Kelvich!
[ruby-core:29246] [Feature #3090]

* test/xmlrpc/test_client.rb: supporting test

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34936 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-06 23:30:03 +00:00