[Ada] Missing error on classwide precondition on a generic subprogram
Arnaud Charlet
charlet@adacore.com
Wed Apr 27 12:42:00 GMT 2016
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 <schonberg@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.
-------------- next part --------------
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
More information about the Gcc-patches
mailing list