summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog14
-rw-r--r--eval.c10
-rw-r--r--marshal.c7
-rw-r--r--parse.y2
-rw-r--r--regex.c2
5 files changed, 29 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index ccf502c..3f15426 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,17 @@
+Tue Apr 8 11:49:31 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (Init_Proc): make Method and UnboundMethod independent.
+ They are like instance and its class. [ruby-core:00941]
+
+ * parse.y (yylex): disallow global variables like "$1ve".
+ [ruby-core:00945]
+
+ * marshal.c (marshal_dump): Marshal.dump(0, false) should cause an
+ error. (ruby-bugs-ja PR#421)
+
+ * regex.c (re_compile_pattern): warn if '-' is the edge of
+ character range.
+
Mon Apr 7 15:49:09 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
* ext/socket/socket.c (sock_s_unpack_sockaddr_in): remove struct
diff --git a/eval.c b/eval.c
index 9b4420d..5ffcdb0 100644
--- a/eval.c
+++ b/eval.c
@@ -7452,10 +7452,16 @@ Init_Proc()
rb_define_method(rb_cMethod, "unbind", method_unbind, 0);
rb_define_method(rb_mKernel, "method", rb_obj_method, 1);
- rb_cUnboundMethod = rb_define_class("UnboundMethod", rb_cMethod);
+ rb_cUnboundMethod = rb_define_class("UnboundMethod", rb_cObject);
+ rb_undef_alloc_func(rb_cUnboundMethod);
+ rb_undef_method(CLASS_OF(rb_cUnboundMethod), "new");
+ rb_define_method(rb_cUnboundMethod, "==", method_eq, 1);
+ rb_define_method(rb_cUnboundMethod, "clone", method_clone, 0);
+ rb_define_method(rb_cUnboundMethod, "arity", method_arity, 0);
+ rb_define_method(rb_cUnboundMethod, "inspect", method_inspect, 0);
+ rb_define_method(rb_cUnboundMethod, "to_s", method_inspect, 0);
rb_define_method(rb_cUnboundMethod, "to_proc", umethod_proc, 0);
rb_define_method(rb_cUnboundMethod, "bind", umethod_bind, 1);
- rb_define_method(rb_cUnboundMethod, "unbind", umethod_unbind, 0);
rb_define_method(rb_cModule, "instance_method", rb_mod_method, 1);
}
diff --git a/marshal.c b/marshal.c
index b023086..b8319dc 100644
--- a/marshal.c
+++ b/marshal.c
@@ -589,19 +589,22 @@ marshal_dump(argc, argv)
struct dump_arg arg;
struct dump_call_arg c_arg;
- port = 0;
+ port = Qnil;
rb_scan_args(argc, argv, "12", &obj, &a1, &a2);
if (argc == 3) {
if (!NIL_P(a2)) limit = NUM2INT(a2);
+ if (NIL_P(a1)) goto type_error;
port = a1;
}
else if (argc == 2) {
if (FIXNUM_P(a1)) limit = FIX2INT(a1);
+ else if (NIL_P(a1)) goto type_error;
else port = a1;
}
arg.dest = 0;
- if (port) {
+ if (!NIL_P(port)) {
if (!rb_respond_to(port, s_write)) {
+ type_error:
rb_raise(rb_eTypeError, "instance of IO needed");
}
arg.str = rb_str_buf_new(0);
diff --git a/parse.y b/parse.y
index faea6c4..b37a749 100644
--- a/parse.y
+++ b/parse.y
@@ -4246,8 +4246,6 @@ yylex()
tokadd(c);
c = nextc();
} while (ISDIGIT(c));
- if (is_identchar(c))
- break;
pushback(c);
tokfix();
yylval.node = NEW_NTH_REF(atoi(tok()+1));
diff --git a/regex.c b/regex.c
index 655d2f0..b7245d4 100644
--- a/regex.c
+++ b/regex.c
@@ -1675,6 +1675,8 @@ re_compile_pattern(pattern, size, bufp)
if (last > c)
goto invalid_pattern;
+ if (last == '-' || c == '-')
+ re_warning("character class has `-' without escape");
range = 0;
if (had_mbchar == 0) {
for (;last<=c;last++)