1entity bug is 2end entity; 3 4architecture a of bug is 5 type enum_t is (enum0, enum1); 6 subtype enum_subtype_t is enum_t; 7 8 type enum_vec_t is array (natural range <>) of enum_t; 9 function resolve_enum(values : enum_vec_t) return enum_t; 10 subtype resolved_enum_t is resolve_enum enum_t; 11 12 function resolve_enum(values : enum_vec_t) return enum_t is 13 begin 14 return values(0); 15 end; 16 17 function func return enum_t is 18 begin 19 return enum_subtype_t'low; 20 end; 21 22 function func2 return enum_t is 23 begin 24 return resolved_enum_t'high; 25 end; 26 27begin 28 29 main : process is 30 begin 31 -- Should both be optimised out during constant folding 32 assert func = enum_t'low; 33 assert func2 = enum_t'high; 34 wait; 35 end process; 36end; 37