This seems to be used in some resource files, e.g.
MSVC rc.exe and GNU windres both allow any value here, and silently
just truncate to uint16_t range. This just explicitly allows the
-1 value and errors out on others - the same was done for control
IDs in dialogs in c1a67857ba0a6ba558818b589fe7c0fcc8f238ae.
I presume there's other cases where seemingly out of range values are used, where rc.exe and GNU windres just allow them through, while llvm-rc strictly checks the range of all values - but these two are the ones I've run into so far...