From e5ed1780afa9a5f29da7c63ca2b7d9c66f6936aa Mon Sep 17 00:00:00 2001 From: matz Date: Tue, 18 Jan 2000 06:09:05 +0000 Subject: [PATCH] 2000-01-18 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@607 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 4 ++++ array.c | 5 +++-- misc/ruby-mode.el | 3 ++- object.c | 16 ++++++++-------- sample/test.rb | 11 +++++++---- struct.c | 34 ---------------------------------- version.h | 4 ++-- 7 files changed, 26 insertions(+), 51 deletions(-) diff --git a/ChangeLog b/ChangeLog index f98ee50df9..becc4e7db8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +Tue Jan 18 12:24:28 2000 Yukihiro Matsumoto + + * struct.c (Init_Struct): remove Struct's own hash and eql?. + Sat Jan 15 22:21:08 2000 Nobuyoshi Nakada * eval.c (search_method): argument klass may be 0. diff --git a/array.c b/array.c index b04fa83780..8752c2deef 100644 --- a/array.c +++ b/array.c @@ -1301,11 +1301,12 @@ rb_ary_hash(ary) VALUE ary; { long i; - int h; + int n, h; h = RARRAY(ary)->len; for (i=0; ilen; i++) { - int n = rb_hash(RARRAY(ary)->ptr[i]); + h = (h<<1) | (h<0 ? 1 : 0); + n = rb_hash(RARRAY(ary)->ptr[i]); h ^= NUM2LONG(n); } return INT2FIX(h); diff --git a/misc/ruby-mode.el b/misc/ruby-mode.el index 1b7effc459..8f144cbd4c 100644 --- a/misc/ruby-mode.el +++ b/misc/ruby-mode.el @@ -179,7 +179,8 @@ The variable ruby-indent-level controls the amount of indentation. (back-to-indentation) (setq top (current-column)) (skip-chars-backward " \t") - (if (>= shift top) (setq shift (- shift top))) + (if (>= shift top) (setq shift (- shift top)) + (setq shift 0)) (if (and (bolp) (= x top)) (move-to-column (+ x shift)) diff --git a/object.c b/object.c index afdd9e9aca..bf2ff5eed3 100644 --- a/object.c +++ b/object.c @@ -58,18 +58,11 @@ rb_obj_equal(obj1, obj2) return Qfalse; } -static VALUE -rb_any_to_a(obj) - VALUE obj; -{ - return rb_ary_new3(1, obj); -} - static VALUE rb_obj_hash(obj) VALUE obj; { - return (long)obj|FIXNUM_FLAG; + return ((long)obj)|FIXNUM_FLAG; } VALUE @@ -121,6 +114,13 @@ rb_obj_dup(obj) return rb_funcall(obj, rb_intern("clone"), 0, 0); } +static VALUE +rb_any_to_a(obj) + VALUE obj; +{ + return rb_ary_new3(1, obj); +} + VALUE rb_any_to_s(obj) VALUE obj; diff --git a/sample/test.rb b/sample/test.rb index e23c39f5e7..53783d145e 100644 --- a/sample/test.rb +++ b/sample/test.rb @@ -343,7 +343,7 @@ ok(($x * 5).join(":") == '1:1:1:1:1') ok(($x * 1).join(":") == '1') ok(($x * 0).join(":") == '') -*$x = 1..7 +*$x = (1..7).to_a ok($x.size == 7) ok($x == [1, 2, 3, 4, 5, 6, 7]) @@ -716,8 +716,11 @@ ok(a == 1 && b == 2 && c == 3 && d == 4) *a = 1, 2, 3 ok(a == [1, 2, 3]) -*a = 1..3 # array conversion -ok(a == [1, 2, 3]) +*a = 4 +ok(a == [4]) + +*a = nil +ok(a == []) check "call" def aaa(a, b=100, *rest) @@ -1042,7 +1045,7 @@ test = struct_test.new(1, 2) ok(test.foo == 1 && test.bar == 2) ok(test[0] == 1 && test[1] == 2) -a, b = test +a, b = test.to_a ok(a == 1 && b == 2) test[0] = 22 diff --git a/struct.c b/struct.c index 790e185b63..145c2e5b44 100644 --- a/struct.c +++ b/struct.c @@ -523,38 +523,6 @@ rb_struct_equal(s, s2) return Qtrue; } -static VALUE -rb_struct_eql(s, s2) - VALUE s, s2; -{ - long i; - - if (TYPE(s2) != T_STRUCT) return Qfalse; - if (CLASS_OF(s) != CLASS_OF(s2)) return Qfalse; - if (RSTRUCT(s)->len != RSTRUCT(s2)->len) { - rb_bug("inconsistent struct"); /* should never happen */ - } - - for (i=0; ilen; i++) { - if (!rb_eql(RSTRUCT(s)->ptr[i], RSTRUCT(s2)->ptr[i])) return Qfalse; - } - return Qtrue; -} - -static VALUE -rb_struct_hash(s) - VALUE s; -{ - long i; - int h; - - h = CLASS_OF(s); - for (i=0; ilen; i++) { - h ^= rb_hash(RSTRUCT(s)->ptr[i]); - } - return INT2FIX(h); -} - static VALUE rb_struct_size(s) VALUE s; @@ -574,8 +542,6 @@ Init_Struct() rb_define_method(rb_cStruct, "clone", rb_struct_clone, 0); rb_define_method(rb_cStruct, "==", rb_struct_equal, 1); - rb_define_method(rb_cStruct, "eql?", rb_struct_eql, 1); - rb_define_method(rb_cStruct, "hash", rb_struct_hash, 0); rb_define_method(rb_cStruct, "to_s", rb_struct_to_s, 0); rb_define_method(rb_cStruct, "inspect", rb_struct_inspect, 0); diff --git a/version.h b/version.h index 5ccc8370b3..6aa0d401f7 100644 --- a/version.h +++ b/version.h @@ -1,4 +1,4 @@ #define RUBY_VERSION "1.5.2" -#define RUBY_RELEASE_DATE "2000-01-17" +#define RUBY_RELEASE_DATE "2000-01-18" #define RUBY_VERSION_CODE 152 -#define RUBY_RELEASE_CODE 20000117 +#define RUBY_RELEASE_CODE 20000118