end loop;
end if;
- -- If none of the above, the actual and nominal subtypes are the same.
+ -- If none of the above, the actual and nominal subtypes are the same
return Empty;
end Build_Actual_Subtype_Of_Component;
end loop;
end if;
- -- If none of the above, the actual and nominal subtypes are the same.
+ -- If none of the above, the actual and nominal subtypes are the same
return Empty;
end Build_Discriminal_Subtype_Of_Component;
return;
end if;
- -- Otherwise find a limited component
+ -- Otherwise find a limited component. Check only components that
+ -- come from source, or inherited components that appear in the
+ -- source of the ancestor.
C := First_Component (T);
while Present (C) loop
if Is_Limited_Type (Etype (C))
- and then Comes_From_Source (C)
+ and then
+ (Comes_From_Source (C)
+ or else
+ (Present (Original_Record_Component (C))
+ and then
+ Comes_From_Source (Original_Record_Component (C))))
then
Error_Msg_Node_2 := T;
Error_Msg_NE ("\component& of type& has limited type", N, C);
pragma Warnings (Off, Res);
function Internal_Full_Qualified_Name (E : Entity_Id) return String_Id;
- -- Compute recursively the qualified name without NUL at the end.
+ -- Compute recursively the qualified name without NUL at the end
----------------------------------
-- Internal_Full_Qualified_Name --
end if;
else
- -- N is an expression, indicating a range with one value.
+ -- N is an expression, indicating a range with one value
L := N;
H := N;
begin
if Is_Entity_Name (Obj) then
- -- Shouldn't we check that we really have an object here?
- -- If we do, then a-caldel.adb blows up mysteriously ???
-
E := Entity (Obj);
- return Is_Aliased (E)
- or else (Present (Renamed_Object (E))
- and then Is_Aliased_View (Renamed_Object (E)))
+ return
+ (Is_Object (E)
+ and then
+ (Is_Aliased (E)
+ or else (Present (Renamed_Object (E))
+ and then Is_Aliased_View (Renamed_Object (E)))))
or else ((Is_Formal (E)
or else Ekind (E) = E_Generic_In_Out_Parameter
or else Ekind (E) = E_Generic_In_Parameter)
and then Is_Tagged_Type (Etype (E)))
- or else ((Ekind (E) = E_Task_Type or else
- Ekind (E) = E_Protected_Type)
+ or else ((Ekind (E) = E_Task_Type
+ or else Ekind (E) = E_Protected_Type)
and then In_Open_Scopes (E))
-- Current instance of type
-- Determines if given object has atomic components
function Is_Atomic_Prefix (N : Node_Id) return Boolean;
- -- If prefix is an implicit dereference, examine designated type.
+ -- If prefix is an implicit dereference, examine designated type
function Is_Atomic_Prefix (N : Node_Id) return Boolean is
begin
-- that depends on a discriminant.
function Is_Declared_Within_Variant (Comp : Entity_Id) return Boolean;
- -- Returns True if and only if Comp is declared within a variant part.
+ -- Returns True if and only if Comp is declared within a variant part
------------------------------
-- Has_Dependent_Constraint --
if Etype (Indx) = Any_Type then
return False;
- -- If index is a range, use directly.
+ -- If index is a range, use directly
elsif Nkind (Indx) = N_Range then
Lbd := Low_Bound (Indx);
Into => Components,
Report_Errors => Report_Errors);
- -- Check that each component present is fully initialized.
+ -- Check that each component present is fully initialized
Comp_Elmt := First_Elmt (Components);
when N_Explicit_Dereference =>
return True;
- -- A view conversion of a tagged object is an object reference.
+ -- A view conversion of a tagged object is an object reference
when N_Type_Conversion =>
return Is_Tagged_Type (Etype (Subtype_Mark (N)))
-- Determines if given object has volatile components
function Is_Volatile_Prefix (N : Node_Id) return Boolean;
- -- If prefix is an implicit dereference, examine designated type.
+ -- If prefix is an implicit dereference, examine designated type
------------------------
-- Is_Volatile_Prefix --
begin
if No (Last) then
- -- Call node points to first actual in list.
+ -- Call node points to first actual in list
Set_First_Named_Actual (N, Explicit_Actual_Parameter (A));
elsif Actuals_To_Match > Formals_To_Match then
- -- Too many actuals: will not work.
+ -- Too many actuals: will not work
if Reporting then
if Is_Entity_Name (Name (N)) then
Component := First_Entity (Btype);
while Present (Component) loop
- -- skip anonymous types generated by constrained components.
+ -- Skip anonymous types generated by constrained components
if not Is_Type (Component) then
P := Trace_Components (Etype (Component), True);
N : Node_Id := Parent (Unit_Id);
begin
- -- Predefined operators do not have a full function declaration.
+ -- Predefined operators do not have a full function declaration
if Ekind (Unit_Id) = E_Operator then
return N;