[multiple changes]
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. From-SVN: r177253
This commit is contained in:
parent
e917aec294
commit
170b298986
@ -1,3 +1,22 @@
|
||||
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,
|
||||
|
@ -7764,9 +7764,8 @@ package body Exp_Ch4 is
|
||||
|
||||
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
|
||||
|
@ -6,7 +6,7 @@
|
||||
-- --
|
||||
-- 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- --
|
||||
@ -26,6 +26,7 @@
|
||||
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;
|
||||
@ -1029,6 +1030,10 @@ package body Exp_Dist is
|
||||
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);
|
||||
|
||||
@ -3836,6 +3841,10 @@ package body Exp_Dist is
|
||||
pragma Warnings (Off, Subp_Val);
|
||||
|
||||
begin
|
||||
if Serious_Errors_Detected /= 0 then
|
||||
return;
|
||||
end if;
|
||||
|
||||
-- Build receiving stub
|
||||
|
||||
Current_Stubs :=
|
||||
@ -6840,6 +6849,10 @@ package body Exp_Dist is
|
||||
Proxy_Obj_Addr : Entity_Id;
|
||||
|
||||
begin
|
||||
if Serious_Errors_Detected /= 0 then
|
||||
return;
|
||||
end if;
|
||||
|
||||
-- Build receiving stub
|
||||
|
||||
Current_Stubs :=
|
||||
|
@ -344,6 +344,7 @@ package body Inline is
|
||||
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);
|
||||
|
@ -7260,7 +7260,8 @@ package body Sem_Ch4 is
|
||||
|
||||
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
|
||||
|
@ -6,7 +6,7 @@
|
||||
-- --
|
||||
-- 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- --
|
||||
@ -1908,6 +1908,25 @@ package body Sem_Type is
|
||||
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;
|
||||
|
Loading…
Reference in New Issue
Block a user