* parse.y (block_append, value_expr0, assign_in_cond,

warn_unless_e_option, warning_unless_e_option, range_op,
  cond0): adjust line number in warning.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3706 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2003-04-21 08:44:38 +00:00
parent 7e1d69f231
commit 05ebd131cf
2 changed files with 45 additions and 15 deletions

View File

@ -1,3 +1,9 @@
Mon Apr 21 17:44:34 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
* parse.y (block_append, value_expr0, assign_in_cond,
warn_unless_e_option, warning_unless_e_option, range_op,
cond0): adjust line number in warning.
Mon Apr 21 00:47:42 2003 WATANABE Hirofumi <eban@ruby-lang.org> Mon Apr 21 00:47:42 2003 WATANABE Hirofumi <eban@ruby-lang.org>
* sample/test.rb: avoid the MSVCRT *printf problem(float). * sample/test.rb: avoid the MSVCRT *printf problem(float).

54
parse.y
View File

@ -4473,6 +4473,28 @@ fixpos(node, orig)
nd_set_line(node, nd_line(orig)); nd_set_line(node, nd_line(orig));
} }
static void
parser_warning(node, mesg)
NODE *node;
const char *mesg;
{
int line = ruby_sourceline;
ruby_sourceline = nd_line(node);
rb_warning(mesg);
ruby_sourceline = line;
}
static void
parser_warn(node, mesg)
NODE *node;
const char *mesg;
{
int line = ruby_sourceline;
ruby_sourceline = nd_line(node);
rb_warn(mesg);
ruby_sourceline = line;
}
static NODE* static NODE*
block_append(head, tail) block_append(head, tail)
NODE *head, *tail; NODE *head, *tail;
@ -4489,7 +4511,7 @@ block_append(head, tail)
goto again; goto again;
case NODE_LIT: case NODE_LIT:
case NODE_STR: case NODE_STR:
rb_warning("unused literal ignored"); parser_warning(h, "unused literal ignored");
return tail; return tail;
default: default:
end = NEW_BLOCK(head); end = NEW_BLOCK(head);
@ -4511,7 +4533,7 @@ block_append(head, tail)
case NODE_NEXT: case NODE_NEXT:
case NODE_REDO: case NODE_REDO:
case NODE_RETRY: case NODE_RETRY:
rb_warning("statement not reached"); parser_warning(nd, "statement not reached");
break; break;
case NODE_NEWLINE: case NODE_NEWLINE:
@ -4927,7 +4949,7 @@ value_expr0(node)
case NODE_MODULE: case NODE_MODULE:
case NODE_DEFN: case NODE_DEFN:
case NODE_DEFS: case NODE_DEFS:
rb_warning("void value expression"); parser_warning(node, "void value expression");
return Qfalse; return Qfalse;
case NODE_RETURN: case NODE_RETURN:
@ -5130,7 +5152,7 @@ assign_in_cond(node)
case NODE_TRUE: case NODE_TRUE:
case NODE_FALSE: case NODE_FALSE:
/* reports always */ /* reports always */
rb_warn("found = in conditional, should be =="); parser_warn(node->nd_value, "found = in conditional, should be ==");
return 1; return 1;
case NODE_DSTR: case NODE_DSTR:
@ -5143,7 +5165,7 @@ assign_in_cond(node)
} }
#if 0 #if 0
if (assign_in_cond(node->nd_value) == 0) { if (assign_in_cond(node->nd_value) == 0) {
rb_warning("assignment in condition"); parser_warning(node->nd_value, "assignment in condition");
} }
#endif #endif
return 1; return 1;
@ -5158,17 +5180,19 @@ e_option_supplied()
} }
static void static void
warn_unless_e_option(str) warn_unless_e_option(node, str)
NODE *node;
const char *str; const char *str;
{ {
if (!e_option_supplied()) rb_warn(str); if (!e_option_supplied()) parser_warn(node, str);
} }
static void static void
warning_unless_e_option(str) warning_unless_e_option(node, str)
NODE *node;
const char *str; const char *str;
{ {
if (!e_option_supplied()) rb_warning(str); if (!e_option_supplied()) parser_warning(node, str);
} }
static NODE *cond0(); static NODE *cond0();
@ -5190,7 +5214,7 @@ range_op(node)
type = nd_type(node); type = nd_type(node);
} }
if (type == NODE_LIT && FIXNUM_P(node->nd_lit)) { if (type == NODE_LIT && FIXNUM_P(node->nd_lit)) {
warn_unless_e_option("integer literal in conditional range"); warn_unless_e_option(node, "integer literal in conditional range");
return call_op(node,tEQ,1,NEW_GVAR(rb_intern("$."))); return call_op(node,tEQ,1,NEW_GVAR(rb_intern("$.")));
} }
return node; return node;
@ -5235,7 +5259,7 @@ cond0(node)
case NODE_DREGX: case NODE_DREGX:
case NODE_DREGX_ONCE: case NODE_DREGX_ONCE:
warning_unless_e_option("regex literal in condition"); warning_unless_e_option(node, "regex literal in condition");
local_cnt('_'); local_cnt('_');
local_cnt('~'); local_cnt('~');
return NEW_MATCH2(node, NEW_GVAR(rb_intern("$_"))); return NEW_MATCH2(node, NEW_GVAR(rb_intern("$_")));
@ -5257,24 +5281,24 @@ cond0(node)
int b = literal_node(node->nd_beg); int b = literal_node(node->nd_beg);
int e = literal_node(node->nd_end); int e = literal_node(node->nd_end);
if ((b == 1 && e == 1) || (b + e >= 2 && RTEST(ruby_verbose))) { if ((b == 1 && e == 1) || (b + e >= 2 && RTEST(ruby_verbose))) {
rb_warn("range literal in condition"); parser_warn(node, "range literal in condition");
} }
} }
break; break;
case NODE_DSYM: case NODE_DSYM:
rb_warning("literal in condition"); parser_warning(node, "literal in condition");
break; break;
case NODE_LIT: case NODE_LIT:
if (TYPE(node->nd_lit) == T_REGEXP) { if (TYPE(node->nd_lit) == T_REGEXP) {
warn_unless_e_option("regex literal in condition"); warn_unless_e_option(node, "regex literal in condition");
nd_set_type(node, NODE_MATCH); nd_set_type(node, NODE_MATCH);
local_cnt('_'); local_cnt('_');
local_cnt('~'); local_cnt('~');
} }
else { else {
rb_warning("literal in condition"); parser_warning(node, "literal in condition");
} }
default: default:
break; break;