Commit 05662a06 by Ed Schonberg Committed by Arnaud Charlet

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
parent d5e7854c
2016-10-12 Ed Schonberg <schonberg@adacore.com> 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 * sem_ch12.adb (Check_Formal_Package_Instance): Handle properly
an instance of a formal package with defaults, when defaulted an instance of a formal package with defaults, when defaulted
parameters include tagged private types and array types. parameters include tagged private types and array types.
......
...@@ -40,6 +40,7 @@ with Sem_Aux; use Sem_Aux; ...@@ -40,6 +40,7 @@ with Sem_Aux; use Sem_Aux;
with Sem_Ch6; use Sem_Ch6; with Sem_Ch6; use Sem_Ch6;
with Sem_Ch8; use Sem_Ch8; with Sem_Ch8; use Sem_Ch8;
with Sem_Ch12; use Sem_Ch12; with Sem_Ch12; use Sem_Ch12;
with Sem_Ch13; use Sem_Ch13;
with Sem_Disp; use Sem_Disp; with Sem_Disp; use Sem_Disp;
with Sem_Prag; use Sem_Prag; with Sem_Prag; use Sem_Prag;
with Sem_Util; use Sem_Util; with Sem_Util; use Sem_Util;
...@@ -408,6 +409,22 @@ package body Contracts is ...@@ -408,6 +409,22 @@ package body Contracts is
N_Task_Type_Declaration) N_Task_Type_Declaration)
then then
Analyze_Task_Contract (Defining_Entity (Decl)); 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; end if;
Next (Decl); Next (Decl);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment