summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2025-11-05 12:07:53 +0900
committergit <svn-admin@ruby-lang.org>2025-11-05 05:13:20 +0000
commitf8e9bccd03f3e62e2f25cc08d5d5c6861347a0fe (patch)
tree70f91002c60dfa02d99e8e59229fdd21751798a0
parentc85ef2ca9c5c96f3a02bc8b1a20c0f570737994b (diff)
[ruby/strscan] Deprecate undocumented toplevel constant `ScanError`
https://github.com/ruby/strscan/commit/b4ddc3a2a6
-rw-r--r--ext/strscan/extconf.rb1
-rw-r--r--ext/strscan/strscan.c11
-rw-r--r--test/strscan/test_stringscanner.rb2
3 files changed, 12 insertions, 2 deletions
diff --git a/ext/strscan/extconf.rb b/ext/strscan/extconf.rb
index 3c311d2364..d2e9343cbc 100644
--- a/ext/strscan/extconf.rb
+++ b/ext/strscan/extconf.rb
@@ -4,6 +4,7 @@ if RUBY_ENGINE == 'ruby'
$INCFLAGS << " -I$(top_srcdir)" if $extmk
have_func("onig_region_memsize(NULL)")
have_func("rb_reg_onig_match", "ruby/re.h")
+ have_func("rb_deprecate_constant")
create_makefile 'strscan'
else
File.write('Makefile', dummy_makefile("").join)
diff --git a/ext/strscan/strscan.c b/ext/strscan/strscan.c
index da7b51ec32..4746afd517 100644
--- a/ext/strscan/strscan.c
+++ b/ext/strscan/strscan.c
@@ -24,6 +24,14 @@ extern size_t onig_region_memsize(const struct re_registers *regs);
#define STRSCAN_VERSION "3.1.6.dev"
+
+#ifdef HAVE_RB_DEPRECATE_CONSTANT
+/* In ruby 3.0, defined but exposed in external headers */
+extern void rb_deprecate_constant(VALUE mod, const char *name);
+#else
+# define rb_deprecate_constant(mod, name) ((void)0)
+#endif
+
/* =======================================================================
Data Type Definitions
======================================================================= */
@@ -1604,7 +1612,7 @@ name_to_backref_number(struct re_registers *regs, VALUE regexp, const char* name
(const unsigned char* )name_end,
regs);
if (num >= 1) {
- return num;
+ return num;
}
}
rb_enc_raise(enc, rb_eIndexError, "undefined group name reference: %.*s",
@@ -2210,6 +2218,7 @@ Init_strscan(void)
ScanError = rb_define_class_under(StringScanner, "Error", rb_eStandardError);
if (!rb_const_defined(rb_cObject, id_scanerr)) {
rb_const_set(rb_cObject, id_scanerr, ScanError);
+ rb_deprecate_constant(rb_cObject, "ScanError");
}
tmp = rb_str_new2(STRSCAN_VERSION);
rb_obj_freeze(tmp);
diff --git a/test/strscan/test_stringscanner.rb b/test/strscan/test_stringscanner.rb
index 085a911313..8218e5b6be 100644
--- a/test/strscan/test_stringscanner.rb
+++ b/test/strscan/test_stringscanner.rb
@@ -875,7 +875,7 @@ module StringScannerTests
assert_equal({}, s.named_captures)
assert_equal("te", s.scan(/../))
assert_equal(nil, s.scan(/\d/))
- assert_raise(ScanError) { s.unscan }
+ assert_raise(StringScanner::Error) { s.unscan }
end
def test_rest