A generic subprogram is never a primitive operation, and thus a classwide condition for it is not legal. This patch diagnoses such an illegal class- wide condition properly.
Example in ACATS test B611003 Tested on x86_64-pc-linux-gnu, committed on trunk 2016-04-27 Ed Schonberg <schonb...@adacore.com> * sem_prag.adb (Analyze_Pre_Post_Condition_In_Decl_Part): A generic subprogram is never a primitive operation, and thus a classwide condition for it is not legal.
Index: sem_prag.adb =================================================================== --- sem_prag.adb (revision 235481) +++ sem_prag.adb (working copy) @@ -23319,11 +23319,12 @@ if Class_Present (N) then -- Verify that a class-wide condition is legal, i.e. the operation is - -- a primitive of a tagged type. + -- a primitive of a tagged type. Note that a generic subprogram is + -- not a primitive operation. Disp_Typ := Find_Dispatching_Type (Spec_Id); - if No (Disp_Typ) then + if No (Disp_Typ) or else Is_Generic_Subprogram (Spec_Id) then Error_Msg_Name_1 := Original_Aspect_Pragma_Name (N); if From_Aspect_Specification (N) then