1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

Revert "* parse.y (warn_unused_var): warn unused variables."

This reverts commit r28339 and r28340
because they prevents test-all on boron.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28342 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
naruse 2010-06-17 01:04:09 +00:00
parent 4ac263ce68
commit 86d72ac7cf
3 changed files with 6 additions and 69 deletions

View file

@ -1,12 +1,3 @@
Wed Jun 16 18:34:54 2010 NAKAMURA Usaku <usa@ruby-lang.org>
* parse.y: ripper needs warn_unused_var(), too.
Wed Jun 16 18:20:00 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
* parse.y (warn_unused_var): warn unused variables.
[ruby-dev:41620]
Wed Jun 16 15:40:53 2010 NAKAMURA Usaku <usa@ruby-lang.org> Wed Jun 16 15:40:53 2010 NAKAMURA Usaku <usa@ruby-lang.org>
* error.c (rb_bug): existance of _set_abort_behavior() depends on * error.c (rb_bug): existance of _set_abort_behavior() depends on

60
parse.y
View file

@ -99,7 +99,6 @@ struct vtable {
struct local_vars { struct local_vars {
struct vtable *args; struct vtable *args;
struct vtable *vars; struct vtable *vars;
struct vtable *used;
struct local_vars *prev; struct local_vars *prev;
}; };
@ -168,7 +167,7 @@ vtable_included(const struct vtable * tbl, ID id)
if (POINTER_P(tbl)) { if (POINTER_P(tbl)) {
for (i = 0; i < tbl->pos; i++) { for (i = 0; i < tbl->pos; i++) {
if (tbl->tbl[i] == id) { if (tbl->tbl[i] == id) {
return i+1; return 1;
} }
} }
} }
@ -8919,27 +8918,6 @@ new_args_gen(struct parser_params *parser, NODE *m, NODE *o, ID r, NODE *p, ID b
} }
#endif /* !RIPPER */ #endif /* !RIPPER */
#define LVAR_USED (1UL << (sizeof(ID) * CHAR_BIT - 1))
static void
warn_unused_var(struct parser_params *parser, struct local_vars *local)
{
int i, cnt;
ID *v, *u;
if (!local->used) return;
v = local->vars->tbl;
u = local->used->tbl;
cnt = local->used->pos;
if (cnt != local->vars->pos) {
rb_bug("local->used->pos != local->vars->pos");
}
for (i = 0; i < cnt; ++i) {
if (!v[i] || (u[i] & LVAR_USED)) continue;
rb_compile_warn(ruby_sourcefile, (int)u[i], "assigned but unused variable %s", rb_id2name(v[i]));
}
}
static void static void
local_push_gen(struct parser_params *parser, int inherit_dvars) local_push_gen(struct parser_params *parser, int inherit_dvars)
{ {
@ -8949,7 +8927,6 @@ local_push_gen(struct parser_params *parser, int inherit_dvars)
local->prev = lvtbl; local->prev = lvtbl;
local->args = vtable_alloc(0); local->args = vtable_alloc(0);
local->vars = vtable_alloc(inherit_dvars ? DVARS_INHERIT : DVARS_TOPSCOPE); local->vars = vtable_alloc(inherit_dvars ? DVARS_INHERIT : DVARS_TOPSCOPE);
local->used = RTEST(ruby_verbose) ? vtable_alloc(0) : 0;
lvtbl = local; lvtbl = local;
} }
@ -8957,10 +8934,6 @@ static void
local_pop_gen(struct parser_params *parser) local_pop_gen(struct parser_params *parser)
{ {
struct local_vars *local = lvtbl->prev; struct local_vars *local = lvtbl->prev;
if (lvtbl->used) {
warn_unused_var(parser, lvtbl);
vtable_free(lvtbl->used);
}
vtable_free(lvtbl->args); vtable_free(lvtbl->args);
vtable_free(lvtbl->vars); vtable_free(lvtbl->vars);
xfree(lvtbl); xfree(lvtbl);
@ -9009,37 +8982,28 @@ static int
local_var_gen(struct parser_params *parser, ID id) local_var_gen(struct parser_params *parser, ID id)
{ {
vtable_add(lvtbl->vars, id); vtable_add(lvtbl->vars, id);
if (lvtbl->used) {
vtable_add(lvtbl->used, (ID)ruby_sourceline);
}
return vtable_size(lvtbl->vars) - 1; return vtable_size(lvtbl->vars) - 1;
} }
static int static int
local_id_gen(struct parser_params *parser, ID id) local_id_gen(struct parser_params *parser, ID id)
{ {
struct vtable *vars, *args, *used; struct vtable *vars, *args;
vars = lvtbl->vars; vars = lvtbl->vars;
args = lvtbl->args; args = lvtbl->args;
used = lvtbl->used;
while (vars && POINTER_P(vars->prev)) { while (vars && POINTER_P(vars->prev)) {
vars = vars->prev; vars = vars->prev;
args = args->prev; args = args->prev;
if (used) used = used->prev;
} }
if (vars && vars->prev == DVARS_INHERIT) { if (vars && vars->prev == DVARS_INHERIT) {
return rb_local_defined(id); return rb_local_defined(id);
} }
else if (vtable_included(args, id)) {
return 1;
}
else { else {
int i = vtable_included(vars, id); return (vtable_included(args, id) ||
if (i && used) used->tbl[i-1] |= LVAR_USED; vtable_included(vars, id));
return i != 0;
} }
} }
@ -9048,9 +9012,6 @@ dyna_push_gen(struct parser_params *parser)
{ {
lvtbl->args = vtable_alloc(lvtbl->args); lvtbl->args = vtable_alloc(lvtbl->args);
lvtbl->vars = vtable_alloc(lvtbl->vars); lvtbl->vars = vtable_alloc(lvtbl->vars);
if (lvtbl->used) {
lvtbl->used = vtable_alloc(lvtbl->used);
}
return lvtbl->args; return lvtbl->args;
} }
@ -9059,11 +9020,6 @@ dyna_pop_1(struct parser_params *parser)
{ {
struct vtable *tmp; struct vtable *tmp;
if ((tmp = lvtbl->used) != 0) {
warn_unused_var(parser, lvtbl);
lvtbl->used = lvtbl->used->prev;
vtable_free(tmp);
}
tmp = lvtbl->args; tmp = lvtbl->args;
lvtbl->args = lvtbl->args->prev; lvtbl->args = lvtbl->args->prev;
vtable_free(tmp); vtable_free(tmp);
@ -9095,24 +9051,20 @@ dyna_in_block_gen(struct parser_params *parser)
static int static int
dvar_defined_gen(struct parser_params *parser, ID id) dvar_defined_gen(struct parser_params *parser, ID id)
{ {
struct vtable *vars, *args, *used; struct vtable *vars, *args;
int i;
args = lvtbl->args; args = lvtbl->args;
vars = lvtbl->vars; vars = lvtbl->vars;
used = lvtbl->used;
while (POINTER_P(vars)) { while (POINTER_P(vars)) {
if (vtable_included(args, id)) { if (vtable_included(args, id)) {
return 1; return 1;
} }
if ((i = vtable_included(vars, id)) != 0) { if (vtable_included(vars, id)) {
if (used) used->tbl[i-1] |= LVAR_USED;
return 1; return 1;
} }
args = args->prev; args = args->prev;
vars = vars->prev; vars = vars->prev;
if (used) used = used->prev;
} }
if (vars == DVARS_INHERIT) { if (vars == DVARS_INHERIT) {

View file

@ -415,10 +415,4 @@ class TestRubyOptions < Test::Unit::TestCase
ensure ensure
t.close(true) if t t.close(true) if t
end end
def test_unused_variable
feature3446 = '[ruby-dev:41620]'
assert_in_out_err(["-we", "a=1"], "", [], ["-e:1: warning: assigned but unused variable a"], feature3446)
assert_in_out_err(["-we", "1.times do\n a=1\nend"], "", [], ["-e:2: warning: assigned but unused variable a"], feature3446)
end
end end