From 05662a060a8b17e077c58ce1867fcecf82bd31ff Mon Sep 17 00:00:00 2001 From: Ed Schonberg Date: Wed, 12 Oct 2016 10:38:17 +0000 Subject: [PATCH] contracts.adb (Analyze_Contracts): For a type declaration, analyze an iterable aspect when present. 2016-10-12 Ed Schonberg * contracts.adb (Analyze_Contracts): For a type declaration, analyze an iterable aspect when present. From-SVN: r241028 --- gcc/ada/ChangeLog | 5 +++++ gcc/ada/contracts.adb | 17 +++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 350fc3ef5fa..ad188a70e1b 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,8 @@ +2016-10-12 Ed Schonberg + + * contracts.adb (Analyze_Contracts): For a type declaration, analyze + an iterable aspect when present. + 2016-10-12 Ed Schonberg * sem_ch12.adb (Check_Formal_Package_Instance): Handle properly diff --git a/gcc/ada/contracts.adb b/gcc/ada/contracts.adb index c85b650d66b..e26b28d832c 100644 --- a/gcc/ada/contracts.adb +++ b/gcc/ada/contracts.adb @@ -40,6 +40,7 @@ with Sem_Aux; use Sem_Aux; with Sem_Ch6; use Sem_Ch6; with Sem_Ch8; use Sem_Ch8; with Sem_Ch12; use Sem_Ch12; +with Sem_Ch13; use Sem_Ch13; with Sem_Disp; use Sem_Disp; with Sem_Prag; use Sem_Prag; with Sem_Util; use Sem_Util; @@ -408,6 +409,22 @@ package body Contracts is N_Task_Type_Declaration) then Analyze_Task_Contract (Defining_Entity (Decl)); + + -- For type declarations, we need to do the pre-analysis of + -- Iterable aspect specifications. + -- Other type aspects need to be resolved here??? + + elsif Nkind (Decl) = N_Private_Type_Declaration + and then Present (Aspect_Specifications (Decl)) + then + declare + E : constant Entity_Id := Defining_Identifier (Decl); + It : constant Node_Id := Find_Aspect (E, Aspect_Iterable); + begin + if Present (It) then + Validate_Iterable_Aspect (E, It); + end if; + end; end if; Next (Decl); -- 2.30.2