mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
refactor parser error
* error.c (err_vcatf): rename, and separate appending message from creating a string buffer. * error.c (rb_syntax_error_append): merge rb_error_vsprintf and rb_compile_err_append. * parse.y (parser_compile_error): use rb_syntax_error_append. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54649 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
51612505f7
commit
51c195948f
3 changed files with 32 additions and 26 deletions
10
ChangeLog
10
ChangeLog
|
@ -1,3 +1,13 @@
|
||||||
|
Tue Apr 19 17:42:47 2016 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||||
|
|
||||||
|
* error.c (err_vcatf): rename, and separate appending message from
|
||||||
|
creating a string buffer.
|
||||||
|
|
||||||
|
* error.c (rb_syntax_error_append): merge rb_error_vsprintf and
|
||||||
|
rb_compile_err_append.
|
||||||
|
|
||||||
|
* parse.y (parser_compile_error): use rb_syntax_error_append.
|
||||||
|
|
||||||
Tue Apr 19 13:46:19 2016 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
Tue Apr 19 13:46:19 2016 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||||
|
|
||||||
* compile.c (append_compile_error, compile_bug): pass iseq and get
|
* compile.c (append_compile_error, compile_bug): pass iseq and get
|
||||||
|
|
35
error.c
35
error.c
|
@ -80,10 +80,9 @@ err_position_0(char *buf, long len, const char *file, int line)
|
||||||
}
|
}
|
||||||
|
|
||||||
static VALUE
|
static VALUE
|
||||||
compile_vsprintf(rb_encoding *enc, const char *pre, const char *file, int line, const char *fmt, va_list args)
|
err_vcatf(VALUE str, const char *pre, const char *file, int line,
|
||||||
|
const char *fmt, va_list args)
|
||||||
{
|
{
|
||||||
VALUE str = rb_enc_str_new(0, 0, enc);
|
|
||||||
|
|
||||||
if (file) {
|
if (file) {
|
||||||
rb_str_cat2(str, file);
|
rb_str_cat2(str, file);
|
||||||
if (line) rb_str_catf(str, ":%d", line);
|
if (line) rb_str_catf(str, ":%d", line);
|
||||||
|
@ -95,21 +94,25 @@ compile_vsprintf(rb_encoding *enc, const char *pre, const char *file, int line,
|
||||||
}
|
}
|
||||||
|
|
||||||
VALUE
|
VALUE
|
||||||
rb_compile_err_append(VALUE buffer, VALUE mesg)
|
rb_syntax_error_append(VALUE exc, VALUE file, int line, int column,
|
||||||
|
rb_encoding *enc, const char *fmt, va_list args)
|
||||||
{
|
{
|
||||||
if (!buffer) {
|
const char *fn = NIL_P(file) ? NULL : RSTRING_PTR(file);
|
||||||
|
if (!exc) {
|
||||||
|
VALUE mesg = rb_enc_str_new(0, 0, enc);
|
||||||
|
err_vcatf(mesg, NULL, fn, line, fmt, args);
|
||||||
rb_str_cat2(mesg, "\n");
|
rb_str_cat2(mesg, "\n");
|
||||||
rb_write_error_str(mesg);
|
rb_write_error_str(mesg);
|
||||||
}
|
}
|
||||||
else if (NIL_P(buffer)) {
|
else if (NIL_P(exc)) {
|
||||||
buffer = mesg;
|
VALUE mesg = rb_enc_str_new(0, 0, enc);
|
||||||
|
exc = err_vcatf(mesg, NULL, fn, line, fmt, args);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
rb_str_cat2(buffer, "\n");
|
err_vcatf(exc, "\n", fn, line, fmt, args);
|
||||||
rb_str_append(buffer, mesg);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return buffer;
|
return exc;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -122,14 +125,6 @@ rb_compile_error(const char *file, int line, const char *fmt, ...)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
VALUE
|
|
||||||
rb_error_vsprintf(VALUE file, int line, void *enc, const char *fmt, va_list args)
|
|
||||||
{
|
|
||||||
return compile_vsprintf(enc, NULL,
|
|
||||||
NIL_P(file) ? NULL : RSTRING_PTR(file), line,
|
|
||||||
fmt, args);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
rb_compile_error_append(const char *fmt, ...)
|
rb_compile_error_append(const char *fmt, ...)
|
||||||
{
|
{
|
||||||
|
@ -138,9 +133,9 @@ rb_compile_error_append(const char *fmt, ...)
|
||||||
static VALUE
|
static VALUE
|
||||||
warn_vsprintf(rb_encoding *enc, const char *file, int line, const char *fmt, va_list args)
|
warn_vsprintf(rb_encoding *enc, const char *file, int line, const char *fmt, va_list args)
|
||||||
{
|
{
|
||||||
VALUE str;
|
VALUE str = rb_enc_str_new(0, 0, enc);
|
||||||
|
|
||||||
str = compile_vsprintf(enc, "warning: ", file, line, fmt, args);
|
err_vcatf(str, "warning: ", file, line, fmt, args);
|
||||||
return rb_str_cat2(str, "\n");
|
return rb_str_cat2(str, "\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
13
parse.y
13
parse.y
|
@ -11074,21 +11074,22 @@ rb_parser_printf(struct parser_params *parser, const char *fmt, ...)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
extern VALUE rb_error_vsprintf(VALUE, int, void *, const char *, va_list);
|
extern VALUE rb_syntax_error_append(VALUE exc, VALUE file, int line, int column, rb_encoding *enc, const char *fmt, va_list args);
|
||||||
extern VALUE rb_compile_err_append(VALUE buffer, VALUE mesg);
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
parser_compile_error(struct parser_params *parser, const char *fmt, ...)
|
parser_compile_error(struct parser_params *parser, const char *fmt, ...)
|
||||||
{
|
{
|
||||||
VALUE str;
|
|
||||||
va_list ap;
|
va_list ap;
|
||||||
|
|
||||||
parser->error_p = 1;
|
parser->error_p = 1;
|
||||||
va_start(ap, fmt);
|
va_start(ap, fmt);
|
||||||
str = rb_error_vsprintf(ruby_sourcefile_string, ruby_sourceline,
|
parser->error_buffer =
|
||||||
(void *)current_enc, fmt, ap);
|
rb_syntax_error_append(parser->error_buffer,
|
||||||
|
ruby_sourcefile_string,
|
||||||
|
ruby_sourceline,
|
||||||
|
rb_long2int(lex_p - lex_pbeg),
|
||||||
|
current_enc, fmt, ap);
|
||||||
va_end(ap);
|
va_end(ap);
|
||||||
parser->error_buffer = rb_compile_err_append(parser->error_buffer, str);
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue