sem_ch13.adb: Improve error recovery on illegal aspect.
2014-10-20 Ed Schonberg <schonberg@adacore.com> * sem_ch13.adb: Improve error recovery on illegal aspect. From-SVN: r216472
This commit is contained in:
parent
a9bbfbd052
commit
3e1862b1fd
|
@ -1,3 +1,7 @@
|
|||
2014-10-20 Ed Schonberg <schonberg@adacore.com>
|
||||
|
||||
* sem_ch13.adb: Improve error recovery on illegal aspect.
|
||||
|
||||
2014-10-20 Arnaud Charlet <charlet@adacore.com>
|
||||
|
||||
* set_targ.adb (Write_Target_Dependent_Values, Write_Line):
|
||||
|
|
|
@ -1119,33 +1119,39 @@ package body Sem_Ch13 is
|
|||
case A_Id is
|
||||
|
||||
-- For aspects whose expression is an optional Boolean, make
|
||||
-- the corresponding pragma at the freezing point.
|
||||
-- the corresponding pragma at the freeze point.
|
||||
|
||||
when Boolean_Aspects |
|
||||
Library_Unit_Aspects =>
|
||||
Make_Pragma_From_Boolean_Aspect (ASN);
|
||||
when Boolean_Aspects |
|
||||
Library_Unit_Aspects =>
|
||||
Make_Pragma_From_Boolean_Aspect (ASN);
|
||||
|
||||
-- Special handling for aspects that don't correspond to
|
||||
-- pragmas/attributes.
|
||||
|
||||
when Aspect_Default_Value |
|
||||
Aspect_Default_Component_Value =>
|
||||
Analyze_Aspect_Default_Value (ASN);
|
||||
when Aspect_Default_Value |
|
||||
Aspect_Default_Component_Value =>
|
||||
Analyze_Aspect_Default_Value (ASN);
|
||||
|
||||
-- Ditto for iterator aspects, because the corresponding
|
||||
-- attributes may not have been analyzed yet.
|
||||
|
||||
when Aspect_Constant_Indexing |
|
||||
Aspect_Variable_Indexing |
|
||||
Aspect_Default_Iterator |
|
||||
Aspect_Iterator_Element =>
|
||||
Analyze (Expression (ASN));
|
||||
when Aspect_Constant_Indexing |
|
||||
Aspect_Variable_Indexing |
|
||||
Aspect_Default_Iterator |
|
||||
Aspect_Iterator_Element =>
|
||||
Analyze (Expression (ASN));
|
||||
|
||||
when Aspect_Iterable =>
|
||||
Validate_Iterable_Aspect (E, ASN);
|
||||
if Etype (Expression (ASN)) = Any_Type then
|
||||
Error_Msg_NE
|
||||
("\aspect must be fully defined before & is frozen",
|
||||
ASN, E);
|
||||
end if;
|
||||
|
||||
when others =>
|
||||
null;
|
||||
when Aspect_Iterable =>
|
||||
Validate_Iterable_Aspect (E, ASN);
|
||||
|
||||
when others =>
|
||||
null;
|
||||
end case;
|
||||
|
||||
Ritem := Aspect_Rep_Item (ASN);
|
||||
|
@ -3901,6 +3907,9 @@ package body Sem_Ch13 is
|
|||
Ctrl := Etype (First_Formal (Subp));
|
||||
end if;
|
||||
|
||||
-- Type of formal may be the class-wide type, an access to such,
|
||||
-- or an incomplete view.
|
||||
|
||||
if Ctrl = Ent
|
||||
or else Ctrl = Class_Wide_Type (Ent)
|
||||
or else
|
||||
|
@ -3908,6 +3917,9 @@ package body Sem_Ch13 is
|
|||
and then (Designated_Type (Ctrl) = Ent
|
||||
or else
|
||||
Designated_Type (Ctrl) = Class_Wide_Type (Ent)))
|
||||
or else
|
||||
(Ekind (Ctrl) = E_Incomplete_Type
|
||||
and then Full_View (Ctrl) = Ent)
|
||||
then
|
||||
null;
|
||||
else
|
||||
|
|
Loading…
Reference in New Issue