On Mon, Aug 31, 2009 at 09:04:54PM +0200, Kamil Dudka wrote: > On Monday 31 of August 2009 20:49:00 Stephen Hemminger wrote: > > > But it might be good idea to implement such out-of-range detection ;-) > > > > Yes, I was looking to use more enum's in places where int was used in the > > kernel. There were places where the interface expected a limit range of > > values like network device transmit, but the interface was being misused > > and caller was returning errno values. > > Generally you can't simply check if the value is in a *range* since the enum > values could be non-continuous. You need to check for all continuous > sub-ranges or even for all values. > > What about issuing a warning for any assignment of int value to enum? (as it > is already checked by a C++ compiler) Such places are IMHO always suspicious. > If you know what you are doing you can still cast it explicitly to avoid such > warning. That seems quite sensible, and it even seems like something sparse should warn about by default. The reverse, warning about the assignment of an enum value to int, seems useful as well, but sparse shouldn't issue that warning by default because a lot of code just uses enum to define constants. Distinguishing between anonymous and named enums seems useful as well. An anonymous enum just creates some named constants but doesn't create a type to use them with, so assigning those constants to int shouldn't generate a warning. (Corner case: "enum { ... } foo;".) - Josh Triplett -- To unsubscribe from this list: send the line "unsubscribe linux-sparse" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html