contracts.adb (Analyze_Contracts): For a type declaration, analyze an iterable aspect when present.

2016-10-12  Ed Schonberg  <schonberg@adacore.com>                    

	* contracts.adb (Analyze_Contracts): For a type declaration, analyze
	an iterable aspect when present.

From-SVN: r241028
This commit is contained in:
Ed Schonberg 2016-10-12 10:38:17 +00:00 committed by Arnaud Charlet
parent d5e7854c12
commit 05662a060a
2 changed files with 22 additions and 0 deletions

View File

@ -1,3 +1,8 @@
2016-10-12 Ed Schonberg <schonberg@adacore.com>
* contracts.adb (Analyze_Contracts): For a type declaration, analyze
an iterable aspect when present.
2016-10-12 Ed Schonberg <schonberg@adacore.com>
* sem_ch12.adb (Check_Formal_Package_Instance): Handle properly

View File

@ -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);