Mercurial > cpython-lru_cache-weakref
diff Parser/asdl_c.py @ 36664:7bfbfb2ef4e2 legacy-trunk
Stop generating empty arrays.
| author | Martin v. Löwis <martin@v.loewis.de> |
|---|---|
| date | Sun, 26 Feb 2006 23:40:20 +0000 |
| parents | 710cbdd478a8 |
| children | 58a8451ff795 |
line wrap: on
line diff
--- a/Parser/asdl_c.py Sun Feb 26 22:29:38 2006 +0000 +++ b/Parser/asdl_c.py Sun Feb 26 23:40:20 2006 +0000 @@ -353,10 +353,11 @@ def visitProduct(self, prod, name): self.emit("PyTypeObject *%s_type;" % name, 0) self.emit("static PyObject* ast2obj_%s(void*);" % name, 0) - self.emit("char *%s_fields[]={" % name,0) - for f in prod.fields: - self.emit('"%s",' % f.name, 1) - self.emit("};", 0) + if prod.fields: + self.emit("char *%s_fields[]={" % name,0) + for f in prod.fields: + self.emit('"%s",' % f.name, 1) + self.emit("};", 0) def visitSum(self, sum, name): self.emit("PyTypeObject *%s_type;" % name, 0) @@ -374,10 +375,11 @@ def visitConstructor(self, cons, name): self.emit("PyTypeObject *%s_type;" % cons.name, 0) - self.emit("char *%s_fields[]={" % cons.name, 0) - for t in cons.fields: - self.emit('"%s",' % t.name, 1) - self.emit("};",0) + if cons.fields: + self.emit("char *%s_fields[]={" % cons.name, 0) + for t in cons.fields: + self.emit('"%s",' % t.name, 1) + self.emit("};",0) class PyTypesVisitor(PickleVisitor): @@ -450,8 +452,12 @@ self.emit("}", 0) def visitProduct(self, prod, name): - self.emit('%s_type = make_type("%s", &PyBaseObject_Type, %s_fields, %d);' % - (name, name, name, len(prod.fields)), 1) + if prod.fields: + fields = name.value+"_fields" + else: + fields = "NULL" + self.emit('%s_type = make_type("%s", &PyBaseObject_Type, %s, %d);' % + (name, name, fields, len(prod.fields)), 1) def visitSum(self, sum, name): self.emit('%s_type = make_type("%s", &PyBaseObject_Type, NULL, 0);' % (name, name), 1) @@ -460,8 +466,12 @@ self.visitConstructor(t, name, simple) def visitConstructor(self, cons, name, simple): - self.emit('%s_type = make_type("%s", %s_type, %s_fields, %d);' % - (cons.name, cons.name, name, cons.name, len(cons.fields)), 1) + if cons.fields: + fields = cons.name.value+"_fields" + else: + fields = "NULL" + self.emit('%s_type = make_type("%s", %s_type, %s, %d);' % + (cons.name, cons.name, name, fields, len(cons.fields)), 1) if simple: self.emit("%s_singleton = PyType_GenericNew(%s_type, NULL, NULL);" % (cons.name, cons.name), 1)
