Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!mnetor!seismo!ut-sally!pyramid!decwrl!sun!guy From: guy@sun.uucp (Guy Harris) Newsgroups: net.lang.c Subject: Re: enum function bug? Message-ID: <7198@sun.uucp> Date: Fri, 12-Sep-86 05:33:32 EDT Article-I.D.: sun.7198 Posted: Fri Sep 12 05:33:32 1986 Date-Received: Fri, 12-Sep-86 22:22:18 EDT References: <299@sdchema.sdchem.UUCP> Distribution: na Organization: Sun Microsystems, Inc. Lines: 23 > I want to pass a > pointer to function returning "bool" > to a function, but lint says I'm not doing it right. I think I am, > aren't I? ... Is this a bug? Yes, and yes. PCC converts "enum"s into "char"s, "short"s, or "int"s at a fairly early stage in its processing. Unfortunately, this means "lint" does also. As such, "pointer to function returning enum" gets converted to "pointer to function returning char/short/int", which collides with the formal argument of "f". In this particular case, I tried it and it gave the errors listed; I changed the function pointer declarations to "int (*xx)()" and it passed. The fix is not to convert "enum"s in that fashion in "lint", and fix pass 2 to check that enum formal arguments match the actual arguments used. You can tell the parts of the language that were added later; the front end of PCC doesn't really handle them right. -- Guy Harris {ihnp4, decvax, seismo, decwrl, ...}!sun!guy guy@sun.com (or guy@sun.arpa)