ruby-changes:41207
From: nobu <ko1@a...>
Date: Thu, 24 Dec 2015 18:43:35 +0900 (JST)
Subject: [ruby-changes:41207] nobu:r53279 (trunk): deprecate exposed internal functions
nobu 2015-12-24 18:43:22 +0900 (Thu, 24 Dec 2015) New Revision: 53279 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=53279 Log: deprecate exposed internal functions * error.c (rb_compile_error_with_enc, rb_compile_error), (rb_compile_bug): deprecate internal functions. * parse.y (parser_yyerror): construct exception message with source code and carret. Modified files: trunk/ChangeLog trunk/NEWS trunk/error.c trunk/include/ruby/intern.h trunk/parse.y Index: include/ruby/intern.h =================================================================== --- include/ruby/intern.h (revision 53278) +++ include/ruby/intern.h (revision 53279) @@ -253,9 +253,9 @@ PRINTF_ARGS(NORETURN(void rb_loaderror_w https://github.com/ruby/ruby/blob/trunk/include/ruby/intern.h#L253 PRINTF_ARGS(NORETURN(void rb_name_error(ID, const char*, ...)), 2, 3); PRINTF_ARGS(NORETURN(void rb_name_error_str(VALUE, const char*, ...)), 2, 3); NORETURN(void rb_invalid_str(const char*, const char*)); -PRINTF_ARGS(void rb_compile_error(const char*, int, const char*, ...), 3, 4); -PRINTF_ARGS(void rb_compile_error_with_enc(const char*, int, void *, const char*, ...), 4, 5); -PRINTF_ARGS(void rb_compile_error_append(const char*, ...), 1, 2); +DEPRECATED(PRINTF_ARGS(void rb_compile_error(const char*, int, const char*, ...), 3, 4)); +DEPRECATED(PRINTF_ARGS(void rb_compile_error_with_enc(const char*, int, void *, const char*, ...), 4, 5)); +DEPRECATED(PRINTF_ARGS(void rb_compile_error_append(const char*, ...), 1, 2)); NORETURN(void rb_error_frozen(const char*)); NORETURN(void rb_error_frozen_object(VALUE)); void rb_error_untrusted(VALUE); Index: ChangeLog =================================================================== --- ChangeLog (revision 53278) +++ ChangeLog (revision 53279) @@ -1,3 +1,11 @@ https://github.com/ruby/ruby/blob/trunk/ChangeLog#L1 +Thu Dec 24 18:43:19 2015 Nobuyoshi Nakada <nobu@r...> + + * error.c (rb_compile_error_with_enc, rb_compile_error), + (rb_compile_bug): deprecate internal functions. + + * parse.y (parser_yyerror): construct exception message with + source code and carret. + Thu Dec 24 17:25:42 2015 Nobuyoshi Nakada <nobu@r...> * compile.c (append_compile_error), parse.y (compile_error): Index: parse.y =================================================================== --- parse.y (revision 53278) +++ parse.y (revision 53279) @@ -5409,11 +5409,12 @@ parser_yyerror(struct parser_params *par https://github.com/ruby/ruby/blob/trunk/parse.y#L5409 #ifndef RIPPER const int max_line_margin = 30; const char *p, *pe; + const char *pre = "", *post = ""; + const char *code = "", *carret = "", *newline = ""; char *buf; long len; int i; - compile_error(PARSER_ARG "%s", msg); p = lex_p; while (lex_pbeg <= p) { if (*p == '\n') break; @@ -5430,7 +5431,6 @@ parser_yyerror(struct parser_params *par https://github.com/ruby/ruby/blob/trunk/parse.y#L5431 len = pe - p; if (len > 4) { char *p2; - const char *pre = "", *post = ""; if (len > max_line_margin * 2 + 10) { if (lex_p - p > max_line_margin) { @@ -5443,22 +5443,24 @@ parser_yyerror(struct parser_params *par https://github.com/ruby/ruby/blob/trunk/parse.y#L5443 } len = pe - p; } - buf = ALLOCA_N(char, len+2); - MEMCPY(buf, p, char, len); - buf[len] = '\0'; - rb_compile_error_with_enc(NULL, 0, (void *)current_enc, "%s%s%s", pre, buf, post); - i = (int)(lex_p - p); - p2 = buf; pe = buf + len; - - while (p2 < pe) { - if (*p2 != '\t') *p2 = ' '; - p2++; + buf = ALLOCA_N(char, i+2); + code = p; + carret = p2 = buf; + while (i-- > 0) { + *p2++ = *p++ == '\t' ? '\t' : ' '; } - buf[i] = '^'; - buf[i+1] = '\0'; - rb_compile_error_append("%s%s", pre, buf); + *p2++ = '^'; + *p2 = '\0'; + newline = "\n"; + } + else { + len = 0; } + compile_error(PARSER_ARG "%s%s""%s%.*s%s%s""%s%s", + msg, newline, + pre, (int)len, code, post, newline, + pre, carret); #else dispatch1(parse_error, STR_NEW2(msg)); ripper_error(); Index: error.c =================================================================== --- error.c (revision 53278) +++ error.c (revision 53279) @@ -127,6 +127,7 @@ compile_err_append(VALUE mesg) https://github.com/ruby/ruby/blob/trunk/error.c#L127 th->base_block = prev_base_block; } +#if 0 void rb_compile_error_with_enc(const char *file, int line, void *enc, const char *fmt, ...) { @@ -150,6 +151,7 @@ rb_compile_error(const char *file, int l https://github.com/ruby/ruby/blob/trunk/error.c#L151 va_end(args); compile_err_append(str); } +#endif void rb_compile_error_str(VALUE file, int line, void *enc, const char *fmt, ...) @@ -483,6 +485,7 @@ rb_async_bug_errno(const char *mesg, int https://github.com/ruby/ruby/blob/trunk/error.c#L485 abort(); } +#if 0 void rb_compile_bug(const char *file, int line, const char *fmt, ...) { @@ -490,6 +493,7 @@ rb_compile_bug(const char *file, int lin https://github.com/ruby/ruby/blob/trunk/error.c#L493 abort(); } +#endif void rb_compile_bug_str(VALUE file, int line, const char *fmt, ...) Index: NEWS =================================================================== --- NEWS (revision 53278) +++ NEWS (revision 53279) @@ -338,6 +338,10 @@ with all sufficient information, see the https://github.com/ruby/ruby/blob/trunk/NEWS#L338 * rb_autoload() deprecated, use rb_funcall() instead. [Feature #11664] +* rb_compile_error_with_enc(), rb_compile_error(), and rb_compile_bug() + deprecated. these functions are exposed but only for internal use. + external libraries should not use them. + === Supported platform changes * OS/2 is no longer supported -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/