-- Range checked equivalent of uint64_t;
type Nibble is range 0 .. 15 with Size => 64;
-- Every assignment is as if Value := (Value % 16);
type Wrapped_Nibble is mod 16;
type Small_Float is digits 4 range 0.0 .. 20.0 with Size => 32;
I agree that the subexpression issue is problematic, IIRC I thought this was checked in SPARK code, but I could be wrong. The big benefit is describing your intent and you know that the stored value is in range, though whether it went outside of that range in calculation might not be known. Another thing is that these types define 'First, 'Last, 'Pred, 'Succ, and 'Range attributes which you can use. for N of Nibble'Range loop
-- do something
end loop;
> the tool is so fricken slow.
How old is "old hardware"? I've had no issues running CLion on a 2020 M1 Macbook Air and a i5-10400 (Linux). These projects are only in the hundreds of thousands of lines of code though.
> The install is gigantic on disk, leading me to avoid it on my older machines where space is limited.
I found that by default toolbox likes to keep old versions of the IDEs available for rollback. I disabled that and reclaimed tens of GB across all the products I use.