From: Ed Schonberg Date: Mon, 24 Feb 2014 16:56:25 +0000 (+0000) Subject: sem_ch5.adb (Analyze_Loop_Parameter_Specification): If the domain of iteration is... X-Git-Tag: releases/gcc-4.9.0~726 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=2810861847cca82646c1c7e14249fe198acbbc0f;p=thirdparty%2Fgcc.git sem_ch5.adb (Analyze_Loop_Parameter_Specification): If the domain of iteration is an attribute reference 'Old... 2014-02-24 Ed Schonberg * sem_ch5.adb (Analyze_Loop_Parameter_Specification): If the domain of iteration is an attribute reference 'Old, this is an Ada 2012 iterator and the loop must be rewritten as such. From-SVN: r208080 --- diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index e31ec1edf7ba..126bce34b054 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,9 @@ +2014-02-24 Ed Schonberg + + * sem_ch5.adb (Analyze_Loop_Parameter_Specification): If the + domain of iteration is an attribute reference 'Old, this is an + Ada 2012 iterator and the loop must be rewritten as such. + 2014-02-24 Thomas Quinot * s-fileio.adb (Errno_Message): Remove, use shared version from diff --git a/gcc/ada/sem_ch5.adb b/gcc/ada/sem_ch5.adb index 2126f7064091..ead28bff0ac7 100644 --- a/gcc/ada/sem_ch5.adb +++ b/gcc/ada/sem_ch5.adb @@ -2362,12 +2362,21 @@ package body Sem_Ch5 is Set_Parent (DS_Copy, Parent (DS)); Preanalyze_Range (DS_Copy); - -- Ada 2012: If the domain of iteration is a function call, it is the - -- new iterator form. + -- Ada 2012: If the domain of iteration is: + + -- a) a function call, + -- b) an identifier that is not a type, + -- c) an attribute reference 'Old (within a postcondition) + + -- then it is an iteration over a container. It was classified as + -- a loop specification by the parser, and must be rewritten now + -- to activate container iteration. if Nkind (DS_Copy) = N_Function_Call or else (Is_Entity_Name (DS_Copy) and then not Is_Type (Entity (DS_Copy))) + or else (Nkind (DS_Copy) = N_Attribute_Reference + and then Attribute_Name (DS_Copy) = Name_Old) then -- This is an iterator specification. Rewrite it as such and -- analyze it to capture function calls that may require