Граф коммитов

674 Коммитов

Автор SHA1 Сообщение Дата
nobu e99c018d87 * eval.c (return_jump, break_jump): raise unexpceted local jump
exception directly.  [ruby-dev:23740]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6496 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-06-22 14:59:25 +00:00
nobu 33b8591248 * eval.c (proc_set_safe_level, proc_invoke, rb_mod_define_method): not
set $SAFE for methods defined from Proc.  [ruby-dev:23697]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6477 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-06-19 04:27:08 +00:00
nobu 934064ba5a * eval.c (method_call): allow changing $SAFE. [ruby-dev:23713]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6476 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-06-19 04:24:34 +00:00
nobu 960d79099f * eval.c (eval): adjust indent.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6473 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-06-18 14:52:07 +00:00
nobu 31764d62ce * eval.c (proc_save_safe_level, rb_set_safe_level, safe_setter): limit
safe level.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6471 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-06-18 14:12:42 +00:00
matz 9d1f9bd56b * eval.c (rb_mod_freeze): prepare string representation before
freezing. [ruby-talk:103646]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6469 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-06-16 14:21:34 +00:00
nobu e3308c5272 * eval.c (rb_eval): bad influence on frame node.
* eval.c (eval): reverted wrongly removed condition.  [ruby-dev:23638]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6425 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-05-28 02:20:34 +00:00
nobu 74ab20eb37 * eval.c (rb_eval, eval): make line number consistent on eval with
Proc.  [ruby-talk:101253]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6409 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-05-26 05:19:50 +00:00
nobu 82572952ec * eval.c (rb_yield_0, proc_invoke, proc_arity): allow passing a block
to a Proc.  [ruby-dev:23533]

* parse.y (block_par, block_var): ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6402 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-05-25 02:54:22 +00:00
matz e0e8ee0ac8 * eval.c (rb_method_node): search cache entry first.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6351 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-05-18 00:32:30 +00:00
matz 094290e68f * eval.c (eval): forgot to restore $SAFE value before evaluating
compiled node.  [ruby-core:02872]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6314 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-05-14 16:45:40 +00:00
matz 6a60393280 * range.c (range_each_func): terminates loop if generating value
is same to @end.  [ruby-talk:100269]

* string.c (rb_str_new4): should not reuse frozen shared string if
  the original is not an instance of String. [ruby-talk:100193]

* time.c (time_mdump): preserve GMT bit in the marshal data.
  [ruby-talk:100213]

* eval.c (is_defined): do not protect exception during receiver
  evaluation.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6313 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-05-14 16:39:15 +00:00
matz ae3241dcfe * eval.c (eval): warning during eval should not cause deadlock.
[ruby-talk:98651]

* eval.c (rb_eval): raise TypeError exception for superclass
  mismatch.  [ruby-dev:39567]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6288 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-05-10 08:23:13 +00:00
matz 1b0f90ca33 * parse.y (string_content): turn off NODE_NEWLINE flag to avoid
unnecessary line trace for inlined expression.
  (ruby-bugs PR#1320)

* numeric.c (flo_to_s): tweak output string based to preserve
  decimal point and to remove trailing zeros.  [ruby-talk:97891]

* string.c (rb_str_index_m): use unsigned comparison for T_FIXNUM
  search.  [ruby-talk:97342]

* hash.c (rb_hash_equal): returns true if two hashes have same set
  of key-value set.  [ruby-talk:97559]

* hash.c (rb_hash_eql): returns true if two hashes are equal and
  have same default values.

* string.c (rb_str_equal): always returns true or false, never
  returns nil. [ruby-dev:23404]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6262 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-05-07 08:44:24 +00:00
nobu c94f8ab926 * eval.c (rb_mod_define_method): allow binding methods to modules.
[ruby-dev:23410]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6194 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-04-21 19:16:40 +00:00
nobu d952e33003 * array.c, enum.c, eval.c, file.c, io.c, numeric.c, object.c, prec.c,
process.c, re.c, string.c: typos in RDoc comments.  [ruby-core:02783]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6158 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-04-14 04:06:52 +00:00
matz df84c64be9 * pack.c (pack_pack): use NUM2INT() instead of num2i32().
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6120 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-04-07 06:30:15 +00:00
matz 4ded52b623 * file.c (rb_get_path): get path string via "to_path" method if
path object is not a string. [Ruby2]

* gc.c (rb_gc_call_finalizer_at_exit): do not free threads in the
  exit finalizers.

* io.c (rb_io_reopen): should use rb_io_check_io().


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6114 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-04-07 02:51:05 +00:00
matz ce44928d2b * error.c (Init_Exception): remove Exception#to_str. [Ruby2]
* eval.c (error_print): should no call "to_str" anymore use
  "message" method instead.

* io.c (rb_f_open): Kernel#open() calls "to_open" if the first
  argument responds to it. [Ruby2]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6102 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-04-05 15:55:09 +00:00
matz c0ab40c785 * eval.c (top_include): include in the wrapped load is done for
the wrapper, not for a singleton class for wrapped main.
  [ruby-dev:23305]

* bignum.c (rb_big_eq): use temporary double variable to save the
  result (internal float register may be bigger than 64 bits, for
  example, 80 bits on x86).  [ruby-dev:23311]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6076 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-04-02 08:35:32 +00:00
matz 6c70639e7b * eval.c (block_pass): should increment unique identifier of the
block.  [ruby-talk:96363]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6075 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-04-02 05:38:07 +00:00
aamine 6dcbfbc525 * eval.c (Init_load): make $LOADED_FEATURES built-in. [ruby-dev:23299]
* ruby.c (ruby_prog_init): make $PROGRAM_NAME built-in.
* lib/English.rb: remove $LOADED_FEATURES and $PROGRAM_NAME.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6069 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-04-02 02:36:48 +00:00
nobu 058fd11019 * eval.c (rb_eval): fix SEGV at retry in iterator's receiver.
[ruby-dev:23227]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6047 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-03-30 09:19:06 +00:00
matz 919f456de8 * exception message clean-up by Ian Macdonald <ian@caliban.org>.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6044 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-03-29 07:54:38 +00:00
matz 4f0ef242cc * object.c (rb_mod_cvar_get): new method Module#class_variable_get.
* object.c (rb_mod_cvar_set): ditto (Module#class_variable_set).

* eval.c (rb_thread_atfork): 1.9 warns no more for thread
  termination.  [ruby-dev:23212]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6005 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-03-23 19:14:16 +00:00
matz aab1ba1365 * eval.c (rb_require_safe): preserve old ruby_errinfo.
[ruby-talk:95409]

* eval.c (rb_f_raise): should not clear backtrace information if
  exception object already have one.

* parse.y (assoc_list): allow {sym: val} style Hash. [Ruby2]
  this change is done by Nobuyoshi Nakada <nobu@ruby-lang.org>.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@5987 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-03-20 16:45:41 +00:00
matz 610b5d7975 * variable.c (rb_cvar_set): class variables become private to the
particular class/module. [Ruby2]

* variable.c (rb_cvar_get): ditto.

* io.c (rb_io_sync): need not to check writable. [ruby-core:02674]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@5977 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-03-19 07:13:01 +00:00
matz c223709c3b * eval.c (proc_eq): avoid false positive by using scope and
dyna_vars.  no longer use frame.uniq.

* eval.c (proc_arity): arity is now defined as number of
  parameters that would not be ignored. i.e. Proc.new{}.arity
  returns zero.  update test suites too.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@5972 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-03-18 10:09:43 +00:00
matz bfb47068b0 * eval.c: remove specialized version of rb_Array(). use simple
one defined in object.c.

* object.c (Init_Object): remove Kernel#to_a.

* enum.c (enum_zip): use "to_a" instead of "to_ary".


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@5968 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-03-18 06:59:04 +00:00
matz 2fab242f66 * eval.c (rb_yield_0): should not re-submit TAG_BREAK if this
yield is not break destination. [ruby-dev:23197]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@5952 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-03-15 02:27:29 +00:00
nobu 2baa02ec9b * eval.c (rb_thread_raise): err at unstarted thread. (PR#1302)
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@5948 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-03-14 13:07:42 +00:00
matz 8818447867 * eval.c (return_jump): set return value to the return
destination.  separated from localjump_destination().

* eval.c (break_jump): break innermost loop (or thread or proc).

* eval.c (rb_yield_0): set exit_value for block break.

* eval.c (eval): Only print backtrace if generating the backtrace
  doesn't generate an exception.  [ruby-core:02621]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@5935 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-03-10 07:32:37 +00:00
matz 7c097dc891 * struct.c (rb_struct_s_def): Struct::new executes block with
generated struct class. [ruby-talk:02606]

* io.c (rb_io_ungetc): raise IOError instead of calling
  rb_sys_fail().  [ruby-talk:23181]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@5934 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-03-10 07:05:19 +00:00
matz 54a0407425 * eval.c (method_hash): new method. [ruby-talk:93968]
* eval.c (proc_eq): do not compare dyna_vars.

* eval.c (proc_hash): new method.

* eval.c (rb_yield_0): protect break/return from within orphan (or
  lambda) Proc object.

* parse.y (yylex): should not allow symbol for invalid global
  variable (e.g. `:$-)`). [ruby-core:02518]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@5879 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-03-03 04:55:35 +00:00
matz bf08067ded * eval.c (proc_invoke): no orphan block check is needed when pcall
is true.

* eval.c (localjump_destination): update localjump condition.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@5845 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-02-27 13:30:00 +00:00
matz aba4666e19 * eval.c (localjump_destination): lambda should not interfere
return from the yielded block.

* hash.c (delete_if_i): use st_delete_safe() (via
  rb_hash_delete()) instead of returning ST_DELETE.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@5842 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-02-26 17:15:00 +00:00
akr 7430c46af6 * eval.c (rb_eval): care that another thread replace NODE_DREGX_ONCE
to NODE_LIT.  [ruby-dev:22920]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@5740 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-02-16 16:40:50 +00:00
nobu b416c57c0a * eval.c (method_proc): return bound Proc object. [ruby-dev:22854]
* eval.c (rb_mod_define_method): bind method body itself for Method
  object.

* node.h (NODE_DMETHOD): deprecated.

* object.c (rb_class_inherited_p): export.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@5667 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-02-10 11:49:14 +00:00
nobu beee54c7ce * eval.c (umethod_bind): perge unused check. [ruby-dev:22850]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@5664 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-02-10 07:44:00 +00:00
matz 225cd9f109 * parse.y (opt_rescue): use NODE_ERRINFO() instead of
NODE_GVAR("$!"), to avoid confusion from variable aliasing.
  [ruby-talk:90074]

* version.c (Init_version): remove obsolete constants VERSION
  etc.  [ruby-dev:22643]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@5538 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-01-22 08:31:33 +00:00
matz 002517aba8 * parse.y (newline_node): do not use NODE_NEWLINE node anymore,
use NEWLINE flag instead.

* ext/socket/socket.c (sock_gethostbyname): returns host if
  ai_canonname is NULL. (ruby-bugs PR#1243)

* parse.y (block_append): update nd_end for "real" head node.
  [ruby-list:39058]

* marshal.c (w_class): should not dump singleton class.
  [ruby-dev:22631]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@5535 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-01-21 16:47:23 +00:00
matz 22c005569b * variable.c (rb_set_class_path): do not set path if
* lib/cgi.rb (CGI::QueryExtension): give extended string, not a
  delegater object.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@5501 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-01-19 09:19:31 +00:00
nobu 8e877fc517 * error.c (NameError::message): internal use only.
* eval.c (rb_method_missing): use hidden constant.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@5500 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-01-19 08:39:43 +00:00
nobu 292b3ecbb4 * error.c (NameError::Message): new class for lazy evaluation of
message to ensure replaced before marshalling.  [ruby-dev:22604]

* eval.c (rb_method_missing): use NameError::Message.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@5481 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-01-17 14:58:57 +00:00
nobu 154615ea66 * eval.c (proc_eq): compare also arguments and environment
(including local variables).  [ruby-dev:22590]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@5476 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-01-16 14:53:10 +00:00
nobu fd23f145e6 * eavl.c (proc_eq): compare also arguments and environment.
[ruby-dev:22590]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@5472 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-01-16 05:56:53 +00:00
matz b07337fcb3 * configure.in: install rdoc by default. if you do not want to
install rdoc, specify --disable-install-doc.

* eval.c (eval): need to add message delimiter. [ruby-dev:22561]

* defines.h (__NeXT__): Ensure that all standard S_IRUSR, S_IWGRP,
  S_IRWXO, etc. macros are defined since future code might require
  them (even though present code only requires a subset).

* defines.h (__NeXT__): Bug fix: WORDS_BIGENDIAN was not being set
  correctly on Rhapsody when -arch compiler flag was used (via
  configure's --enable-fat-binary option).

* ext/socket/socket.c (make_hostent): getaddrinfo(3) on BSD do not
  fill ai_canonname if serv is not supplied.  (ruby-bugs PR#1243)


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@5430 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-01-10 17:39:07 +00:00
eban 973c2ad00d * eval.c, object.c, process.c, re.c: don't use C++ style comments.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@5412 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-01-08 02:21:28 +00:00
matz d5ffbb20e8 * eval.c (rb_mod_modfunc): should break if m has no super class.
[ruby-dev:22498]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@5404 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-01-07 12:42:52 +00:00
matz 59dbfa3e4c * dir.c: merge tuning from H.Yamamoto <ocean@m2.ccsnet.ne.jp>.
[ruby-dev:22476]

* io.c (argf_eof): ARGF.eof? should not have any side effect.
  [ruby-dev:22469]

* io.c (argf_each_byte): should return self.  [ruby-dev:22465]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@5365 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-01-02 16:21:26 +00:00