uentry_unparse (le)));
params = ctype_argsFunction (ct);
- return; /*@32 ! remove this? */
+ return; /* No checking for non-function */
}
/*
if (sRef_isObserver (b))
{
- exprNode e = exprNodeList_nth (args, usymId_toInt (sRef_getParam (rb)));
+ exprNode e = exprNodeList_nth (args, sRef_getParam (rb));
if (optgenerror
(FLG_MODOBSERVER,
ret->edata = exprData_makeCast (tok, e, q);
ret->sref = sRef_copy (e->sref);
-
- DPRINTF (("Cast 2: -> %s", sRef_unparseFull (ret->sref)));
+
+ DPRINTF (("Cast: -> %s", sRef_unparseFull (ret->sref)));
if (!sRef_isConst (e->sref))
{
}
else if (multiVal_isChar (m))
{
- char val = multiVal_forceChar (m);
+ /*signed? */ char val = multiVal_forceChar (m);
if (ctype_isChar (expected))
{
- if (ctype_isUnsigned (expected) && ((int)val) < 0)
+ if (ctype_isUnsigned (expected) && ((int) val) < 0)
{
return FALSE;
}
DPRINTF (("No error: [%s] %s / [%s] %s",
exprNode_unparse (e1), ctype_unparse (tr1),
exprNode_unparse (e2), ctype_unparse (tr2)));
+
+ /*
+ ** evans 2003-06-15: changed this so if either type is a literal,
+ ** the other type is used.
+ ** (Need to look at the ISO C99 rules on this...)
+ */
- ret = ctype_biggerType (tr1, tr2);
+ if (exprNode_isNumLiteral (e1)) {
+ ret = tr2;
+ } else if (exprNode_isNumLiteral (e2)) {
+ ret = tr1;
+ } else {
+ ret = ctype_biggerType (tr1, tr2);
+ }
}
else
{
} end_exprNodeList_elements;
}
-long exprNode_getLongValue (exprNode e) {
+long exprNode_getLongValue (exprNode e)
+{
long value;
-
- if (exprNode_hasValue (e)
- && multiVal_isInt (exprNode_getValue (e)))
+
+ if (exprNode_hasValue (e) && multiVal_isInt (exprNode_getValue (e)))
{
value = multiVal_forceInt (exprNode_getValue (e));
}
else
{
- /*@!! BADBRANCH;*/
- value = 0;
+ value = 0; /* Unknown value */
}
return value;
}
-/*@observer@*/ fileloc exprNode_getfileloc (exprNode p_e)
-{
- if (exprNode_isDefined (p_e) )
- return ( p_e->loc );
- else
- return fileloc_undefined;
-}
-
/*@only@*/ fileloc exprNode_getNextSequencePoint (exprNode e)
{
/*