diff options
-rw-r--r-- | ChangeLog | 14 | ||||
-rw-r--r-- | bignum.c | 12 | ||||
-rw-r--r-- | parse.y | 7 |
3 files changed, 19 insertions, 14 deletions
@@ -1,3 +1,17 @@ +Tue Jul 11 16:54:17 2000 Yukihiro Matsumoto <matz@netlab.co.jp> + + * parse.y (yylex): `@<digit>' is no longer a valid instance + variable name. + +Tue Jul 11 01:51:50 2000 Yukihiro Matsumoto <matz@netlab.co.jp> + + * bignum.c (rb_big_divmod): should not use Integer(float) for + the right operand. + + * bignum.c (rb_big_remainder): ditto. + + * bignum.c (rb_big_modulo): ditto. + Mon Jul 10 15:27:16 2000 WATANABE Hirofumi <eban@os.rim.or.jp> * io.c (pipe_finalize): should set rb_last_status when pclose(). @@ -945,10 +945,6 @@ rb_big_modulo(x, y) case T_BIGNUM: break; - case T_FLOAT: - y = dbl2big(RFLOAT(y)->value); - break; - default: return rb_num_coerce_bin(x, y); } @@ -971,10 +967,6 @@ rb_big_remainder(x, y) case T_BIGNUM: break; - case T_FLOAT: - y = dbl2big(RFLOAT(y)->value); - break; - default: return rb_num_coerce_bin(x, y); } @@ -994,10 +986,6 @@ rb_big_divmod(x, y) y = rb_int2big(FIX2LONG(y)); break; - case T_FLOAT: - y = dbl2big(RFLOAT(y)->value); - break; - case T_BIGNUM: break; @@ -3432,6 +3432,9 @@ yylex() tokadd('@'); c = nextc(); } + if (ISDIGIT(c)) { + rb_compile_error("`@%c' is not a valid instance variable name", c); + } if (!is_identchar(c)) { pushback(c); return '@'; @@ -3439,8 +3442,8 @@ yylex() break; default: - if (c != '_' && !ISALPHA(c) && !ismbchar(c)) { - rb_compile_error("Invalid char '%c' in expression", c); + if (!is_identchar(c) || ISDIGIT(c)) { + rb_compile_error("Invalid char '%c'(%03o) in expression", c, c); goto retry; } |