[Python-checkins] python/dist/src/Python newcompile.c, 1.1.2.75,
1.1.2.76
nnorwitz at users.sourceforge.net
nnorwitz at users.sourceforge.net
Sat Mar 20 12:10:49 EST 2004
Update of /cvsroot/python/python/dist/src/Python
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv17930/Python
Modified Files:
Tag: ast-branch
newcompile.c
Log Message:
Get docstrings working for classes
Index: newcompile.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Python/Attic/newcompile.c,v
retrieving revision 1.1.2.75
retrieving revision 1.1.2.76
diff -C2 -d -r1.1.2.75 -r1.1.2.76
*** newcompile.c 16 Feb 2004 22:11:34 -0000 1.1.2.75
--- newcompile.c 20 Mar 2004 17:10:46 -0000 1.1.2.76
***************
*** 157,160 ****
--- 157,161 ----
static char *opnames[];
+ static PyObject *__doc__;
int
***************
*** 204,207 ****
--- 205,214 ----
PyCodeObject *co = NULL;
+ if (!__doc__) {
+ __doc__ = PyString_InternFromString("__doc__");
+ if (!__doc__)
+ goto error;
+ }
+
if (!compiler_init(&c))
goto error;
***************
*** 911,917 ****
static int
compiler_class(struct compiler *c, stmt_ty s)
{
! int n;
PyCodeObject *co;
PyObject *str;
--- 918,932 ----
static int
+ compiler_isdocstring(stmt_ty s)
+ {
+ if (s->kind != Expr_kind)
+ return 0;
+ return s->v.Expr.value->kind == Str_kind;
+ }
+
+ static int
compiler_class(struct compiler *c, stmt_ty s)
{
! int n, i;
PyCodeObject *co;
PyObject *str;
***************
*** 939,944 ****
Py_DECREF(str);
! /* XXX: doc strings go POP_TOP, instead of STORE_NAME (__doc__) */
! VISIT_SEQ(c, stmt, s->v.ClassDef.body);
ADDOP(c, LOAD_LOCALS);
ADDOP(c, RETURN_VALUE);
--- 954,969 ----
Py_DECREF(str);
! stmt_ty st = asdl_seq_GET(s->v.ClassDef.body, 0);
! i = 0;
! if (compiler_isdocstring(st)) {
! i++;
! VISIT(c, expr, st->v.Expr.value);
! if (!compiler_nameop(c, __doc__, Store))
! return 0;
! }
!
! for (; i < asdl_seq_LEN(s->v.ClassDef.body); i++)
! VISIT(c, stmt, asdl_seq_GET(s->v.ClassDef.body, i));
!
ADDOP(c, LOAD_LOCALS);
ADDOP(c, RETURN_VALUE);
More information about the Python-checkins
mailing list