mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
Switch rb_category_warn{,ing} to accept an rb_warning_category_t
Since we decided to only allowing specific warning categories, there is no reason to have an API that accepts a general string, as it is more error-prone. Switch to only allowing the specific warning categories. As rb_category_warn{,ing} are public API, this requires making rb_warning_category_t public API as well.
This commit is contained in:
parent
7b06085c7b
commit
52fb696ee7
Notes:
git
2020-12-19 02:54:39 +09:00
3 changed files with 21 additions and 13 deletions
16
error.c
16
error.c
|
@ -77,6 +77,7 @@ static ID id_deprecated;
|
||||||
static ID id_experimental;
|
static ID id_experimental;
|
||||||
static VALUE sym_category;
|
static VALUE sym_category;
|
||||||
static VALUE warning_categories;
|
static VALUE warning_categories;
|
||||||
|
static VALUE warning_category_t_map;
|
||||||
|
|
||||||
extern const char ruby_description[];
|
extern const char ruby_description[];
|
||||||
|
|
||||||
|
@ -403,11 +404,11 @@ rb_warn(const char *fmt, ...)
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
rb_category_warn(const char *category, const char *fmt, ...)
|
rb_category_warn(rb_warning_category_t category, const char *fmt, ...)
|
||||||
{
|
{
|
||||||
if (!NIL_P(ruby_verbose)) {
|
if (!NIL_P(ruby_verbose)) {
|
||||||
with_warning_string(mesg, 0, fmt) {
|
with_warning_string(mesg, 0, fmt) {
|
||||||
rb_warn_category(mesg, ID2SYM(rb_intern(category)));
|
rb_warn_category(mesg, rb_hash_fetch(warning_category_t_map, INT2NUM(category)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -435,11 +436,11 @@ rb_warning(const char *fmt, ...)
|
||||||
|
|
||||||
/* rb_category_warning() reports only in verbose mode */
|
/* rb_category_warning() reports only in verbose mode */
|
||||||
void
|
void
|
||||||
rb_category_warning(const char *category, const char *fmt, ...)
|
rb_category_warning(rb_warning_category_t category, const char *fmt, ...)
|
||||||
{
|
{
|
||||||
if (RTEST(ruby_verbose)) {
|
if (RTEST(ruby_verbose)) {
|
||||||
with_warning_string(mesg, 0, fmt) {
|
with_warning_string(mesg, 0, fmt) {
|
||||||
rb_warn_category(mesg, ID2SYM(rb_intern(category)));
|
rb_warn_category(mesg, rb_hash_fetch(warning_category_t_map, INT2NUM(category)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2839,6 +2840,13 @@ Init_Exception(void)
|
||||||
rb_gc_register_mark_object(warning_categories);
|
rb_gc_register_mark_object(warning_categories);
|
||||||
rb_hash_aset(warning_categories, ID2SYM(rb_intern_const("deprecated")), Qtrue);
|
rb_hash_aset(warning_categories, ID2SYM(rb_intern_const("deprecated")), Qtrue);
|
||||||
rb_obj_freeze(warning_categories);
|
rb_obj_freeze(warning_categories);
|
||||||
|
|
||||||
|
warning_category_t_map = rb_hash_new();
|
||||||
|
rb_gc_register_mark_object(warning_category_t_map);
|
||||||
|
rb_hash_aset(warning_category_t_map, INT2NUM(RB_WARN_CATEGORY_NONE), Qnil);
|
||||||
|
rb_hash_aset(warning_category_t_map, INT2NUM(RB_WARN_CATEGORY_DEPRECATED), ID2SYM(rb_intern_const("deprecated")));
|
||||||
|
rb_hash_aset(warning_category_t_map, INT2NUM(RB_WARN_CATEGORY_EXPERIMENTAL), ID2SYM(rb_intern_const("experimental")));
|
||||||
|
rb_obj_freeze(warning_category_t_map);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
|
@ -29,6 +29,13 @@ RBIMPL_SYMBOL_EXPORT_BEGIN()
|
||||||
VALUE rb_errinfo(void);
|
VALUE rb_errinfo(void);
|
||||||
void rb_set_errinfo(VALUE);
|
void rb_set_errinfo(VALUE);
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
RB_WARN_CATEGORY_NONE,
|
||||||
|
RB_WARN_CATEGORY_DEPRECATED,
|
||||||
|
RB_WARN_CATEGORY_EXPERIMENTAL,
|
||||||
|
RB_WARN_CATEGORY_ALL_BITS = 0x6 /* no RB_WARN_CATEGORY_NONE bit */
|
||||||
|
} rb_warning_category_t;
|
||||||
|
|
||||||
/* for rb_readwrite_sys_fail first argument */
|
/* for rb_readwrite_sys_fail first argument */
|
||||||
enum rb_io_wait_readwrite {RB_IO_WAIT_READABLE, RB_IO_WAIT_WRITABLE};
|
enum rb_io_wait_readwrite {RB_IO_WAIT_READABLE, RB_IO_WAIT_WRITABLE};
|
||||||
#define RB_IO_WAIT_READABLE RB_IO_WAIT_READABLE
|
#define RB_IO_WAIT_READABLE RB_IO_WAIT_READABLE
|
||||||
|
@ -63,12 +70,12 @@ VALUE *rb_ruby_debug_ptr(void);
|
||||||
|
|
||||||
/* reports if `-W' specified */
|
/* reports if `-W' specified */
|
||||||
PRINTF_ARGS(void rb_warning(const char*, ...), 1, 2);
|
PRINTF_ARGS(void rb_warning(const char*, ...), 1, 2);
|
||||||
PRINTF_ARGS(void rb_category_warning(const char*, const char*, ...), 2, 3);
|
PRINTF_ARGS(void rb_category_warning(rb_warning_category_t category, const char*, ...), 2, 3);
|
||||||
PRINTF_ARGS(void rb_compile_warning(const char *, int, const char*, ...), 3, 4);
|
PRINTF_ARGS(void rb_compile_warning(const char *, int, const char*, ...), 3, 4);
|
||||||
PRINTF_ARGS(void rb_sys_warning(const char*, ...), 1, 2);
|
PRINTF_ARGS(void rb_sys_warning(const char*, ...), 1, 2);
|
||||||
/* reports always */
|
/* reports always */
|
||||||
COLDFUNC PRINTF_ARGS(void rb_warn(const char*, ...), 1, 2);
|
COLDFUNC PRINTF_ARGS(void rb_warn(const char*, ...), 1, 2);
|
||||||
COLDFUNC PRINTF_ARGS(void rb_category_warn(const char *, const char*, ...), 2, 3);
|
COLDFUNC PRINTF_ARGS(void rb_category_warn(rb_warning_category_t category, const char*, ...), 2, 3);
|
||||||
PRINTF_ARGS(void rb_compile_warn(const char *, int, const char*, ...), 3, 4);
|
PRINTF_ARGS(void rb_compile_warn(const char *, int, const char*, ...), 3, 4);
|
||||||
|
|
||||||
RBIMPL_SYMBOL_EXPORT_END()
|
RBIMPL_SYMBOL_EXPORT_END()
|
||||||
|
|
|
@ -40,13 +40,6 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* error.c */
|
/* error.c */
|
||||||
typedef enum {
|
|
||||||
RB_WARN_CATEGORY_NONE,
|
|
||||||
RB_WARN_CATEGORY_DEPRECATED,
|
|
||||||
RB_WARN_CATEGORY_EXPERIMENTAL,
|
|
||||||
RB_WARN_CATEGORY_ALL_BITS = 0x6, /* no RB_WARN_CATEGORY_NONE bit */
|
|
||||||
} rb_warning_category_t;
|
|
||||||
|
|
||||||
extern long rb_backtrace_length_limit;
|
extern long rb_backtrace_length_limit;
|
||||||
extern VALUE rb_eEAGAIN;
|
extern VALUE rb_eEAGAIN;
|
||||||
extern VALUE rb_eEWOULDBLOCK;
|
extern VALUE rb_eEWOULDBLOCK;
|
||||||
|
|
Loading…
Reference in a new issue