diff options
author | Satoshi Tagomori <tagomoris@gmail.com> | 2023-12-15 10:38:33 +0900 |
---|---|---|
committer | Yusuke Endoh <mame@ruby-lang.org> | 2023-12-15 11:09:31 +0900 |
commit | b98bd10f255d0afe33ba3c4410dd2c05c61695fb (patch) | |
tree | dcaa66625c4c518f038c2dbd1daf70753919d321 | |
parent | cfd91121ad71655ef9cea48450a0027a00a46f8f (diff) | |
download | ruby-b98bd10f255d0afe33ba3c4410dd2c05c61695fb.tar.gz |
stop warnings from running the test case requiring .so twice
-rw-r--r-- | ext/-test-/load/resolve_symbol_resolver/resolve_symbol_resolver.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/ext/-test-/load/resolve_symbol_resolver/resolve_symbol_resolver.c b/ext/-test-/load/resolve_symbol_resolver/resolve_symbol_resolver.c index a996e2e26e..a856319cfb 100644 --- a/ext/-test-/load/resolve_symbol_resolver/resolve_symbol_resolver.c +++ b/ext/-test-/load/resolve_symbol_resolver/resolve_symbol_resolver.c @@ -38,13 +38,18 @@ rsr_try_resolve_sname(VALUE klass) void Init_resolve_symbol_resolver(void) { - VALUE mod = rb_define_module("ResolveSymbolResolver"); - rb_define_singleton_method(mod, "any_method", rsr_any_method, 0); - rb_define_singleton_method(mod, "try_resolve_fname", rsr_try_resolve_fname, 0); - rb_define_singleton_method(mod, "try_resolve_sname", rsr_try_resolve_sname, 0); - + /* + * Resolving symbols at the head of Init_ because it raises LoadError (in cases). + * If the module and methods are defined before raising LoadError, retrying `require "this.so"` will + * cause re-defining those methods (and will be warned). + */ rst_any_method = (target_func)rb_ext_resolve_symbol("-test-/load/resolve_symbol_target", "rst_any_method"); if (rst_any_method == NULL) { rb_raise(rb_eLoadError, "resolve_symbol_target is not loaded"); } + + VALUE mod = rb_define_module("ResolveSymbolResolver"); + rb_define_singleton_method(mod, "any_method", rsr_any_method, 0); + rb_define_singleton_method(mod, "try_resolve_fname", rsr_try_resolve_fname, 0); + rb_define_singleton_method(mod, "try_resolve_sname", rsr_try_resolve_sname, 0); } |