summaryrefslogtreecommitdiff
path: root/parse.y
diff options
context:
space:
mode:
authormame <mame@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-01-11 03:23:50 +0000
committermame <mame@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-01-11 03:23:50 +0000
commit5ab288f53b0e68c3bac72cf8c03d826edd5121a6 (patch)
tree36beb0802b156320997ed1f2e514326cd7469cbc /parse.y
parente3d7bc608cb410ae90ec29eac7a7ffd0e11a4f2c (diff)
parse.y (local_push_gen): Rewrite the condition of "unused var" warning
It was unnecessarily too complex, IMO. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61764 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'parse.y')
-rw-r--r--parse.y17
1 files changed, 11 insertions, 6 deletions
diff --git a/parse.y b/parse.y
index ef9f68ae34..fbb4d97a5e 100644
--- a/parse.y
+++ b/parse.y
@@ -1094,7 +1094,7 @@ static void token_info_pop_gen(struct parser_params*, const char *token, size_t
program : {
SET_LEX_STATE(EXPR_BEG);
/*%%%*/
- local_push(compile_for_eval || in_main);
+ local_push(1);
/*%
local_push(0);
%*/
@@ -10641,17 +10641,22 @@ warn_unused_var(struct parser_params *parser, struct local_vars *local)
}
static void
-local_push_gen(struct parser_params *parser, int inherit_dvars)
+local_push_gen(struct parser_params *parser, int toplevel_scope)
{
struct local_vars *local;
+ int inherits_dvars = toplevel_scope && (compile_for_eval || in_main /* is in_main really needed? */);
+ int warn_unused_vars = RTEST(ruby_verbose);
local = ALLOC(struct local_vars);
local->prev = lvtbl;
local->args = vtable_alloc(0);
- local->vars = vtable_alloc(inherit_dvars ? DVARS_INHERIT : DVARS_TOPSCOPE);
- local->used = !(inherit_dvars &&
- (ifndef_ripper(compile_for_eval || e_option_supplied(parser))+0)) &&
- RTEST(ruby_verbose) ? vtable_alloc(0) : 0;
+ local->vars = vtable_alloc(inherits_dvars ? DVARS_INHERIT : DVARS_TOPSCOPE);
+#ifndef RIPPER
+ if (toplevel_scope && compile_for_eval) warn_unused_vars = 0;
+ if (toplevel_scope && e_option_supplied(parser)) warn_unused_vars = 0;
+#endif
+ local->used = warn_unused_vars ? vtable_alloc(0) : 0;
+
# if WARN_PAST_SCOPE
local->past = 0;
# endif