summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2000-01-18 06:09:05 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2000-01-18 06:09:05 +0000
commite5ed1780afa9a5f29da7c63ca2b7d9c66f6936aa (patch)
tree02bb807e93fa0b9e53167165439d507c432b199b
parentdde62bcd2efbb3825d982326896ab774e73e4218 (diff)
2000-01-18
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@607 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog4
-rw-r--r--array.c5
-rw-r--r--misc/ruby-mode.el3
-rw-r--r--object.c16
-rw-r--r--sample/test.rb11
-rw-r--r--struct.c34
-rw-r--r--version.h4
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 <matz@netlab.co.jp>
+
+ * struct.c (Init_Struct): remove Struct's own hash and eql?.
+
Sat Jan 15 22:21:08 2000 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
* 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; i<RARRAY(ary)->len; 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
@@ -59,17 +59,10 @@ rb_obj_equal(obj1, obj2)
}
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
@@ -524,38 +524,6 @@ rb_struct_equal(s, s2)
}
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; i<RSTRUCT(s)->len; 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; i<RSTRUCT(s)->len; 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