Did not detect redeclaration of formal as local
authorceriel <none@none>
Mon, 27 May 1991 15:06:36 +0000 (15:06 +0000)
committerceriel <none@none>
Mon, 27 May 1991 15:06:36 +0000 (15:06 +0000)
lang/cem/cemcom.ansi/idf.c

index 080935a..b758c9f 100644 (file)
@@ -293,15 +293,17 @@ declare_idf(ds, dc, lvl)
 #ifdef LINT
        check_hiding(idf, lvl, sc);     /* of some idf by this idf */
 #endif LINT
+       if (def && lvl == L_LOCAL && def->df_level == L_FORMAL2) {
+               error("%s redeclared", idf->id_text);
+       }
 
-       if ((def && 
+       if (def && 
            ( def->df_level == lvl ||
-             ( lvl != L_GLOBAL && def->df_level > lvl )
-           ))
-          || (lvl == L_GLOBAL
-              && def && def->df_level == L_PROTO
+             ( lvl != L_GLOBAL && def->df_level > lvl ) ||
+             (lvl == L_GLOBAL
+              && def->df_level == L_PROTO
               && def->next && def->next->df_level == L_GLOBAL)
-          )    {
+          ))   {
                /*      There is already a declaration for idf on this
                        level, or even more inside.
                        The rules differ for different levels.