if (ctype_isFixedArray (ct))
{
+ DPRINTF (("Array: %s / %s",
+ ctype_unparse (ct),
+ ctype_unparse (ctype_baseArrayPtr (ct))));
+
if (ctype_isArray (ctype_baseArrayPtr (ct))
&& !ctype_isFixedArray (ctype_baseArrayPtr (ct)))
{
/*@notnull@*/ uentry uentry_makeParam (idDecl t, int i)
{
ctype ct = idDecl_getCtype (t);
- ctype base = ct;
fileloc loc = setLocation ();
sRef pref = sRef_makeParam (i, ct, stateInfo_makeLoc (loc, SA_CREATED));
uentry ue = uentry_makeVariableSrefParam (idDecl_observeId (t), ct, loc, pref);
uentry_reflectQualifiers (ue, idDecl_getQuals (t));
uentry_implicitParamAnnots (ue);
- /* Parameter type [][] or [x][] is invalid, but [][x] is okay */
-
- while (ctype_isFixedArray (base))
- {
- base = ctype_baseArrayPtr (base);
- }
-
- DPRINTF (("Base: %s", ctype_unparse (base)));
-
- if (ctype_isIncompleteArray (base))
+ if (ctype_isArray (ct))
{
- base = ctype_baseArrayPtr (base);
- DPRINTF (("Base: %s", ctype_unparse (base)));
- if (ctype_isArray (base))
+ /* Parameter type [][] or [x][] is invalid, but [][x] is okay */
+ ctype base = ctype_baseArrayPtr (ct);
+
+ DPRINTF (("Check array: %s / Base: %s", ctype_unparse (ct),
+ ctype_unparse (base)));
+
+ if (ctype_isIncompleteArray (base))
{
if (!uentry_hasName (ue))
{
voptgenerror
(FLG_INCOMPLETETYPE,
- message ("Unnamed function parameter %d is incomplete type (inner array must have bounds): %s",
+ message ("Unnamed function parameter %d is incomplete type "
+ "(inner array must have bounds): %s",
i + 1,
ctype_unparse (ct)),
uentry_whereLast (ue));
{
voptgenerror
(FLG_INCOMPLETETYPE,
- message ("Function parameter %q is incomplete type (inner array must have bounds): %s",
+ message ("Function parameter %q is incomplete type "
+ "(inner array must have bounds): %s",
uentry_getName (ue),
ctype_unparse (ct)),
uentry_whereLast (ue));