[Feature #20884] Define toplevel "Ruby" module with constants
This commit is contained in:
parent
7f738bb5d7
commit
e5e4db1748
Notes:
git
2024-12-25 10:12:53 +00:00
@ -1328,17 +1328,6 @@ class TestRubyOptions < Test::Unit::TestCase
|
|||||||
end
|
end
|
||||||
|
|
||||||
def test_toplevel_ruby
|
def test_toplevel_ruby
|
||||||
reserved = ["", [], /::Ruby is reserved/]
|
assert_instance_of Module, ::Ruby
|
||||||
env = {"RUBYOPT"=>""}
|
|
||||||
args = %w[-e Ruby=1]
|
|
||||||
assert_in_out_err([env, *args])
|
|
||||||
assert_in_out_err([env, "-w", *args], *reserved)
|
|
||||||
assert_in_out_err([env, "-W:deprecated", *args], *reserved)
|
|
||||||
assert_in_out_err([env, "-w", "-W:no-deprecated", *args])
|
|
||||||
|
|
||||||
args = ["-e", "class A; Ruby=1; end"]
|
|
||||||
assert_in_out_err([env, *args])
|
|
||||||
assert_in_out_err([env, "-w", *args])
|
|
||||||
assert_in_out_err([env, "-W:deprecated", *args])
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -3626,9 +3626,6 @@ const_set(VALUE klass, ID id, VALUE val)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (klass == rb_cObject && id == idRuby) {
|
|
||||||
rb_warn_reserved_name_at(3.5, "::Ruby");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
22
version.c
22
version.c
@ -87,10 +87,29 @@ const char ruby_engine[] = "ruby";
|
|||||||
// Might change after initialization
|
// Might change after initialization
|
||||||
const char *rb_dynamic_description = ruby_description;
|
const char *rb_dynamic_description = ruby_description;
|
||||||
|
|
||||||
|
static inline void
|
||||||
|
define_ruby_const(const char *name, VALUE value, VALUE mRuby)
|
||||||
|
{
|
||||||
|
rb_define_global_const(name, value);
|
||||||
|
if (strncmp(name, "RUBY_", rb_strlen_lit("RUBY_")) == 0) {
|
||||||
|
rb_define_const(mRuby, name + rb_strlen_lit("RUBY_"), value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* RDoc needs rb_define_global_const */
|
||||||
|
#define rb_define_global_const(name, value) \
|
||||||
|
define_ruby_const(name, value, mRuby)
|
||||||
|
|
||||||
/*! Defines platform-depended Ruby-level constants */
|
/*! Defines platform-depended Ruby-level constants */
|
||||||
void
|
void
|
||||||
Init_version(void)
|
Init_version(void)
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
|
* The Ruby module that contains portable information among
|
||||||
|
* implementations.
|
||||||
|
*/
|
||||||
|
VALUE mRuby = rb_define_module("Ruby");
|
||||||
|
|
||||||
enum {ruby_patchlevel = RUBY_PATCHLEVEL};
|
enum {ruby_patchlevel = RUBY_PATCHLEVEL};
|
||||||
VALUE version = MKSTR(version);
|
VALUE version = MKSTR(version);
|
||||||
VALUE ruby_engine_name = MKSTR(engine);
|
VALUE ruby_engine_name = MKSTR(engine);
|
||||||
@ -201,6 +220,7 @@ define_ruby_description(const char *const jit_opt)
|
|||||||
append(ruby_description + ruby_description_opt_point);
|
append(ruby_description + ruby_description_opt_point);
|
||||||
# undef append
|
# undef append
|
||||||
|
|
||||||
|
VALUE mRuby = rb_path2class("Ruby");
|
||||||
VALUE description = rb_obj_freeze(rb_usascii_str_new_static(desc, n));
|
VALUE description = rb_obj_freeze(rb_usascii_str_new_static(desc, n));
|
||||||
rb_dynamic_description = desc;
|
rb_dynamic_description = desc;
|
||||||
|
|
||||||
@ -223,7 +243,9 @@ Init_ruby_description(ruby_cmdline_options_t *opt)
|
|||||||
void
|
void
|
||||||
ruby_set_yjit_description(void)
|
ruby_set_yjit_description(void)
|
||||||
{
|
{
|
||||||
|
VALUE mRuby = rb_path2class("Ruby");
|
||||||
rb_const_remove(rb_cObject, rb_intern("RUBY_DESCRIPTION"));
|
rb_const_remove(rb_cObject, rb_intern("RUBY_DESCRIPTION"));
|
||||||
|
rb_const_remove(mRuby, rb_intern("DESCRIPTION"));
|
||||||
define_ruby_description(YJIT_DESCRIPTION);
|
define_ruby_description(YJIT_DESCRIPTION);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user