]> granicus.if.org Git - python/commitdiff
Refactored the warning-issuing code more.
authorGuido van Rossum <guido@python.org>
Fri, 2 Mar 2001 03:30:41 +0000 (03:30 +0000)
committerGuido van Rossum <guido@python.org>
Fri, 2 Mar 2001 03:30:41 +0000 (03:30 +0000)
Made sure that the warnings issued by symtable_check_unoptimized()
(about import * and exec) contain the proper filename and line number,
and are transformed into SyntaxError exceptions with -Werror.

Python/compile.c

index fe4d05ef0efe5cd410ea17fcb76e82861474ea7d..f553262de14bdc53162b602cfed1b549d335fb49 100644 (file)
@@ -4015,18 +4015,26 @@ get_ref_type(struct compiling *c, char *name)
        return -1; /* can't get here */
 }
 
-/* Helper function to issue symbol table warnings */
+/* Helper functions to issue warnings */
 
 static int
-symtable_warn(struct symtable *st, char *msg)
+issue_warning(char *msg, char *filename, int lineno)
 {
-       if (PyErr_WarnExplicit(PyExc_SyntaxWarning, msg, st->st_filename,
-                              st->st_cur->ste_lineno, NULL, NULL) < 0) {
+       if (PyErr_WarnExplicit(PyExc_SyntaxWarning, msg, filename,
+                              lineno, NULL, NULL) < 0) {
                if (PyErr_ExceptionMatches(PyExc_SyntaxWarning)) {
                        PyErr_SetString(PyExc_SyntaxError, msg);
-                       PyErr_SyntaxLocation(st->st_filename,
-                                            st->st_cur->ste_lineno);
+                       PyErr_SyntaxLocation(filename, lineno);
                }
+               return -1;
+       }
+       return 0;
+}
+
+static int
+symtable_warn(struct symtable *st, char *msg)
+{
+       if (issue_warning(msg, st->st_filename, st->st_cur->ste_lineno) < 0) {
                st->st_errors++;
                return -1;
        }
@@ -4195,11 +4203,9 @@ symtable_check_unoptimized(struct compiling *c,
                PyErr_SyntaxLocation(c->c_symtable->st_filename,
                                     ste->ste_lineno);
                return -1;
-       } else {
-               /* XXX if the warning becomes an exception, we should
-                  attached more info to it. */
-               if (PyErr_Warn(PyExc_SyntaxWarning, buf) < 0)
-                       return -1;
+       }
+       else {
+               return issue_warning(buf, c->c_filename, ste->ste_lineno);
        }
        return 0;
 }