X-Git-Url: http://andersk.mit.edu/gitweb/splint.git/blobdiff_plain/11db3170da99e22aa0acea76debd6c7b590a629c..91b588dea2cd9d465b092f5a934ebf1638f79253:/src/abstract.c diff --git a/src/abstract.c b/src/abstract.c index af04933..5138b56 100644 --- a/src/abstract.c +++ b/src/abstract.c @@ -1,6 +1,6 @@ /* ** Splint - annotation-assisted static program checker -** Copyright (C) 1994-2001 University of Virginia, +** Copyright (C) 1994-2003 University of Virginia, ** Massachusetts Institute of Technology ** ** This program is free software; you can redistribute it and/or modify it @@ -17,8 +17,8 @@ ** the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, ** MA 02111-1307, USA. ** -** For information on lclint: lclint-request@cs.virginia.edu -** To report a bug: lclint-bug@cs.virginia.edu +** For information on splint: info@splint.org +** To report a bug: splint-bug@splint.org ** For more information: http://www.splint.org */ /* @@ -34,8 +34,8 @@ ** Massachusetts Institute of Technology */ -# include "lclintMacros.nf" -# include "llbasic.h" +# include "splintMacros.nf" +# include "basic.h" # include "lslparse.h" # include "llgrammar.h" /* need simpleOp, MULOP and logicalOp in makeInfixTermNode */ # include "lclscan.h" @@ -186,7 +186,7 @@ abstract_init () ti->modifiable = FALSE; ti->abstract = FALSE; ti->export = FALSE; /* this is implicit, not exported */ - ti->basedOn = sort_float; + ti->basedOn = g_sortFloat; symtable_enterType (g_symtab, ti); } @@ -236,15 +236,15 @@ void LCLBuiltins (void) ti->modifiable = FALSE; ti->abstract = TRUE; - ti->basedOn = sort_bool; - ti->export = FALSE; /* this wasn't set (detected by lclint) */ + ti->basedOn = g_sortBool; + ti->export = FALSE; /* this wasn't set (detected by Splint) */ symtable_enterType (g_symtab, ti); /* do "constant bool FALSE = false;" */ vi->id = ltoken_createType (simpleId, SID_VAR, lsymbol_fromChars ("FALSE")); vi->kind = VRK_CONST; - vi->sort = sort_bool; + vi->sort = g_sortBool; vi->export = TRUE; (void) symtable_enterVar (g_symtab, vi); @@ -487,7 +487,7 @@ interfaceNode_makePrivFcn (/*@only@*/ fcnNode x) privateNode e = (privateNode) dmalloc (sizeof (*e)); /* - ** bug detected by lclint enum checking + ** bug detected by enum checking ** e->kind = XPK_FCN; */ @@ -1078,7 +1078,7 @@ importNode_makeBracketed (/*@only@*/ ltoken t) static cstring extractQuote (/*@only@*/ cstring s) { - int len = cstring_length (s); + size_t len = cstring_length (s); char *sc = cstring_toCharsSafe (s); cstring t; @@ -1365,7 +1365,7 @@ nameNode_unparse (/*@null@*/ nameNode n) makesigNode (ltoken t, /*@only@*/ ltokenList domain, ltoken range) { sigNode s = (sigNode) dmalloc (sizeof (*s)); - unsigned int key; + unsigned long int key; /* ** Assign a hash key here to speed up lookup of operators. @@ -1383,7 +1383,7 @@ makesigNode (ltoken t, /*@only@*/ ltokenList domain, ltoken range) } end_ltokenList_elements; s->key = key; - return (s); + return (s); } cstring sigNode_unparse (/*@null@*/ sigNode n) @@ -1413,10 +1413,9 @@ sigNode_unparseText (/*@null@*/ sigNode n) return cstring_undefined; } -static unsigned int - opFormNode2key (opFormNode op, opFormKind k) +static unsigned long opFormNode2key (opFormNode op, opFormKind k) { - unsigned int key; + unsigned long int key; switch (k) { @@ -1474,7 +1473,7 @@ makeOpFormNode (ltoken t, opFormKind k, opFormUnion u, ltoken close) { opFormNode n = (opFormNode) dmalloc (sizeof (*n)); - unsigned int key = 0; + unsigned long int key = 0; /* ** Assign a hash key here to speed up lookup of operators. @@ -1483,7 +1482,6 @@ makeOpFormNode (ltoken t, opFormKind k, opFormUnion u, n->tok = t; n->close = close; n->kind = k; - switch (k) { @@ -1536,7 +1534,7 @@ makeOpFormNode (ltoken t, opFormKind k, opFormUnion u, } } n->key = key; - return (n); + return (n); } static cstring printMiddle (int j) @@ -1674,7 +1672,7 @@ makeLclTypeSpecNodeConj (/*@null@*/ lclTypeSpecNode a, /*@null@*/ lclTypeSpecNod lclTypeSpecNode n = (lclTypeSpecNode) dmalloc (sizeof (*n)); n->kind = LTS_CONJ; - n->pointers = 0; + n->pointers = pointers_undefined; n->quals = qualList_new (); n->content.conj = (lclconj) dmalloc (sizeof (*n->content.conj)); n->content.conj->a = a; @@ -1689,7 +1687,7 @@ makeLclTypeSpecNodeType (/*@null@*/ CTypesNode x) lclTypeSpecNode n = (lclTypeSpecNode) dmalloc (sizeof (*n)); n->kind = LTS_TYPE; - n->pointers = 0; + n->pointers = pointers_undefined; n->content.type = x; n->quals = qualList_new (); return (n); @@ -1701,7 +1699,7 @@ makeLclTypeSpecNodeSU (/*@null@*/ strOrUnionNode x) lclTypeSpecNode n = (lclTypeSpecNode) dmalloc (sizeof (*n)); n->kind = LTS_STRUCTUNION; - n->pointers = 0; + n->pointers = pointers_undefined; n->content.structorunion = x; n->quals = qualList_new (); return (n); @@ -1714,7 +1712,7 @@ makeLclTypeSpecNodeEnum (/*@null@*/ enumSpecNode x) n->quals = qualList_new (); n->kind = LTS_ENUM; - n->pointers = 0; + n->pointers = pointers_undefined; n->content.enumspec = x; return (n); } @@ -2525,8 +2523,12 @@ typeExpr makeArrayNode (/*@returned@*/ typeExpr x, ** in makeArrayNode. */ - /*@i3@*/ x->content.function.returntype = makeArrayNode (x, a); - /*@i1@*/ return x; + /*@-usereleased@*/ + x->content.function.returntype = makeArrayNode (x, a); + /*@=usereleased@*/ + /*@-kepttrans@*/ + return x; + /*@=kepttrans@*/ } else { @@ -3235,7 +3237,7 @@ paramNode_checkQualifiers (lclTypeSpecNode t, typeExpr d) llassert (lclTypeSpecNode_isDefined (t)); - if (t->pointers == 0 + if (pointers_isUndefined (t->pointers) && (d != (typeExpr)0 && d->kind != TEXPR_PTR) && d->kind != TEXPR_ARRAY) { if (t->kind == LTS_TYPE) @@ -3413,23 +3415,23 @@ lclTypeSpecNode_unparseAltComments (/*@null@*/ lclTypeSpecNode typespec) /*@*/ return (message ("%q%s", s, ltoken_unparse (n->opttagid))); } - s = message ("%q%s {\n\2\1", s, ltoken_unparse (n->opttagid)); + s = message ("%q%s {\n\t", s, ltoken_unparse (n->opttagid)); } else { - s = message ("%q{\n\2\1", s); + s = message ("%q{\n\t", s); } decls = n->structdecls; stDeclNodeList_elements (decls, f) { - s = message ("%q%q\1%q;\n\1", s, + s = message ("%q%q %q;\n\t", s, lclTypeSpecNode_unparseAltComments (f->lcltypespec), declaratorNodeList_unparse (f->declarators)); } end_stDeclNodeList_elements; - return (message ("%q\3}", s)); + return (message ("%q }", s)); } case LTS_CONJ: { @@ -3520,23 +3522,23 @@ cstring lclTypeSpecNode_unparseComments (/*@null@*/ lclTypeSpecNode typespec) return (message ("%q%s", s, ltoken_unparse (n->opttagid))); } - s = message ("%q%s {\n\2\1", s, ltoken_unparse (n->opttagid)); + s = message ("%q%s {\n\t", s, ltoken_unparse (n->opttagid)); } else { - s = message ("%q{\n\2\1", s); + s = message ("%q{\n\t", s); } decls = n->structdecls; stDeclNodeList_elements (decls, f) { - s = message ("%q%q\1%q;\n\1", s, + s = message ("%q%q %q;\n\t", s, lclTypeSpecNode_unparseComments (f->lcltypespec), declaratorNodeList_unparse (f->declarators)); } end_stDeclNodeList_elements; - return (message ("%q\3}", s)); + return (message ("%q }", s)); } case LTS_CONJ: { @@ -3690,7 +3692,7 @@ makeQuantifiedTermNode (quantifierNodeList qn, ltoken open, termNode n = (termNode) dmalloc (sizeof (*n)); quantifiedTermNode q = (quantifiedTermNode) dmalloc (sizeof (*q)); - n->name = NULL; /*> missing this --- detected by lclint <*/ + n->name = NULL; /*> missing this --- detected by splint <*/ n->error_reported = FALSE; n->wrapped = 0; n->error_reported = FALSE; @@ -3703,7 +3705,7 @@ makeQuantifiedTermNode (quantifierNodeList qn, ltoken open, termNodeList_free (t->args); t->args = termNodeList_new (); - sort = sort_bool; + sort = g_sortBool; n->sort = sort; (void) sortSet_insert (n->possibleSorts, sort); @@ -4225,7 +4227,7 @@ makeLiteralTermNode (ltoken tok, sort s) needed anyway. */ /* symtable_enterOp (g_symtab, nn, sign); */ - if (s == sort_int) + if (s == g_sortInt) { sigNode osign; lslOp opn = (lslOp) dmalloc (sizeof (*opn)); @@ -4233,7 +4235,7 @@ makeLiteralTermNode (ltoken tok, sort s) /* if it is a C int, we should overload it as double too because C allows you to say "x > 2". */ - (void) sortSet_insert (n->possibleSorts, sort_double); + (void) sortSet_insert (n->possibleSorts, g_sortDouble); ltoken_setText (range, lsymbol_fromChars ("double")); osign = makesigNode (ltoken_undefined, ltokenList_new (), range); @@ -4263,7 +4265,7 @@ makeUnchangedTermNode1 (ltoken op, /*@unused@*/ ltoken all) t->error_reported = FALSE; t->wrapped = 0; t->kind = TRM_UNCHANGEDALL; - t->sort = sort_bool; + t->sort = g_sortBool; t->literal = op; t->given = sort_makeNoSort (); t->name = NULL; /*< missing this >*/ @@ -4288,7 +4290,7 @@ makeUnchangedTermNode2 (ltoken op, storeRefNodeList x) t->error_reported = FALSE; t->wrapped = 0; t->kind = TRM_UNCHANGEDOTHERS; - t->sort = sort_bool; + t->sort = g_sortBool; t->literal = op; t->unchanged = x; t->given = sort_makeNoSort (); @@ -4340,7 +4342,7 @@ makeUnchangedTermNode2 (ltoken op, storeRefNodeList x) t->error_reported = FALSE; t->wrapped = 0; t->kind = TRM_SIZEOF; - t->sort = sort_int; + t->sort = g_sortInt; t->literal = op; t->sizeofField = type; t->given = sort_makeNoSort (); @@ -5179,12 +5181,10 @@ lclTypeSpecNode2sort (lclTypeSpecNode type) return sort_makePtrN (type->content.type->sort, type->pointers); case LTS_STRUCTUNION: llassert (type->content.structorunion != NULL); - return sort_makePtrN (type->content.structorunion->sort, - type->pointers); + return sort_makePtrN (type->content.structorunion->sort, type->pointers); case LTS_ENUM: llassert (type->content.enumspec != NULL); - return sort_makePtrN (type->content.enumspec->sort, - type->pointers); + return sort_makePtrN (type->content.enumspec->sort, type->pointers); case LTS_CONJ: return (lclTypeSpecNode2sort (type->content.conj->a)); } @@ -5359,7 +5359,7 @@ enteringFcnScope (lclTypeSpecNode t, declaratorNode d, globalList g) fctInfo fi = (fctInfo) dmalloc (sizeof (*fi)); signNode sign = (signNode) dmalloc (sizeof (*sign)); sortList domain = sortList_new (); - unsigned int key; + unsigned long int key; paramPairs = extractParams (d->type); returnSort = extractReturnSort (t, d); @@ -5806,7 +5806,7 @@ nameNode nameNode_copySafe (nameNode n) } else { - /* error should be detected by lclint: forgot to copy opform! */ + /* error should be detected by splint: forgot to copy opform! */ return (makeNameNodeForm (opFormNode_copy (n->content.opform))); } }