aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKevin Newton <kddnewton@gmail.com>2024-07-19 09:06:48 -0400
committerKevin Newton <kddnewton@gmail.com>2024-07-19 10:17:50 -0400
commit49cf042cd297cc6097065fb4d98879755ed0cec0 (patch)
tree085dfba5a8354fb97a95a6839e76eb660c83e65a
parent1e4c4fe478fccdc00565c609f6128172728d0f04 (diff)
downloadruby-49cf042cd297cc6097065fb4d98879755ed0cec0.tar.gz
[PRISM] Define DATA constant when parsing stdin and __END__
-rw-r--r--ruby.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/ruby.c b/ruby.c
index 36c46ff1f5..cdbc038b5c 100644
--- a/ruby.c
+++ b/ruby.c
@@ -2134,6 +2134,13 @@ prism_script(ruby_cmdline_options_t *opt, pm_parse_result_t *result)
ruby_opt_init(opt);
error = pm_parse_stdin(result);
+
+ // If we found an __END__ marker, then we're going to define a global
+ // DATA constant that is a file object that can be read to read the
+ // contents after the marker.
+ if (NIL_P(error) && result->parser.data_loc.start != NULL) {
+ rb_define_global_const("DATA", rb_stdin);
+ }
}
else if (opt->e_script) {
command_line |= PM_OPTIONS_COMMAND_LINE_E;