[PRISM] Use correct warning encoding
This commit is contained in:
parent
5bb656e4f0
commit
ba062a6231
31
error.c
31
error.c
@ -386,18 +386,28 @@ warn_vsprintf(rb_encoding *enc, const char *file, int line, const char *fmt, va_
|
|||||||
return rb_str_cat2(str, "\n");
|
return rb_str_cat2(str, "\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
#define with_warn_vsprintf(file, line, fmt) \
|
#define with_warn_vsprintf(enc, file, line, fmt) \
|
||||||
VALUE str; \
|
VALUE str; \
|
||||||
va_list args; \
|
va_list args; \
|
||||||
va_start(args, fmt); \
|
va_start(args, fmt); \
|
||||||
str = warn_vsprintf(NULL, file, line, fmt, args); \
|
str = warn_vsprintf(enc, file, line, fmt, args); \
|
||||||
va_end(args);
|
va_end(args);
|
||||||
|
|
||||||
void
|
void
|
||||||
rb_compile_warn(const char *file, int line, const char *fmt, ...)
|
rb_compile_warn(const char *file, int line, const char *fmt, ...)
|
||||||
{
|
{
|
||||||
if (!NIL_P(ruby_verbose)) {
|
if (!NIL_P(ruby_verbose)) {
|
||||||
with_warn_vsprintf(file, line, fmt) {
|
with_warn_vsprintf(NULL, file, line, fmt) {
|
||||||
|
rb_write_warning_str(str);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
rb_enc_compile_warn(rb_encoding *enc, const char *file, int line, const char *fmt, ...)
|
||||||
|
{
|
||||||
|
if (!NIL_P(ruby_verbose)) {
|
||||||
|
with_warn_vsprintf(enc, file, line, fmt) {
|
||||||
rb_write_warning_str(str);
|
rb_write_warning_str(str);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -408,7 +418,18 @@ void
|
|||||||
rb_compile_warning(const char *file, int line, const char *fmt, ...)
|
rb_compile_warning(const char *file, int line, const char *fmt, ...)
|
||||||
{
|
{
|
||||||
if (RTEST(ruby_verbose)) {
|
if (RTEST(ruby_verbose)) {
|
||||||
with_warn_vsprintf(file, line, fmt) {
|
with_warn_vsprintf(NULL, file, line, fmt) {
|
||||||
|
rb_write_warning_str(str);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* rb_enc_compile_warning() reports only in verbose mode */
|
||||||
|
void
|
||||||
|
rb_enc_compile_warning(rb_encoding *enc, const char *file, int line, const char *fmt, ...)
|
||||||
|
{
|
||||||
|
if (RTEST(ruby_verbose)) {
|
||||||
|
with_warn_vsprintf(enc, file, line, fmt) {
|
||||||
rb_write_warning_str(str);
|
rb_write_warning_str(str);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -418,7 +439,7 @@ void
|
|||||||
rb_category_compile_warn(rb_warning_category_t category, const char *file, int line, const char *fmt, ...)
|
rb_category_compile_warn(rb_warning_category_t category, const char *file, int line, const char *fmt, ...)
|
||||||
{
|
{
|
||||||
if (!NIL_P(ruby_verbose)) {
|
if (!NIL_P(ruby_verbose)) {
|
||||||
with_warn_vsprintf(file, line, fmt) {
|
with_warn_vsprintf(NULL, file, line, fmt) {
|
||||||
rb_warn_category(str, rb_warning_category_to_name(category));
|
rb_warn_category(str, rb_warning_category_to_name(category));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -9280,6 +9280,9 @@ pm_parse_process_error(const pm_parse_result_t *result)
|
|||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void rb_enc_compile_warning(rb_encoding *enc, const char *file, int line, const char *fmt, ...);
|
||||||
|
void rb_enc_compile_warn(rb_encoding *enc, const char *file, int line, const char *fmt, ...);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Parse the parse result and raise a Ruby error if there are any syntax errors.
|
* Parse the parse result and raise a Ruby error if there are any syntax errors.
|
||||||
* It returns an error if one should be raised. It is assumed that the parse
|
* It returns an error if one should be raised. It is assumed that the parse
|
||||||
@ -9298,6 +9301,9 @@ pm_parse_process(pm_parse_result_t *result, pm_node_t *node)
|
|||||||
pm_scope_node_init(node, scope_node, NULL);
|
pm_scope_node_init(node, scope_node, NULL);
|
||||||
scope_node->filepath_encoding = filepath_encoding;
|
scope_node->filepath_encoding = filepath_encoding;
|
||||||
|
|
||||||
|
scope_node->encoding = rb_enc_find(parser->encoding->name);
|
||||||
|
if (!scope_node->encoding) rb_bug("Encoding not found %s!", parser->encoding->name);
|
||||||
|
|
||||||
// Emit all of the various warnings from the parse.
|
// Emit all of the various warnings from the parse.
|
||||||
const pm_diagnostic_t *warning;
|
const pm_diagnostic_t *warning;
|
||||||
const char *warning_filepath = (const char *) pm_string_source(&parser->filepath);
|
const char *warning_filepath = (const char *) pm_string_source(&parser->filepath);
|
||||||
@ -9306,10 +9312,10 @@ pm_parse_process(pm_parse_result_t *result, pm_node_t *node)
|
|||||||
int line = pm_location_line_number(parser, &warning->location);
|
int line = pm_location_line_number(parser, &warning->location);
|
||||||
|
|
||||||
if (warning->level == PM_WARNING_LEVEL_VERBOSE) {
|
if (warning->level == PM_WARNING_LEVEL_VERBOSE) {
|
||||||
rb_compile_warning(warning_filepath, line, "%s", warning->message);
|
rb_enc_compile_warning(scope_node->encoding, warning_filepath, line, "%s", warning->message);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
rb_compile_warn(warning_filepath, line, "%s", warning->message);
|
rb_enc_compile_warn(scope_node->encoding, warning_filepath, line, "%s", warning->message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -9324,9 +9330,6 @@ pm_parse_process(pm_parse_result_t *result, pm_node_t *node)
|
|||||||
|
|
||||||
// Now set up the constant pool and intern all of the various constants into
|
// Now set up the constant pool and intern all of the various constants into
|
||||||
// their corresponding IDs.
|
// their corresponding IDs.
|
||||||
scope_node->encoding = rb_enc_find(parser->encoding->name);
|
|
||||||
if (!scope_node->encoding) rb_bug("Encoding not found %s!", parser->encoding->name);
|
|
||||||
|
|
||||||
scope_node->parser = parser;
|
scope_node->parser = parser;
|
||||||
scope_node->constants = calloc(parser->constant_pool.size, sizeof(ID));
|
scope_node->constants = calloc(parser->constant_pool.size, sizeof(ID));
|
||||||
|
|
||||||
|
@ -8,5 +8,4 @@ exclude(:test_string, "unknown")
|
|||||||
exclude(:test_truncated_source_line, "unknown")
|
exclude(:test_truncated_source_line, "unknown")
|
||||||
exclude(:test_unexpected_eof, "unknown")
|
exclude(:test_unexpected_eof, "unknown")
|
||||||
exclude(:test_unexpected_token_after_numeric, "unknown")
|
exclude(:test_unexpected_token_after_numeric, "unknown")
|
||||||
exclude(:test_unused_variable, "missing warning")
|
|
||||||
exclude(:test_void_value_in_rhs, "unknown")
|
exclude(:test_void_value_in_rhs, "unknown")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user