summaryrefslogtreecommitdiff
path: root/ext/-test-/load
diff options
context:
space:
mode:
authorSatoshi Tagomori <tagomoris@gmail.com>2023-12-15 10:38:33 +0900
committerYusuke Endoh <mame@ruby-lang.org>2023-12-15 11:09:31 +0900
commitb98bd10f255d0afe33ba3c4410dd2c05c61695fb (patch)
treedcaa66625c4c518f038c2dbd1daf70753919d321 /ext/-test-/load
parentcfd91121ad71655ef9cea48450a0027a00a46f8f (diff)
stop warnings from running the test case requiring .so twice
Diffstat (limited to 'ext/-test-/load')
-rw-r--r--ext/-test-/load/resolve_symbol_resolver/resolve_symbol_resolver.c15
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);
}