+2011-08-03 Robert Dewar <dewar@adacore.com>
+
+ * exp_ch4.adb: Minor code cleanup.
+
+2011-08-03 Thomas Quinot <quinot@adacore.com>
+
+ * exp_dist.adb: Do not generate distribution stubs if serious errors
+ have been diagnosed.
+
+2011-08-03 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_ch4.adb (Try_Primitive_Operation): when checking the validity of
+ the first formal of a primitive operation, go to the base type to
+ handle properly an access to a derived type with constrained
+ discriminants.
+ * sem_type.adb (Disambiguate): an immediately visible operator hides a
+ user-defined function that is only use-visible.
+ * inline.adb: init procs are inlineable.
+
2011-08-03 Robert Dewar <dewar@adacore.com>
* sem_aggr.adb, sem_ch3.adb, lib.ads, gnatcmd.adb, prj-proc.adb,
if Disc = Entity (Selector_Name (N))
and then (Is_Entity_Name (Dval)
- or else Nkind (Dval) = N_Integer_Literal
- or else Is_Subtype_Declaration
- or else Is_Static_Expression (Dval))
+ or else Compile_Time_Known_Value (Dval)
+ or else Is_Subtype_Declaration)
then
-- Here we have the matching discriminant. Check for
-- the case of a discriminant of a component that is
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2010, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2011, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
with Atree; use Atree;
with Einfo; use Einfo;
with Elists; use Elists;
+with Errout; use Errout;
with Exp_Atag; use Exp_Atag;
with Exp_Disp; use Exp_Disp;
with Exp_Strm; use Exp_Strm;
pragma Warnings (Off, Subp_Str);
begin
+ if Serious_Errors_Detected /= 0 then
+ return;
+ end if;
+
Assign_Subprogram_Identifier
(Defining_Unit_Name (Spec), Current_Subprogram_Number, Subp_Str);
pragma Warnings (Off, Subp_Val);
begin
+ if Serious_Errors_Detected /= 0 then
+ return;
+ end if;
+
-- Build receiving stub
Current_Stubs :=
Proxy_Obj_Addr : Entity_Id;
begin
+ if Serious_Errors_Detected /= 0 then
+ return;
+ end if;
+
-- Build receiving stub
Current_Stubs :=
elsif not Is_Inlined (Pack)
and then
(not Has_Completion (E)
+ or else Is_Init_Proc (E)
or else Is_Expression_Function (E))
then
Set_Is_Inlined (Pack);
or else
(Ekind (Typ) = E_Anonymous_Access_Type
- and then Designated_Type (Typ) = Base_Type (Corr_Type));
+ and then
+ Base_Type (Designated_Type (Typ)) = Base_Type (Corr_Type));
end Valid_First_Argument_Of;
-- Start of processing for Try_Primitive_Operation
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2010, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2011, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
end if;
end;
+ -- An immediately visible operator hides a use-visible user-
+ -- defined operation. This disambiguation cannot take place
+ -- earlier because the visibility of the predefined operator
+ -- can only be established when operand types are known.
+
+ elsif Ekind (User_Subp) = E_Function
+ and then Ekind (Predef_Subp) = E_Operator
+ and then Nkind (N) in N_Op
+ and then not Is_Overloaded (Right_Opnd (N))
+ and then
+ Is_Immediately_Visible (Base_Type (Etype (Right_Opnd (N))))
+ and then Is_Potentially_Use_Visible (User_Subp)
+ then
+ if It2.Nam = Predef_Subp then
+ return It1;
+ else
+ return It2;
+ end if;
+
else
return No_Interp;
end if;