more additions for lint
authordick <none@none>
Mon, 7 Jan 1991 12:33:38 +0000 (12:33 +0000)
committerdick <none@none>
Mon, 7 Jan 1991 12:33:38 +0000 (12:33 +0000)
lang/cem/cemcom.ansi/arith.c
lang/cem/cemcom.ansi/code.c
lang/cem/cemcom.ansi/error.c
lang/cem/cemcom.ansi/idf.c
lang/cem/cemcom.ansi/init.c
lang/cem/cemcom.ansi/l_em.h
lang/cem/cemcom.ansi/proto.c

index b327630..a733d87 100644 (file)
@@ -254,6 +254,9 @@ any2arith(expp, oper)
                break;
        case ENUM:
 #ifndef        LINT
+               /*      we do not want this conversion for lint, since we
+                       want to keep enums and ints separate
+               */
                int2int(expp, int_type);
 #endif LINT
                break;
index b8724ea..c9b111e 100644 (file)
@@ -342,7 +342,6 @@ end_proc(fbytes)
        }
        C_df_ilb(return_label);
        prc_exit();
-#ifndef        LINT
        if (return_expr_occurred) {
                if (func_res_label != 0)        {
                        C_lae_dlb(func_res_label, (arith)0);
@@ -352,7 +351,6 @@ end_proc(fbytes)
                        C_ret(func_size);
        }
        else    C_ret((arith) 0);
-#endif LINT
 
        /* getting the number of "local" bytes is posponed until here,
           because copying the function result in "func_res_label" may
index 6199891..d4280eb 100644 (file)
@@ -146,8 +146,6 @@ debug(va_alist)
        va_start(ap);
        {
                _error(DO_DEBUG, dot.tk_file, dot.tk_line, ap);
-               /* _error(DO_DEBUG, NILEXPR, ap);
-               */
        }
        va_end(ap);
 }
@@ -162,8 +160,6 @@ warning(va_alist)
        va_start(ap);
        {
                _error(WARNING, dot.tk_file, dot.tk_line, ap);
-               /* _error(WARNING, NILEXPR, ap);
-               */
        }
        va_end(ap);
 }
index 1e0639c..2e09236 100644 (file)
@@ -35,6 +35,7 @@ int idfsize = IDFSIZE;
 extern char options[];
 extern arith NewLocal();
 extern char *symbol2str();
+extern char *sprint();
 
 char sp_occurred[SP_TOTAL+1];  /* indicate occurrence of special id    */
 
index 96bb981..1d4e663 100644 (file)
@@ -15,6 +15,8 @@
 #include       "macro.h"
 #include       "idf.h"
 
+extern char *sprint();
+
 struct mkey    {
        char *mk_reserved;
        int mk_key;
index f59e218..02e7a34 100644 (file)
@@ -28,6 +28,7 @@
 #define        C_lin(c)
 #define        C_loi(c)
 #define        C_lol(c)
+#define        C_ret(c)
 #define        C_sdl(c)
 #define        C_sti(c)
 #define        C_stl(c)
@@ -72,4 +73,5 @@
 #define        C_ms_gto()
 #define        C_ms_par(b)
 #define        C_ms_reg(o,s,t,c)
+#define        C_ms_err()
 
index 6e20b64..af1f04c 100644 (file)
@@ -56,10 +56,10 @@ add_proto(pl, ds, dc, lvl)
        int lvl;
 {
        /*      The full typed identifier or abstract type, described
-               by the structures decspecs and declarator are turned
+               by the structures decspecs and declarator is turned
                a into parameter type list structure.
                The parameters will be declared at level L_FORMAL2,
-               later on it's decided whether they were prototypes
+               later on it will decided whether they were prototypes
                or actual declarations.
        */
        register struct idf *idf = dc->dc_idf;
@@ -132,7 +132,7 @@ add_proto(pl, ds, dc, lvl)
                newdef->df_file = idf->id_file;
                newdef->df_line = idf->id_line;
 #ifdef LINT
-               newdef->df_set = (type->tp_fund == ARRAY);
+               newdef->df_set = 0;
                /* newdef->df_firstbrace = 0; */
 #endif
                /*      We can't put the idf onto the stack, since these kinds
@@ -168,8 +168,8 @@ add_proto(pl, ds, dc, lvl)
 
 struct tag *
 gettag(tp, idpp)
-struct type *tp;
-struct idf **idpp;
+       struct type *tp;
+       struct idf **idpp;
 {
        struct tag *tg = (struct tag *)0;
        register int fund = tp->tp_fund;
@@ -242,6 +242,11 @@ declare_protos(dc)
                                continue;
                        }
 
+                       /*      Postponed storage class checking.
+                       */
+                       if (def->df_sc == 0)
+                               error("illegal storage class in parameter declaration");
+
                        def->df_level = L_FORMAL2;
                        stack_idf(pl->pl_idf, stl);
                        pl = pl->next;
@@ -312,7 +317,7 @@ update_proto(tp, otp)
  * remove them from the symbol-table
  */
 remove_proto_tag(tp)
-struct type *tp;
+       struct type *tp;
 {
        register struct idf *ident;
        register struct tag *tgp, **tgpp;
@@ -384,7 +389,7 @@ call_proto(expp)
 {
        /*      If the function specified by (*expp)->OP_LEFT has a prototype,
                the parameters are converted according the rules specified in
-               par. 3.3.2.2. E.i. the parameters are converted to the prototype
+               par. 3.3.2.2. I.e., the parameters are converted to the prototype
                counter parts as if by assignment. For the parameters falling
                under ellipsis clause the old parameters conversion stuff
                applies.