diff Python/future.c @ 33353:f7474d31ba3f legacy-trunk

SF patch #1007189, multi-line imports, for instance: "from blah import (foo, bar baz, bongo)"
author Anthony Baxter <anthonybaxter@gmail.com>
date Tue, 31 Aug 2004 10:07:13 +0000
parents cc05c2c8660e
children ef09e26ef099 8259ff3ee493
line wrap: on
line diff
--- a/Python/future.c	Tue Aug 31 09:53:05 2004 +0000
+++ b/Python/future.c	Tue Aug 31 10:07:13 2004 +0000
@@ -18,18 +18,18 @@
 {
 	int i;
 	char *feature;
-	node *ch;
-
-	REQ(n, import_stmt); /* must by from __future__ import ... */
+	node *ch, *nn;
 
-	for (i = 3; i < NCH(n); i += 2) {
-		ch = CHILD(n, i);
-		if (TYPE(ch) == STAR) {
-			PyErr_SetString(PyExc_SyntaxError,
-					FUTURE_IMPORT_STAR);
-			PyErr_SyntaxLocation(filename, ch->n_lineno);
-			return -1;
-		}
+	REQ(n, import_from);
+	nn = CHILD(n, 3 + (TYPE(CHILD(n, 3)) == LPAR));
+	if (TYPE(nn) == STAR) {
+		PyErr_SetString(PyExc_SyntaxError, FUTURE_IMPORT_STAR);
+		PyErr_SyntaxLocation(filename, nn->n_lineno);
+		return -1;
+	}
+	REQ(nn, import_as_names);
+	for (i = 0; i < NCH(nn); i += 2) {
+		ch = CHILD(nn, i);
 		REQ(ch, import_as_name);
 		feature = STR(CHILD(ch, 0));
 		if (strcmp(feature, FUTURE_NESTED_SCOPES) == 0) {
@@ -188,7 +188,8 @@
 	case import_stmt: {
 		node *name;
 
-		if (STR(CHILD(n, 0))[0] != 'f') { /* from */
+		n = CHILD(n, 0);
+		if (TYPE(n) != import_from) {
 			ff->ff_last_lineno = n->n_lineno;
 			return 0;
 		}