summaryrefslogtreecommitdiff
path: root/parse.y
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2022-01-06 23:08:56 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2022-01-07 09:23:38 +0900
commit83b987054a801405673266ba47c6f38e33efee0e (patch)
tree33212dd2369b57d6a1c243d07a2baad7c8375bc7 /parse.y
parentae0d67d762a0849cc629a004c2ae9182292b19bd (diff)
Explicitly pass $/ when loop mode
Get rid of depending on using $/ internally in ARGF.gets.
Notes
Notes: Merged: https://github.com/ruby/ruby/pull/5403
Diffstat (limited to 'parse.y')
-rw-r--r--parse.y4
1 files changed, 3 insertions, 1 deletions
diff --git a/parse.y b/parse.y
index 794c818e34..0c30111f9e 100644
--- a/parse.y
+++ b/parse.y
@@ -13114,6 +13114,8 @@ parser_append_options(struct parser_params *p, NODE *node)
}
if (p->do_loop) {
+ NODE *irs = NEW_LIST(NEW_GVAR(rb_intern("$/"), LOC), LOC);
+
if (p->do_split) {
ID ifs = rb_intern("$;");
ID fields = rb_intern("$F");
@@ -13130,7 +13132,7 @@ parser_append_options(struct parser_params *p, NODE *node)
node = block_append(p, chomp, node);
}
- node = NEW_WHILE(NEW_VCALL(idGets, LOC), node, 1, LOC);
+ node = NEW_WHILE(NEW_FCALL(idGets, irs, LOC), node, 1, LOC);
}
return node;