exp_ch9.ads, [...] (Build_Wrapper_Spec): Use source line of primitive operation...

2009-04-29  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch9.ads, exp_ch9.adb (Build_Wrapper_Spec): Use source line of
	primitive operation, rather than source line of synchronized type, when
	building the wrapper for a primitive operation that overrides an
	operation inherited from a progenitor, to improve the error message on
	duplicate declarations.

	* sem_ch3.adb (Process_Full_View): Use new signature of
	Build_Wrapper_Spec.

From-SVN: r146961
This commit is contained in:
Ed Schonberg 2009-04-29 13:20:27 +00:00 committed by Arnaud Charlet
parent 7f7d37cbf1
commit eb9cb0fc5e
4 changed files with 36 additions and 25 deletions

View File

@ -1,3 +1,14 @@
2009-04-29 Ed Schonberg <schonberg@adacore.com>
* exp_ch9.ads, exp_ch9.adb (Build_Wrapper_Spec): Use source line of
primitive operation, rather than source line of synchronized type, when
building the wrapper for a primitive operation that overrides an
operation inherited from a progenitor, to improve the error message on
duplicate declarations.
* sem_ch3.adb (Process_Full_View): Use new signature of
Build_Wrapper_Spec.
2009-04-29 Robert Dewar <dewar@adacore.com>
* prj-nmsc.ads: Minor reformatting

View File

@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
-- Copyright (C) 1992-2008, Free Software Foundation, Inc. --
-- Copyright (C) 1992-2009, 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- --
@ -1599,7 +1599,7 @@ package body Exp_Ch9 is
Body_Spec : Node_Id;
begin
Body_Spec := Build_Wrapper_Spec (Loc, Subp_Id, Obj_Typ, Formals);
Body_Spec := Build_Wrapper_Spec (Subp_Id, Obj_Typ, Formals);
-- The subprogram is not overriding or is not a primitive declared
-- between two views.
@ -1776,11 +1776,11 @@ package body Exp_Ch9 is
------------------------
function Build_Wrapper_Spec
(Loc : Source_Ptr;
Subp_Id : Entity_Id;
(Subp_Id : Entity_Id;
Obj_Typ : Entity_Id;
Formals : List_Id) return Node_Id
is
Loc : constant Source_Ptr := Sloc (Subp_Id);
First_Param : Node_Id;
Iface : Entity_Id;
Iface_Elmt : Elmt_Id;
@ -2147,18 +2147,18 @@ package body Exp_Ch9 is
and then Ekind (Defining_Identifier (Decl)) = E_Entry
then
Wrap_Spec :=
Build_Wrapper_Spec (Loc,
Subp_Id => Defining_Identifier (Decl),
Obj_Typ => Rec_Typ,
Formals => Parameter_Specifications (Decl));
Build_Wrapper_Spec
(Subp_Id => Defining_Identifier (Decl),
Obj_Typ => Rec_Typ,
Formals => Parameter_Specifications (Decl));
elsif Nkind (Decl) = N_Subprogram_Declaration then
Wrap_Spec :=
Build_Wrapper_Spec (Loc,
Subp_Id => Defining_Unit_Name (Specification (Decl)),
Obj_Typ => Rec_Typ,
Formals =>
Parameter_Specifications (Specification (Decl)));
Build_Wrapper_Spec
(Subp_Id => Defining_Unit_Name (Specification (Decl)),
Obj_Typ => Rec_Typ,
Formals =>
Parameter_Specifications (Specification (Decl)));
end if;
if Present (Wrap_Spec) then

View File

@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
-- Copyright (C) 1992-2008, Free Software Foundation, Inc. --
-- Copyright (C) 1992-2009, 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- --
@ -154,8 +154,7 @@ package Exp_Ch9 is
-- Build_Task_Allocate_Block.
function Build_Wrapper_Spec
(Loc : Source_Ptr;
Subp_Id : Entity_Id;
(Subp_Id : Entity_Id;
Obj_Typ : Entity_Id;
Formals : List_Id) return Node_Id;
-- Ada 2005 (AI-345): Build the specification of a primitive operation
@ -203,7 +202,9 @@ package Exp_Ch9 is
-- routine to make sure Complete_Master is called on exit).
procedure Expand_Access_Protected_Subprogram_Type (N : Node_Id);
-- Build Equivalent_Type for an Access_to_protected_Subprogram
-- Build Equivalent_Type for an Access_To_Protected_Subprogram.
-- Equivalent_Type is a record type with two components: a pointer
-- to the protected object, and a pointer to the operation itself.
procedure Expand_Accept_Declarations (N : Node_Id; Ent : Entity_Id);
-- Expand declarations required for accept statement. See bodies of

View File

@ -16262,7 +16262,6 @@ package body Sem_Ch3 is
declare
Conc_Typ : constant Entity_Id :=
Corresponding_Record_Type (Full_T);
Loc : constant Source_Ptr := Sloc (Conc_Typ);
Curr_Nod : Node_Id := Parent (Conc_Typ);
Wrap_Spec : Node_Id;
@ -16274,14 +16273,14 @@ package body Sem_Ch3 is
and then not Is_Abstract_Subprogram (Prim)
then
Wrap_Spec :=
Make_Subprogram_Declaration (Loc,
Make_Subprogram_Declaration (Sloc (Prim),
Specification =>
Build_Wrapper_Spec (Loc,
Subp_Id => Prim,
Obj_Typ => Conc_Typ,
Formals =>
Parameter_Specifications (
Parent (Prim))));
Build_Wrapper_Spec
(Subp_Id => Prim,
Obj_Typ => Conc_Typ,
Formals =>
Parameter_Specifications (
Parent (Prim))));
Insert_After (Curr_Nod, Wrap_Spec);
Curr_Nod := Wrap_Spec;