diff Python/compile.c @ 16853:05785bdf289c legacy-trunk

Use the new PyErr_WarnExplicit() API to issue better warnings for global after assign / use. Note: I'm not updating the PyErr_Warn() call for import * / exec combined with a function, because I can't trigger it with an example. Jeremy, just follow the example of the call to PyErr_WarnExplicit() that I *did* include.
author Guido van Rossum <guido@python.org>
date Wed, 28 Feb 2001 21:55:38 +0000
parents 09f6c1372056
children ec9083ac26df
line wrap: on
line diff
--- a/Python/compile.c	Wed Feb 28 21:52:10 2001 +0000
+++ b/Python/compile.c	Wed Feb 28 21:55:38 2001 +0000
@@ -4830,18 +4830,27 @@
 						   st->st_cur->ste_lineno);
 				st->st_errors++;
 				return;
-			} else if (flags & DEF_LOCAL) {
-				sprintf(buf, GLOBAL_AFTER_ASSIGN, name);
-				if (PyErr_Warn(PyExc_SyntaxWarning,
-					       buf) < 0) {
-					/* XXX set line number? */
-					st->st_errors++;
-				}
-			} else {
-				sprintf(buf, GLOBAL_AFTER_USE, name);
-				if (PyErr_Warn(PyExc_SyntaxWarning,
-					       buf) < 0) {
-					/* XXX set line number? */
+			}
+			else {
+				if (flags & DEF_LOCAL)
+					sprintf(buf, GLOBAL_AFTER_ASSIGN,
+						name);
+				else
+					sprintf(buf, GLOBAL_AFTER_USE, name);
+				if (PyErr_WarnExplicit(PyExc_SyntaxWarning,
+						       buf, st->st_filename,
+						       st->st_cur->ste_lineno,
+						       NULL, NULL) < 0)
+				{
+					if (PyErr_ExceptionMatches(
+						PyExc_SyntaxWarning))
+					{
+						PyErr_SetString(
+						    PyExc_SyntaxError, buf);
+						PyErr_SyntaxLocation(
+						    st->st_filename,
+						    st->st_cur->ste_lineno);
+					}
 					st->st_errors++;
 				}
 			}