gcc/ada/
* sem_attr.adb (Analyze_Attribute, case Type_Key): Attribute can
be applied to a formal type.
* sem_ch5.adb (Analyze_Case_Statement): If Extensions_Allowed is
not enabled, verify that the type of the expression is discrete.
Initialize (CRC);
Compute_Type_Key (Entity (P));
- if not Is_Frozen (Entity (P)) then
+ if not Is_Frozen (Entity (P))
+ and then not Is_Generic_Type (Entity (P))
+ then
Error_Msg_N ("premature usage of Type_Key?", N);
end if;
Error_Msg_N
("(Ada 83) case expression cannot be of a generic type", Exp);
return;
+
+ elsif not Extensions_Allowed
+ and then not Is_Discrete_Type (Exp_Type)
+ then
+ Error_Msg_N
+ ("expression in case statement must be of a discrete_Type", Exp);
+ return;
end if;
-- If the case expression is a formal object of mode in out, then treat