2012-12-05 Thomas Quinot <quinot@adacore.com>
+ * exp_dist.adb (Build_From_Any_Call, Build_To_Any_Call,
+ Build_TypeCode_Call): For a used-defined subtype, always go to
+ the first subtype of the base type.
+
+2012-12-05 Thomas Quinot <quinot@adacore.com>
+
* exp_dist.adb: Minor reformatting.
2012-12-05 Tristan Gingold <gingold@adacore.com>
Fnam : out Entity_Id);
-- Build TypeCode attribute function for Typ. Loc is the reference
-- location for generated nodes, Typ is the type for which the
- -- conversion function is generated. On return, Decl and Fnam contain
+ -- typecode function is generated. On return, Decl and Fnam contain
-- the declaration and entity for the newly-created function.
procedure Build_Name_And_Repository_Id
if Sloc (U_Type) <= Standard_Location then
U_Type := Base_Type (U_Type);
+
+ -- For a user subtype, go to first subtype
+
+ elsif Comes_From_Source (U_Type)
+ and then Nkind (Declaration_Node (U_Type))
+ = N_Subtype_Declaration
+ then
+ U_Type := First_Subtype (U_Type);
end if;
-- Check first for Boolean and Character. These are enumeration
if Sloc (U_Type) <= Standard_Location then
U_Type := Base_Type (U_Type);
+
+ -- For a user subtype, go to first subtype
+
+ elsif Comes_From_Source (U_Type)
+ and then Nkind (Declaration_Node (U_Type))
+ = N_Subtype_Declaration
+ then
+ U_Type := First_Subtype (U_Type);
end if;
if Present (Fnam) then
if Sloc (U_Type) <= Standard_Location then
U_Type := Base_Type (U_Type);
+
+ -- For a user subtype, go to first subtype
+
+ elsif Comes_From_Source (U_Type)
+ and then Nkind (Declaration_Node (U_Type))
+ = N_Subtype_Declaration
+ then
+ U_Type := First_Subtype (U_Type);
end if;
if No (Fnam) then
-- Return_Alias_TypeCode --
---------------------------
- procedure Return_Alias_TypeCode
- (Base_TypeCode : Node_Id)
- is
+ procedure Return_Alias_TypeCode (Base_TypeCode : Node_Id) is
begin
Add_TypeCode_Parameter (Base_TypeCode, Parameters);
Return_Constructed_TypeCode (RTE (RE_TC_Alias));