/*;-*-C-*-;
** Splint - annotation-assisted static program checker
-** Copyright (C) 1994-2002 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
{ setCurrentParams (uentryList_missingParams); }
functionClauses
{ /* need to support globals and modifies here! */
+ functionClauseList fcl;
ctype ct = ctype_makeFunction (idDecl_getCtype ($1),
uentryList_makeMissingParams ());
/*drl 7/25/01 added*/
setImplictfcnConstraints();
- /* functionClauseList_ImplictConstraints($6); */
+ DPRINTF((message("namedDeclBase PushType TLPAREN TRPAREN...:\n adding implict constraints to functionClause List: %s",
+ functionClauseList_unparse($6)
+ )
+ ));
+
+ fcl = functionClauseList_setImplictConstraints($6);
- idDecl_addClauses ($$, $6);
+ idDecl_addClauses ($$, fcl);
+
+ DPRINTF((message("1 added fuctionClause List: %s to the Id",
+ functionClauseList_unparse(fcl)
+ )
+ ));
+
+
context_popLoc ();
lltok_free2 ($3, $4);
}
{ setCurrentParams ($4); }
functionClauses
{
+ functionClauseList fcl;
setImplictfcnConstraints ();
- /* functionClauseList_ImplictConstraints($7);*/
clearCurrentParams ();
$$ = idDecl_replaceCtype ($1, ctype_makeFunction (idDecl_getCtype ($1), $4));
- idDecl_addClauses ($$, $7);
+
+ DPRINTF((message("namedDeclBase PushType TLPAREN genericParamList TRPAREN...:\n adding implict constraints to functionClause List: %s",
+ functionClauseList_unparse($7)
+ )
+ )) ;
+
+ fcl = functionClauseList_setImplictConstraints($7);
+
+ idDecl_addClauses ($$, fcl);
+
+ DPRINTF((message("added fuctionClause List: %s to the Id",
+ functionClauseList_unparse(fcl)
+ )
+ ));
+
+
context_popLoc ();
lltok_free2 ($3, $5);
}
;
optSpecClauseList
- : /* empty */ { $$ = sRefSet_undefined }
+ : /* empty */ { DPRINTF ((message("Empty optSpecClauseList") )); $$ = sRefSet_undefined }
| specClauseList
;
specClauseList
: specClauseListExpr
{ if (sRef_isValid ($1)) { $$ = sRefSet_single ($1); }
- else { $$ = sRefSet_undefined; }
+ else {
+ DPRINTF((message("returning sRefSEt_undefined ") ));
+ $$ = sRefSet_undefined; }
}
| specClauseList TCOMMA specClauseListExpr
{ if (sRef_isValid ($3))
| TMINUS castExpr { $$ = exprNode_preOp ($2, $1); }
| TTILDE castExpr { $$ = exprNode_preOp ($2, $1); }
| TEXCL castExpr { $$ = exprNode_preOp ($2, $1); }
- | sizeofExpr { $$ = $1; }
+ | processSizeof sizeofExpr endprocessSizeof { $$ = $2; }
| offsetofExpr { $$ = $1; }
;
sizeofExprAux { context_sizeofReleaseVars (); $$ = $3; }
;
+processSizeof: {context_enterSizeof()};
+
+
+endprocessSizeof: {context_leaveSizeof()};
+
+
sizeofExprAux
- : CSIZEOF TLPAREN typeExpression TRPAREN { $$ = exprNode_sizeofType ($3); lltok_free3 ($1, $2, $4); }
- | CSIZEOF unaryExpr { $$ = exprNode_sizeofExpr ($2); lltok_free ($1); }
+ : CSIZEOF TLPAREN typeExpression TRPAREN { $$ = exprNode_sizeofType ($3); lltok_free3 ($1, $2, $4); }
+ | CSIZEOF unaryExpr { $$ = exprNode_sizeofExpr ($2); lltok_free ($1); }
| CALIGNOF TLPAREN typeExpression TRPAREN { $$ = exprNode_alignofType ($3); lltok_free3 ($1, $2, $4); }
| CALIGNOF unaryExpr { $$ = exprNode_alignofExpr ($2); lltok_free ($1); }
;
-
+
+
+
castExpr
: unaryExpr
| TLPAREN typeExpression TRPAREN castExpr