Feature #12026 » 0001-Support-warning-filters.patch
| error.c | ||
|---|---|---|
|
}
|
||
|
static void
|
||
|
rb_write_warning_str(VALUE str)
|
||
|
{
|
||
|
VALUE filter = rb_gv_get("$WARNING_FILTER");
|
||
|
if (RB_TYPE_P(filter, T_REGEXP) && !NIL_P(rb_reg_match(filter, str)))
|
||
|
return;
|
||
|
rb_write_error_str(str);
|
||
|
}
|
||
|
static void
|
||
|
compile_warn_print(const char *file, int line, const char *fmt, va_list args)
|
||
|
{
|
||
|
VALUE str;
|
||
|
str = compile_snprintf(NULL, "warning: ", file, line, fmt, args);
|
||
|
rb_str_cat2(str, "\n");
|
||
|
rb_write_error_str(str);
|
||
|
rb_write_warning_str(str);
|
||
|
}
|
||
|
void
|
||
| ... | ... | |
|
va_start(args, fmt);
|
||
|
mesg = warning_string(0, fmt, args);
|
||
|
va_end(args);
|
||
|
rb_write_error_str(mesg);
|
||
|
rb_write_warning_str(mesg);
|
||
|
}
|
||
|
void
|
||
| ... | ... | |
|
va_start(args, fmt);
|
||
|
mesg = warning_string(enc, fmt, args);
|
||
|
va_end(args);
|
||
|
rb_write_error_str(mesg);
|
||
|
rb_write_warning_str(mesg);
|
||
|
}
|
||
|
/* rb_warning() reports only in verbose mode */
|
||
| ... | ... | |
|
va_start(args, fmt);
|
||
|
mesg = warning_string(0, fmt, args);
|
||
|
va_end(args);
|
||
|
rb_write_error_str(mesg);
|
||
|
rb_write_warning_str(mesg);
|
||
|
}
|
||
|
#if 0
|
||
| ... | ... | |
|
va_start(args, fmt);
|
||
|
mesg = warning_string(enc, fmt, args);
|
||
|
va_end(args);
|
||
|
rb_write_error_str(mesg);
|
||
|
rb_write_warning_str(mesg);
|
||
|
}
|
||
|
#endif
|
||
| ... | ... | |
|
va_end(args);
|
||
|
rb_str_set_len(mesg, RSTRING_LEN(mesg)-1);
|
||
|
rb_str_catf(mesg, ": %s\n", strerror(errno_save));
|
||
|
rb_write_error_str(mesg);
|
||
|
rb_write_warning_str(mesg);
|
||
|
errno = errno_save;
|
||
|
}
|
||
| ... | ... | |
|
va_end(args);
|
||
|
rb_str_set_len(mesg, RSTRING_LEN(mesg)-1);
|
||
|
rb_str_catf(mesg, ": %s\n", strerror(errno_save));
|
||
|
rb_write_error_str(mesg);
|
||
|
rb_write_warning_str(mesg);
|
||
|
errno = errno_save;
|
||
|
}
|
||
| ... | ... | |
|
Init_syserr(void)
|
||
|
{
|
||
|
rb_eNOERROR = set_syserr(0, "NOERROR");
|
||
|
rb_gv_set("$WARNING_FILTER", Qnil);
|
||
|
#define defined_error(name, num) set_syserr((num), (name));
|
||
|
#define undefined_error(name) set_syserr(0, (name));
|
||
|
#include "known_errors.inc"
|
||
| test/ruby/test_module.rb | ||
|---|---|---|
|
end
|
||
|
end
|
||
|
def test_uninitialized_instance_variable_warning_filter
|
||
|
a = AttrTest.new
|
||
|
$WARNING_FILTER = /instance variable @ivar not initialized/
|
||
|
assert_warning '' do
|
||
|
assert_nil(a.ivar)
|
||
|
end
|
||
|
ensure
|
||
|
$WARNING_FILTER = nil
|
||
|
end
|
||
|
def test_uninitialized_attr
|
||
|
a = AttrTest.new
|
||
|
assert_warning '' do
|
||