From 49cf042cd297cc6097065fb4d98879755ed0cec0 Mon Sep 17 00:00:00 2001 From: Kevin Newton Date: Fri, 19 Jul 2024 09:06:48 -0400 Subject: [PATCH] [PRISM] Define DATA constant when parsing stdin and __END__ --- ruby.c | 7 +++++++ 1 file changed, 7 insertions(+) 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;