[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]