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  <schonberg@adacore.com>

	* sem_attr.adb (Analyze_Attribute, case 'Old):  The reference is
	legal if within an aspect specification for a generic subprogram.

From-SVN: r213362
This commit is contained in:
Ed Schonberg 2014-07-31 13:24:48 +00:00 committed by Arnaud Charlet
parent d7a93e4528
commit f4510e5e6d
2 changed files with 13 additions and 4 deletions

View File

@ -1,3 +1,8 @@
2014-07-31 Ed Schonberg <schonberg@adacore.com>
* 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 <miranda@adacore.com> 2014-07-31 Javier Miranda <miranda@adacore.com>
* gnat1drv.adb (Back_End_Inlining): Set to false if * gnat1drv.adb (Back_End_Inlining): Set to false if

View File

@ -4664,7 +4664,10 @@ package body Sem_Attr is
-- process of being preanalyzed. Perform the semantic checks now -- process of being preanalyzed. Perform the semantic checks now
-- before the pragma is relocated and/or expanded. -- 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; Prag := N;
while Present (Prag) while Present (Prag)
and then not Nkind_In (Prag, N_Aspect_Specification, and then not Nkind_In (Prag, N_Aspect_Specification,
@ -4677,10 +4680,11 @@ package body Sem_Attr is
end loop; end loop;
-- In ASIS mode, the aspect itself is analyzed, in addition to the -- In ASIS mode, the aspect itself is analyzed, in addition to the
-- corresponding pragma. Do not issue errors when analyzing the -- corresponding pragma. Don't issue errors when analyzing aspect.
-- aspect.
if Nkind (Prag) = N_Aspect_Specification then if Nkind (Prag) = N_Aspect_Specification
and then Chars (Identifier (Prag)) = Name_Post
then
null; null;
-- In all other cases the related context must be a pragma -- In all other cases the related context must be a pragma