From f4510e5e6dcb5fe385e5e636a95f87b2a8209361 Mon Sep 17 00:00:00 2001 From: Ed Schonberg Date: Thu, 31 Jul 2014 13:24:48 +0000 Subject: [PATCH] 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 --- gcc/ada/ChangeLog | 5 +++++ gcc/ada/sem_attr.adb | 12 ++++++++---- 2 files changed, 13 insertions(+), 4 deletions(-) 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 -- 2.30.2