* re.c (rb_reg_expr_str): need to process backslashes properly.

* object.c (rb_any_to_a): declare Object#to_a to be obsolete.

* object.c (rb_Array): do not convert nil into [] automagically.

* object.c (rb_Integer): use "to_int" instead of
  "to_i". [experimental]

* object.c (nil_to_f): new method.

* object.c (rb_Integer): Symbols and nil should cause error.

* object.c (rb_Float): nil should cause error.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2608 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
matz 2002-06-28 14:42:46 +00:00
Родитель ee852ed46d
Коммит f0221db462
14 изменённых файлов: 117 добавлений и 63 удалений

Просмотреть файл

@ -22,6 +22,16 @@ Thu Jun 27 08:28:18 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
* parse.y (literal_concat_string): non-string last expression in
#{} was ignored when followed by literal.
Thu Jun 27 03:42:04 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
* re.c (rb_reg_expr_str): need to process backslashes properly.
Wed Jun 26 17:33:38 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
* object.c (rb_any_to_a): declare Object#to_a to be obsolete.
* object.c (rb_Array): do not convert nil into [] automagically.
Wed Jun 26 15:40:00 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
* parse.y (words, qwords): word list literal rules.
@ -39,6 +49,17 @@ Tue Jun 25 19:24:38 2002 KONISHI Hiromasa <konishih@fd6.so-net.ne.jp>
* dln.c: remove definition rb_loaderror().
Tue Jun 25 00:34:54 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
* object.c (rb_Integer): use "to_int" instead of
"to_i". [experimental]
* object.c (nil_to_f): new method.
* object.c (rb_Integer): Symbols and nil should cause error.
* object.c (rb_Float): nil should cause error.
Tue Jun 25 00:21:00 2002 KONISHI Hiromasa <konishih@fd6.so-net.ne.jp>
* dln.c: remark definition rb_loaderror().

Просмотреть файл

@ -995,7 +995,7 @@ module Tk
tk_call 'wm', 'title', path, *args
end
def transient(*args)
window(tk_call 'wm', 'transient', path, *args)
window(tk_call('wm', 'transient', path, *args))
end
def withdraw
tk_call 'wm', 'withdraw', path
@ -1475,7 +1475,7 @@ module TkSelection
TkSelection.handle self, func, type, format
end
def TkSelection.own(win=None, func=None)
window(tk_call 'selection', 'own', win, func)
window(tk_call('selection', 'own', win, func))
end
def own(func=None)
TkSelection.own self, func
@ -1617,7 +1617,7 @@ module TkWinfo
include Tk
extend Tk
def TkWinfo.atom(name)
number(tk_call 'winfo', 'atom', name)
number(tk_call('winfo', 'atom', name))
end
def winfo_atom(name)
TkWinfo.atom name
@ -1899,7 +1899,7 @@ module TkWinfo
TkWinfo.y self
end
def TkWinfo.viewable(window)
bool(tk_call 'winfo', 'viewable', window.path)
bool(tk_call('winfo', 'viewable', window.path))
end
def winfo_viewable
TkWinfo.viewable self
@ -2469,7 +2469,7 @@ class TkObject<TkKernel
when 'text', 'label', 'show', 'data', 'file'
tk_call path, 'cget', "-#{slot}"
else
tk_tcl2ruby tk_call path, 'cget', "-#{slot}"
tk_tcl2ruby tk_call(path, 'cget', "-#{slot}")
end
end
@ -2805,9 +2805,9 @@ class TkWindow<TkObject
elsif args.length == 1
case args[0]
when 'global', :global
return(tk_call 'grab', 'set', '-global', path)
return(tk_call('grab', 'set', '-global', path))
when 'release', :release
return(tk_call 'grab', 'release', path)
return tk_call('grab', 'release', path)
else
val = tk_call('grab', args[0], path)
end
@ -3329,7 +3329,7 @@ class TkListbox<TkTextWin
when 'text', 'label', 'show'
tk_send 'itemcget', index, "-#{key}"
else
tk_tcl2ruby tk_send 'itemcget', index, "-#{key}"
tk_tcl2ruby tk_send('itemcget', index, "-#{key}")
end
end
def itemconfigure(index, key, val=None)
@ -3468,7 +3468,7 @@ class TkMenu<TkWindow
when 'text', 'label', 'show'
tk_send 'entrycget', index, "-#{key}"
else
tk_tcl2ruby tk_send 'entrycget', index, "-#{key}"
tk_tcl2ruby tk_send('entrycget', index, "-#{key}")
end
end
def entryconfigure(index, key, val=None)

Просмотреть файл

@ -94,10 +94,10 @@ class TkCanvas<TkWindow
end
def canvasx(x, *args)
tk_tcl2ruby(tk_send 'canvasx', x, *args)
tk_tcl2ruby(tk_send('canvasx', x, *args))
end
def canvasy(y, *args)
tk_tcl2ruby(tk_send 'canvasy', y, *args)
tk_tcl2ruby(tk_send('canvasy', y, *args))
end
def coords(tag, *args)
@ -122,7 +122,7 @@ class TkCanvas<TkWindow
end
def find(mode, *args)
list(tk_send 'find', mode, *args).collect!{|id|
list(tk_send('find', mode, *args)).collect!{|id|
TkcItem.id2obj(self, id)
}
end
@ -191,7 +191,7 @@ class TkCanvas<TkWindow
when 'text', 'label', 'show', 'data', 'file', 'maskdata', 'maskfile'
tk_send 'itemcget', tagid(tagOrId), "-#{option}"
else
tk_tcl2ruby tk_send 'itemcget', tagid(tagOrId), "-#{option}"
tk_tcl2ruby tk_send('itemcget', tagid(tagOrId), "-#{option}")
end
end
@ -231,8 +231,8 @@ class TkCanvas<TkWindow
if key
case key.to_s
when 'dash', 'activedash', 'disableddash'
conf = tk_split_simplelist(tk_send 'itemconfigure',
tagid(tagOrId), "-#{key}")
conf = tk_split_simplelist(tk_send('itemconfigure',
tagid(tagOrId), "-#{key}"))
if conf[3] && conf[3] =~ /^[0-9]/
conf[3] = list(conf[3])
end
@ -240,17 +240,17 @@ class TkCanvas<TkWindow
conf[4] = list(conf[4])
end
when 'text', 'label', 'show', 'data', 'file', 'maskdata', 'maskfile'
conf = tk_split_simplelist(tk_send 'itemconfigure',
tagid(tagOrId), "-#{key}")
conf = tk_split_simplelist(tk_send('itemconfigure',
tagid(tagOrId), "-#{key}"))
else
conf = tk_split_list(tk_send 'itemconfigure',
tagid(tagOrId), "-#{key}")
conf = tk_split_list(tk_send('itemconfigure',
tagid(tagOrId), "-#{key}"))
end
conf[0] = conf[0][1..-1]
conf
else
tk_split_simplelist(tk_send 'itemconfigure',
tagid(tagOrId)).collect{|conflist|
tk_split_simplelist(tk_send('itemconfigure',
tagid(tagOrId))).collect{|conflist|
conf = tk_split_simplelist(conflist)
conf[0] = conf[0][1..-1]
case conf[0]
@ -330,7 +330,7 @@ class TkCanvas<TkWindow
end
def itemtype(tag)
TkcItem.type2class(tk_send 'type', tagid(tag))
TkcItem.type2class(tk_send('type', tagid(tag)))
end
end
@ -812,7 +812,7 @@ class TkPhotoImage<TkImage
when 'data', 'file'
tk_send 'cget', option
else
tk_tcl2ruby tk_send 'cget', option
tk_tcl2ruby tk_send('cget', option)
end
end

Просмотреть файл

@ -189,7 +189,7 @@ class TkText<TkTextWin
when 'text', 'label', 'show', 'data', 'file'
tk_call @path, 'tag', 'cget', tag, "-#{key}"
else
tk_tcl2ruby tk_call @path, 'tag', 'cget', tag, "-#{key}"
tk_tcl2ruby tk_call(@path, 'tag', 'cget', tag, "-#{key}")
end
end
@ -636,7 +636,7 @@ class TkTextTag<TkObject
when 'text', 'label', 'show', 'data', 'file'
tk_call @t.path, 'tag', 'cget', @id, "-#{key}"
else
tk_tcl2ruby tk_call @t.path, 'tag', 'cget', @id, "-#{key}"
tk_tcl2ruby tk_call(@t.path, 'tag', 'cget', @id, "-#{key}")
end
end
@ -854,7 +854,7 @@ class TkTextWindow<TkObject
when 'text', 'label', 'show', 'data', 'file'
tk_call @t.path, 'window', 'cget', @index, "-#{slot}"
else
tk_tcl2ruby tk_call @t.path, 'window', 'cget', @index, "-#{slot}"
tk_tcl2ruby tk_call(@t.path, 'window', 'cget', @index, "-#{slot}")
end
end
@ -904,17 +904,17 @@ class TkTextWindow<TkObject
if slot
case slot.to_s
when 'text', 'label', 'show', 'data', 'file'
conf = tk_split_simplelist(tk_call @t.path, 'window', 'configure',
@index, "-#{slot}")
conf = tk_split_simplelist(tk_call(@t.path, 'window', 'configure',
@index, "-#{slot}"))
else
conf = tk_split_list(tk_call @t.path, 'window', 'configure',
@index, "-#{slot}")
conf = tk_split_list(tk_call(@t.path, 'window', 'configure',
@index, "-#{slot}"))
end
conf[0] = conf[0][1..-1]
conf
else
tk_split_simplelist(tk_call @t.path, 'window', 'configure',
@index).collect{|conflist|
tk_split_simplelist(tk_call(@t.path, 'window', 'configure',
@index)).collect{|conflist|
conf = tk_split_simplelist(conflist)
conf[0] = conf[0][1..-1]
case conf[0]
@ -976,7 +976,7 @@ class TkTextImage<TkObject
when 'text', 'label', 'show', 'data', 'file'
tk_call @t.path, 'image', 'cget', @index, "-#{slot}"
else
tk_tcl2ruby tk_call @t.path, 'image', 'cget', @index, "-#{slot}"
tk_tcl2ruby tk_call(@t.path, 'image', 'cget', @index, "-#{slot}")
end
end
@ -1003,17 +1003,17 @@ class TkTextImage<TkObject
if slot
case slot.to_s
when 'text', 'label', 'show', 'data', 'file'
conf = tk_split_simplelist(tk_call @t.path, 'image', 'configure',
@index, "-#{slot}")
conf = tk_split_simplelist(tk_call(@t.path, 'image', 'configure',
@index, "-#{slot}"))
else
conf = tk_split_list(tk_call @t.path, 'image', 'configure',
@index, "-#{slot}")
conf = tk_split_list(tk_call(@t.path, 'image', 'configure',
@index, "-#{slot}"))
end
conf[0] = conf[0][1..-1]
conf
else
tk_split_simplelist(tk_call @t.path, 'image', 'configure',
@index).collect{|conflist|
tk_split_simplelist(tk_call(@t.path, 'image', 'configure',
@index)).collect{|conflist|
conf = tk_split_simplelist(conflist)
conf[0] = conf[0][1..-1]
case conf[0]

Просмотреть файл

@ -452,7 +452,7 @@ def create_makefile(target, srcprefix = nil)
elsif RUBY_PLATFORM =~ /cygwin|mingw/
deffile = target + '.def'
if not File.exist? deffile
if File.exist? File.join srcdir, deffile
if File.exist? File.join(srcdir, deffile)
deffile = File.join srcdir, deffile
else
open(deffile, 'wb') do |f|

Просмотреть файл

@ -214,7 +214,7 @@ class PP < PrettyPrint
text '='
group(1) {
breakable ''
pp(obj.instance_eval v)
pp(obj.instance_eval(v))
}
}
}

Просмотреть файл

@ -84,7 +84,7 @@ class Tracer
def get_line(file, line)
if p = @get_line_procs[file]
return p.call line
return p.call(line)
end
unless list = SCRIPT_LINES__[file]

Просмотреть файл

@ -184,7 +184,7 @@ module TSort
if component.size == 1
yield component.first
else
raise Cyclic.new "topological sort failed: #{component.inspect}"
raise Cyclic.new("topological sort failed: #{component.inspect}")
end
}
end

Просмотреть файл

@ -782,6 +782,7 @@ An end of a defun is found by moving forward from the beginning of one."
(make-local-variable 'font-lock-defaults)
(make-local-variable 'font-lock-keywords)
(make-local-variable 'font-lock-syntax-table)
(make-local-variable 'font-lock-syntactic-keywords)
(setq font-lock-defaults '((ruby-font-lock-keywords) nil nil))
(setq font-lock-keywords ruby-font-lock-keywords)
(setq font-lock-syntax-table ruby-font-lock-syntax-table)

Просмотреть файл

@ -18,6 +18,7 @@
#include <stdio.h>
#include <errno.h>
#include <ctype.h>
#include <math.h>
VALUE rb_mKernel;
VALUE rb_cObject;
@ -134,6 +135,7 @@ static VALUE
rb_any_to_a(obj)
VALUE obj;
{
rb_warn("default `to_a' will be obsolete");
return rb_ary_new3(1, obj);
}
@ -337,6 +339,13 @@ nil_to_i(obj)
return INT2FIX(0);
}
static VALUE
nil_to_f(obj)
VALUE obj;
{
return rb_float_new(0.0);
}
static VALUE
nil_to_s(obj)
VALUE obj;
@ -917,6 +926,7 @@ rb_check_convert_type(val, type, tname, method)
return v;
}
static VALUE
rb_to_integer(val, method)
VALUE val;
@ -941,6 +951,8 @@ VALUE
rb_Integer(val)
VALUE val;
{
VALUE v;
switch (TYPE(val)) {
case T_FLOAT:
if (RFLOAT(val)->value <= (double)FIXNUM_MAX
@ -961,7 +973,13 @@ rb_Integer(val)
default:
break;
}
return rb_to_integer(val, "to_i");
if (rb_respond_to(val, rb_intern("to_int"))) {
return rb_to_integer(val, "to_int");
}
else {
return rb_to_integer(val, "to_i");
}
}
static VALUE
@ -1073,10 +1091,17 @@ rb_Float(val)
return rb_float_new(rb_str_to_dbl(val, Qtrue));
case T_NIL:
return rb_float_new(0.0);
rb_raise(rb_eTypeError, "cannot convert nil into Float");
break;
default:
return rb_convert_type(val, T_FLOAT, "Float", "to_f");
{
VALUE f = rb_convert_type(val, T_FLOAT, "Float", "to_f");
if (isnan(RFLOAT(f)->value)) {
rb_raise(rb_eArgError, "invalid value for Float()");
}
return f;
}
}
}
@ -1143,6 +1168,9 @@ rb_Array(val)
{
ID to_ary;
if (NIL_P(val)) {
rb_raise(rb_eTypeError, "cannot convert nil into Array");
}
if (TYPE(val) == T_ARRAY) return val;
to_ary = rb_intern("to_ary");
if (rb_respond_to(val, to_ary)) {
@ -1251,7 +1279,7 @@ Init_Object()
rb_define_method(rb_mKernel, "freeze", rb_obj_freeze, 0);
rb_define_method(rb_mKernel, "frozen?", rb_obj_frozen_p, 0);
rb_define_method(rb_mKernel, "to_a", rb_any_to_a, 0);
rb_define_method(rb_mKernel, "to_a", rb_any_to_a, 0); /* to be removed */
rb_define_method(rb_mKernel, "to_s", rb_any_to_s, 0);
rb_define_method(rb_mKernel, "inspect", rb_obj_inspect, 0);
rb_define_method(rb_mKernel, "methods", rb_obj_methods, 0);

21
parse.y
Просмотреть файл

@ -233,7 +233,7 @@ static void top_local_setup();
%type <node> words qwords word_list qword_list word
%type <val> literal numeric
%type <node> bodystmt compstmt stmts stmt expr arg primary command command_call method_call
%type <node> expr_value arg_value primary_value block_call_value
%type <node> expr_value arg_value primary_value
%type <node> if_tail opt_else case_body cases opt_rescue exc_list exc_var opt_ensure
%type <node> args when_args call_args call_args2 open_args paren_args opt_paren_args
%type <node> command_args aref_args opt_block_arg block_arg var_ref var_lhs
@ -605,11 +605,11 @@ command_call : command
;
block_command : block_call
| block_call_value '.' operation2 command_args
| block_call '.' operation2 command_args
{
$$ = new_call($1, $3, $4);
}
| block_call_value tCOLON2 operation2 command_args
| block_call tCOLON2 operation2 command_args
{
$$ = new_call($1, $3, $4);
}
@ -1075,6 +1075,7 @@ arg_value : arg
aref_args : none
| command opt_nl
{
rb_warn("parenthesize argument(s) for future version");
$$ = NEW_LIST($1);
}
| args trailer
@ -1107,10 +1108,12 @@ paren_args : '(' none ')'
}
| '(' block_call opt_nl ')'
{
rb_warn("parenthesize argument for future version");
$$ = NEW_LIST($2);
}
| '(' args ',' block_call opt_nl ')'
{
rb_warn("parenthesize argument for future version");
$$ = list_append($2, $4);
}
;
@ -1121,6 +1124,7 @@ opt_paren_args : none
call_args : command
{
rb_warn("parenthesize argument(s) for future version");
$$ = NEW_LIST($1);
}
| args opt_block_arg
@ -1623,23 +1627,16 @@ block_call : command do_block
$$ = $2;
fixpos($$, $2);
}
| block_call_value '.' operation2 opt_paren_args
| block_call '.' operation2 opt_paren_args
{
$$ = new_call($1, $3, $4);
}
| block_call_value tCOLON2 operation2 opt_paren_args
| block_call tCOLON2 operation2 opt_paren_args
{
$$ = new_call($1, $3, $4);
}
;
block_call_value : block_call
{
value_expr($$);
$$ = $1;
}
;
method_call : operation paren_args
{
$$ = new_fcall($1, $2);

10
re.c
Просмотреть файл

@ -236,7 +236,14 @@ rb_reg_expr_str(str, s, len)
else {
p = s;
while (p<pend) {
if (*p == '/' && (s == p || p[-1] != '\\')) {
if (*p == '\\') {
rb_str_buf_cat(str, p, 1);
p++;
rb_str_buf_cat(str, p, mbclen(*p));
p += mbclen(*p);
continue;
}
else if (*p == '/') {
char c = '\\';
rb_str_buf_cat(str, &c, 1);
rb_str_buf_cat(str, p, 1);
@ -244,6 +251,7 @@ rb_reg_expr_str(str, s, len)
else if (ismbchar(*p)) {
rb_str_buf_cat(str, p, mbclen(*p));
p += mbclen(*p);
need_escape = 1;
continue;
}
else if (ISPRINT(*p)) {

Просмотреть файл

@ -11,4 +11,4 @@ for i in 2 .. Math.sqrt(max)
sieve[j] = nil
end
end
puts sieve.compact.join ", "
puts sieve.compact.join(", ")

Просмотреть файл

@ -1212,8 +1212,7 @@ end
def valid_syntax?(code, fname)
eval("BEGIN {return true}\n#{code}", nil, fname, 0)
rescue Exception
p $!
ensure
puts $!.message
false
end