From baa00aa2506745308a598ce91e65a727ba25f30f Mon Sep 17 00:00:00 2001 From: matz Date: Thu, 19 Dec 2002 09:20:20 +0000 Subject: * numeric.c (num_step): use DBL_EPSILON. * array.c (rb_check_array_type): new function: return an array (convert if possible), or nil. * string.c (rb_check_string_type): new function: return a string (convert if possible), or nil. * numeric.c (rb_dbl_cmp): returns nil if values are not comparable. * numeric.c (fix_cmp,flo_cmp): use rb_num_coerce_cmp() * bignum.c (rb_big_cmp): ditto. * numeric.c (rb_num_coerce_cmp): new coercing function for "<=>", which does not raise TypeError. * numeric.c (do_coerce): can be supress exception now. * object.c (rb_mod_cmp): should return nil for non class/module objects. * re.c (rb_reg_eqq): return false if the argument is not a string. now returns boolean value. * class.c (rb_include_module): argument should be T_MODULE, not T_class, nor T_ICLASS. * eval.c (is_defined): "defined?" should return "assignment" for attribute assignment (e.g. a.foo=b) and indexed assignment (e.g. a[2] = 44). * parse.y (aryset): use NODE_ATTRASGN. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3169 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- eval.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'eval.c') diff --git a/eval.c b/eval.c index 86c22ab0d0..b7662c9428 100644 --- a/eval.c +++ b/eval.c @@ -1881,6 +1881,7 @@ is_defined(self, node, buf) goto check_bound; case NODE_CALL: + case NODE_ATTRASGN: PUSH_TAG(PROT_NONE); if ((state = EXEC_TAG()) == 0) { val = rb_eval(self, node->nd_recv); @@ -1909,7 +1910,9 @@ is_defined(self, node, buf) } else if (!rb_method_boundp(val, node->nd_mid, call)) break; - return arg_defined(self, node->nd_args, buf, "method"); + return arg_defined(self, node->nd_args, buf, + nd_type(node) == NODE_ATTRASGN ? + "assignment" : "method"); } break; @@ -1936,7 +1939,6 @@ is_defined(self, node, buf) return "false"; case NODE_ATTRSET: - case NODE_ATTRASGN: case NODE_OP_ASGN1: case NODE_OP_ASGN2: case NODE_MASGN: @@ -5039,7 +5041,7 @@ compile(src, file, line) NODE *node; ruby_nerrs = 0; - Check_Type(src, T_STRING); + StringValue(src); node = rb_compile_string(file, src, line); if (ruby_nerrs == 0) return node; -- cgit v1.2.3