From: Ed Schonberg Date: Thu, 31 Jul 2014 13:24:48 +0000 (+0000) Subject: sem_attr.adb (Analyze_Attribute, case 'Old): The reference is legal if within an... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=f4510e5e6dcb5fe385e5e636a95f87b2a8209361;p=gcc.git sem_attr.adb (Analyze_Attribute, case 'Old): The reference is legal if within an aspect specification for a generic subprogram. 2014-07-31 Ed Schonberg * sem_attr.adb (Analyze_Attribute, case 'Old): The reference is legal if within an aspect specification for a generic subprogram. From-SVN: r213362 --- diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 1c684825746..41f233cd27c 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,8 @@ +2014-07-31 Ed Schonberg + + * sem_attr.adb (Analyze_Attribute, case 'Old): The reference is + legal if within an aspect specification for a generic subprogram. + 2014-07-31 Javier Miranda * gnat1drv.adb (Back_End_Inlining): Set to false if diff --git a/gcc/ada/sem_attr.adb b/gcc/ada/sem_attr.adb index 88c3c5d6e27..951ec06e463 100644 --- a/gcc/ada/sem_attr.adb +++ b/gcc/ada/sem_attr.adb @@ -4664,7 +4664,10 @@ package body Sem_Attr is -- process of being preanalyzed. Perform the semantic checks now -- before the pragma is relocated and/or expanded. - if In_Spec_Expression then + -- For a generic subprogram, postconditions are preanalyzed as well + -- for name capture, and still appear within an aspect spec. + + if In_Spec_Expression or Inside_A_Generic then Prag := N; while Present (Prag) and then not Nkind_In (Prag, N_Aspect_Specification, @@ -4677,10 +4680,11 @@ package body Sem_Attr is end loop; -- In ASIS mode, the aspect itself is analyzed, in addition to the - -- corresponding pragma. Do not issue errors when analyzing the - -- aspect. + -- corresponding pragma. Don't issue errors when analyzing aspect. - if Nkind (Prag) = N_Aspect_Specification then + if Nkind (Prag) = N_Aspect_Specification + and then Chars (Identifier (Prag)) = Name_Post + then null; -- In all other cases the related context must be a pragma