diff Python/compile.c @ 16783:4feea99be777 legacy-trunk

Add warnings about undefined "global" SF bug #233532 XXX Can't figure out how to write test cases that work with warnings
author Jeremy Hylton <jeremy@alum.mit.edu>
date Tue, 27 Feb 2001 05:15:57 +0000
parents 5a1230de436a
children 08d937107fe6
line wrap: on
line diff
--- a/Python/compile.c	Tue Feb 27 04:45:05 2001 +0000
+++ b/Python/compile.c	Tue Feb 27 05:15:57 2001 +0000
@@ -4853,6 +4853,35 @@
 
 	for (i = 1; i < NCH(n); i += 2) {
 		char *name = STR(CHILD(n, i));
+		int flags;
+
+		flags = symtable_lookup(st, name);
+		if (flags && flags != DEF_GLOBAL) {
+			char buf[500];
+			if (flags & DEF_PARAM) {
+				PyErr_Format(PyExc_SyntaxError,
+				     "name '%.400s' is local and global",
+					     PyString_AS_STRING(name));
+				set_error_location(st->st_filename,
+						   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? */
+					st->st_errors++;
+				}
+			}
+		}
 		symtable_add_def(st, name, DEF_GLOBAL);
 	}
 }