[Ada] Handle iterator filters on loop specifications over containers

gcc/ada/

	* sem_ch5.adb (Analyze_Iterator_Specification): If iterator
	filter is present, preanalyze filter without expansion.
	(Analyze_Loop_Parameter_Specification): When
	loop_Parameter_Specification is rewritten as
	Iterator_Specification, transfer Iterator_Filter if present.
This commit is contained in:
Ed Schonberg 2020-11-28 10:19:47 -05:00 committed by Pierre-Marie de Rodat
parent aa44eaca60
commit d1d0c4c800

View file

@ -2620,7 +2620,10 @@ package body Sem_Ch5 is
end if;
if Present (Iterator_Filter (N)) then
Analyze_And_Resolve (Iterator_Filter (N), Standard_Boolean);
-- Preanalyze the filter. Expansion will take place when enclosing
-- loop is expanded.
Preanalyze_And_Resolve (Iterator_Filter (N), Standard_Boolean);
end if;
end Analyze_Iterator_Specification;
@ -3017,6 +3020,9 @@ package body Sem_Ch5 is
begin
Set_Iterator_Specification (Scheme, I_Spec);
Set_Loop_Parameter_Specification (Scheme, Empty);
Set_Iterator_Filter (I_Spec,
Relocate_Node (Iterator_Filter (N)));
Analyze_Iterator_Specification (I_Spec);
-- In a generic context, analyze the original domain of