When resolving aspect expression, aspects CPU and Interrupt_Priority
should be handled like the aspect Priority; in particular, all these
expressions can reference discriminants of the annotated task type.
gcc/ada/
* sem_ch13.adb (Check_Aspect_At_End_Of_Declarations): Make
discriminants visible when analyzing aspect Interrupt_Priority.
(Freeze_Entity_Checks): Likewise.
(Resolve_Aspect_Expressions): Likewise for both aspects CPU and
Interrupt_Priority.
elsif A_Id in Aspect_CPU
| Aspect_Dynamic_Predicate
| Aspect_Ghost_Predicate
+ | Aspect_Interrupt_Priority
| Aspect_Predicate
| Aspect_Priority
| Aspect_Static_Predicate
if Get_Aspect_Id (Ritem) in Aspect_CPU
| Aspect_Dynamic_Predicate
| Aspect_Ghost_Predicate
+ | Aspect_Interrupt_Priority
| Aspect_Predicate
| Aspect_Static_Predicate
| Aspect_Priority
Set_Must_Not_Freeze (Expr);
Preanalyze_Spec_Expression (Expr, E);
- when Aspect_Priority =>
+ when Aspect_CPU
+ | Aspect_Interrupt_Priority
+ | Aspect_Priority
+ =>
Push_Type (E);
Preanalyze_Spec_Expression (Expr, Any_Integer);
Pop_Type (E);