Commit 499769ec by Arnaud Charlet

[multiple changes]

2011-08-02  Javier Miranda  <miranda@adacore.com>

	* sem_ch3.adb (Check_Anonymous_Access_Components): Create extra formals
	associated with anonymous access to subprograms.

2011-08-02  Geert Bosch  <bosch@adacore.com>

	* opt.ads
	(Preprocessing_Symbol_Defs): Move from Prepcomp.Symbol_Definitions.
	(Preprocessing_Symbol_Last): Move from Prepcomp.Last_Definition.
	* prepcomp.adb (Symbol_Definitions, Last_Definition): Move to opt.ads
	(Add_Symbol_Definition): Move to switch-c.adb
	(Process_Command_Line_Symbol_Definitions): Adjust references to above.
	* prepcomp.ads: Remove dependency on Ada.Unchecked_Deallocation.
	(Add_Symbol_Definition): Move to switch-c.adb.
	* sem_ch13.adb, sem_prag.adb: Add dependency on Warnsw.
	* sem_warn.adb
	(Set_Dot_Warning_Switch, Set_GNAT_Mode_Warnings, Set_Warning_Switch):
	Move to warnsw.adb.
	* sem_warn.ads (Warn_On_Record_Holes, Warn_On_Overridden_Size,
	Set_Dot_Warning_Switch, Set_GNAT_Mode_Warnings, Set_Warning_Switch):
	Move to warnsw.adb.
	* switch-c.adb: Replace dependency on Prepcomp and Sem_Warn by Warnsw.
	(Add_Symbol_Definition): Moved from Prepcomp.
	* switch-c.ads: Update copyright notice. Use String_List instead of
	Argument_List, removing dependency on System.OS_Lib.

From-SVN: r177140
parent aa1e353a
2011-08-02 Javier Miranda <miranda@adacore.com>
* sem_ch3.adb (Check_Anonymous_Access_Components): Create extra formals
associated with anonymous access to subprograms.
2011-08-02 Geert Bosch <bosch@adacore.com>
* opt.ads
(Preprocessing_Symbol_Defs): Move from Prepcomp.Symbol_Definitions.
(Preprocessing_Symbol_Last): Move from Prepcomp.Last_Definition.
* prepcomp.adb (Symbol_Definitions, Last_Definition): Move to opt.ads
(Add_Symbol_Definition): Move to switch-c.adb
(Process_Command_Line_Symbol_Definitions): Adjust references to above.
* prepcomp.ads: Remove dependency on Ada.Unchecked_Deallocation.
(Add_Symbol_Definition): Move to switch-c.adb.
* sem_ch13.adb, sem_prag.adb: Add dependency on Warnsw.
* sem_warn.adb
(Set_Dot_Warning_Switch, Set_GNAT_Mode_Warnings, Set_Warning_Switch):
Move to warnsw.adb.
* sem_warn.ads (Warn_On_Record_Holes, Warn_On_Overridden_Size,
Set_Dot_Warning_Switch, Set_GNAT_Mode_Warnings, Set_Warning_Switch):
Move to warnsw.adb.
* switch-c.adb: Replace dependency on Prepcomp and Sem_Warn by Warnsw.
(Add_Symbol_Definition): Moved from Prepcomp.
* switch-c.ads: Update copyright notice. Use String_List instead of
Argument_List, removing dependency on System.OS_Lib.
2011-08-02 Yannick Moy <moy@adacore.com> 2011-08-02 Yannick Moy <moy@adacore.com>
* sem_ch3.adb (Analyze_Object_Declaration): issue an error in formal * sem_ch3.adb (Analyze_Object_Declaration): issue an error in formal
......
...@@ -1077,6 +1077,13 @@ package Opt is ...@@ -1077,6 +1077,13 @@ package Opt is
-- GNAT -- GNAT
-- Set by switch -gnatep=. The file name of the preprocessing data file. -- Set by switch -gnatep=. The file name of the preprocessing data file.
Preprocessing_Symbol_Defs : String_List_Access := new String_List (1 .. 4);
-- An extensible array to temporarily stores symbol definitions specified
-- on the command line with -gnateD switches.
Preprocessing_Symbol_Last : Natural := 0;
-- Index of last symbol definition in array Symbol_Definitions
Print_Generated_Code : Boolean := False; Print_Generated_Code : Boolean := False;
-- GNAT -- GNAT
-- Set to True to enable output of generated code in source form. This -- Set to True to enable output of generated code in source form. This
......
...@@ -23,8 +23,6 @@ ...@@ -23,8 +23,6 @@
-- -- -- --
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
with Ada.Unchecked_Deallocation;
with Errout; use Errout; with Errout; use Errout;
with Lib.Writ; use Lib.Writ; with Lib.Writ; use Lib.Writ;
with Opt; use Opt; with Opt; use Opt;
...@@ -55,20 +53,6 @@ package body Prepcomp is ...@@ -55,20 +53,6 @@ package body Prepcomp is
No_Mapping : Prep.Symbol_Table.Instance; No_Mapping : Prep.Symbol_Table.Instance;
pragma Warnings (On); pragma Warnings (On);
type String_Ptr is access String;
type String_Array is array (Positive range <>) of String_Ptr;
type String_Array_Ptr is access String_Array;
procedure Free is
new Ada.Unchecked_Deallocation (String_Array, String_Array_Ptr);
Symbol_Definitions : String_Array_Ptr := new String_Array (1 .. 4);
-- An extensible array to temporarily stores symbol definitions specified
-- on the command line with -gnateD switches.
Last_Definition : Natural := 0;
-- Index of last symbol definition in array Symbol_Definitions
type Preproc_Data is record type Preproc_Data is record
Mapping : Symbol_Table.Instance; Mapping : Symbol_Table.Instance;
File_Name : File_Name_Type := No_File; File_Name : File_Name_Type := No_File;
...@@ -161,31 +145,6 @@ package body Prepcomp is ...@@ -161,31 +145,6 @@ package body Prepcomp is
end loop; end loop;
end Add_Dependencies; end Add_Dependencies;
---------------------------
-- Add_Symbol_Definition --
---------------------------
procedure Add_Symbol_Definition (Def : String) is
begin
-- If Symbol_Definitions is not large enough, double it
if Last_Definition = Symbol_Definitions'Last then
declare
New_Symbol_Definitions : constant String_Array_Ptr :=
new String_Array (1 .. 2 * Last_Definition);
begin
New_Symbol_Definitions (Symbol_Definitions'Range) :=
Symbol_Definitions.all;
Free (Symbol_Definitions);
Symbol_Definitions := New_Symbol_Definitions;
end;
end if;
Last_Definition := Last_Definition + 1;
Symbol_Definitions (Last_Definition) := new String'(Def);
end Add_Symbol_Definition;
------------------- -------------------
-- Check_Symbols -- -- Check_Symbols --
------------------- -------------------
...@@ -740,12 +699,12 @@ package body Prepcomp is ...@@ -740,12 +699,12 @@ package body Prepcomp is
-- The command line definitions have been stored temporarily in -- The command line definitions have been stored temporarily in
-- array Symbol_Definitions. -- array Symbol_Definitions.
for Index in 1 .. Last_Definition loop for Index in 1 .. Preprocessing_Symbol_Last loop
-- Check each symbol definition, fail immediately if syntax is not -- Check each symbol definition, fail immediately if syntax is not
-- correct. -- correct.
Check_Command_Line_Symbol_Definition Check_Command_Line_Symbol_Definition
(Definition => Symbol_Definitions (Index).all, (Definition => Preprocessing_Symbol_Defs (Index).all,
Data => Symbol_Data); Data => Symbol_Data);
Found := False; Found := False;
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- Copyright (C) 2002-2007, Free Software Foundation, Inc. -- -- Copyright (C) 2002-2010, Free Software Foundation, Inc. --
-- -- -- --
-- GNAT is free software; you can redistribute it and/or modify it under -- -- 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- -- -- terms of the GNU General Public License as published by the Free Soft- --
...@@ -33,10 +33,6 @@ package Prepcomp is ...@@ -33,10 +33,6 @@ package Prepcomp is
-- Add dependencies on the preprocessing data file and the -- Add dependencies on the preprocessing data file and the
-- preprocessing definition files, if any. -- preprocessing definition files, if any.
procedure Add_Symbol_Definition (Def : String);
-- Add a symbol definition from the command line.
-- Fail if definition is illegal.
procedure Check_Symbols; procedure Check_Symbols;
-- Check if there are preprocessing symbols on the command line and -- Check if there are preprocessing symbols on the command line and
-- set preprocessing if there are some: all files are preprocessed with -- set preprocessing if there are some: all files are preprocessed with
......
...@@ -60,6 +60,7 @@ with Targparm; use Targparm; ...@@ -60,6 +60,7 @@ with Targparm; use Targparm;
with Ttypes; use Ttypes; with Ttypes; use Ttypes;
with Tbuild; use Tbuild; with Tbuild; use Tbuild;
with Urealp; use Urealp; with Urealp; use Urealp;
with Warnsw; use Warnsw;
with GNAT.Heap_Sort_G; with GNAT.Heap_Sort_G;
......
...@@ -18760,7 +18760,7 @@ package body Sem_Ch3 is ...@@ -18760,7 +18760,7 @@ package body Sem_Ch3 is
-- an access_to_object or an access_to_subprogram. -- an access_to_object or an access_to_subprogram.
if Present (Acc_Def) then if Present (Acc_Def) then
if Nkind (Acc_Def) = N_Access_Function_Definition then if Nkind (Acc_Def) = N_Access_Function_Definition then
Type_Def := Type_Def :=
Make_Access_Function_Definition (Loc, Make_Access_Function_Definition (Loc,
Parameter_Specifications => Parameter_Specifications =>
...@@ -18799,10 +18799,15 @@ package body Sem_Ch3 is ...@@ -18799,10 +18799,15 @@ package body Sem_Ch3 is
Insert_Before (Typ_Decl, Decl); Insert_Before (Typ_Decl, Decl);
Analyze (Decl); Analyze (Decl);
-- If an access to object, Preserve entity of designated type, -- If an access to subprogram, create the extra formals
if Present (Acc_Def) then
Create_Extra_Formals (Designated_Type (Anon_Access));
-- If an access to object, preserve entity of designated type,
-- for ASIS use, before rewriting the component definition. -- for ASIS use, before rewriting the component definition.
if No (Acc_Def) then else
declare declare
Desig : Entity_Id; Desig : Entity_Id;
......
...@@ -84,6 +84,7 @@ with Uintp; use Uintp; ...@@ -84,6 +84,7 @@ with Uintp; use Uintp;
with Uname; use Uname; with Uname; use Uname;
with Urealp; use Urealp; with Urealp; use Urealp;
with Validsw; use Validsw; with Validsw; use Validsw;
with Warnsw; use Warnsw;
package body Sem_Prag is package body Sem_Prag is
......
...@@ -33,26 +33,6 @@ with Types; use Types; ...@@ -33,26 +33,6 @@ with Types; use Types;
package Sem_Warn is package Sem_Warn is
-------------------
-- Warning Flags --
-------------------
-- These flags are activated or deactivated by -gnatw switches and control
-- whether warnings of a given class will be generated or not.
-- Note: most of these flags are still in opt, but the plan is to move them
-- here as time goes by.
Warn_On_Record_Holes : Boolean := False;
-- Warn when explicit record component clauses leave uncovered holes (gaps)
-- in a record layout. Off by default, set by -gnatw.h (but not -gnatwa).
Warn_On_Overridden_Size : Boolean := False;
-- Warn when explicit record component clause or array component_size
-- clause specifies a size that overrides a size for the type which was
-- set with an explicit size clause. Off by default, set by -gnatw.s (but
-- not -gnatwa).
------------------------ ------------------------
-- Warnings Off Table -- -- Warnings Off Table --
------------------------ ------------------------
...@@ -85,22 +65,6 @@ package Sem_Warn is ...@@ -85,22 +65,6 @@ package Sem_Warn is
procedure Initialize; procedure Initialize;
-- Initialize this package for new compilation -- Initialize this package for new compilation
function Set_Warning_Switch (C : Character) return Boolean;
-- This function sets the warning switch or switches corresponding to the
-- given character. It is used to process a -gnatw switch on the command
-- line, or a character in a string literal in pragma Warnings. Returns
-- True for valid warning character C, False for invalid character.
function Set_Dot_Warning_Switch (C : Character) return Boolean;
-- This function sets the warning switch or switches corresponding to the
-- given character preceded by a dot. Used to process a -gnatw. switch on
-- the command line or .C in a string literal in pragma Warnings. Returns
-- True for valid warning character C, False for invalid character.
procedure Set_GNAT_Mode_Warnings;
-- This is called in -gnatg mode to set the warnings for gnat mode. It is
-- also used to set the proper warning statuses for -gnatw.g.
------------------------------------------ ------------------------------------------
-- Routines to Handle Unused References -- -- Routines to Handle Unused References --
------------------------------------------ ------------------------------------------
......
...@@ -23,16 +23,18 @@ ...@@ -23,16 +23,18 @@
-- -- -- --
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
-- This package is for switch processing and should not depend on higher level
-- packages such as those for the scanner, parser, etc. Doing so may cause
-- circularities, especially for back ends using Adabkend.
with Debug; use Debug; with Debug; use Debug;
with Lib; use Lib; with Lib; use Lib;
with Osint; use Osint; with Osint; use Osint;
with Opt; use Opt; with Opt; use Opt;
with Prepcomp; use Prepcomp;
with Validsw; use Validsw; with Validsw; use Validsw;
with Sem_Warn; use Sem_Warn;
with Stylesw; use Stylesw; with Stylesw; use Stylesw;
with Warnsw; use Warnsw;
with System.Strings;
with System.WCh_Con; use System.WCh_Con; with System.WCh_Con; use System.WCh_Con;
package body Switch.C is package body Switch.C is
...@@ -40,9 +42,12 @@ package body Switch.C is ...@@ -40,9 +42,12 @@ package body Switch.C is
RTS_Specified : String_Access := null; RTS_Specified : String_Access := null;
-- Used to detect multiple use of --RTS= flag -- Used to detect multiple use of --RTS= flag
procedure Add_Symbol_Definition (Def : String);
-- Add a symbol definition from the command line
function Switch_Subsequently_Cancelled function Switch_Subsequently_Cancelled
(C : String; (C : String;
Args : Argument_List; Args : String_List;
Arg_Rank : Positive) return Boolean; Arg_Rank : Positive) return Boolean;
-- This function is called from Scan_Front_End_Switches. It determines if -- This function is called from Scan_Front_End_Switches. It determines if
-- the switch currently being scanned is followed by a switch of the form -- the switch currently being scanned is followed by a switch of the form
...@@ -50,13 +55,39 @@ package body Switch.C is ...@@ -50,13 +55,39 @@ package body Switch.C is
-- and Scan_Front_End_Switches will cancel the effect of the switch. If -- and Scan_Front_End_Switches will cancel the effect of the switch. If
-- no such switch is found, False is returned. -- no such switch is found, False is returned.
---------------------------
-- Add_Symbol_Definition --
---------------------------
procedure Add_Symbol_Definition (Def : String) is
begin
-- If Preprocessor_Symbol_Defs is not large enough, double its size
if Preprocessing_Symbol_Last = Preprocessing_Symbol_Defs'Last then
declare
New_Symbol_Definitions : constant String_List_Access :=
new String_List (1 .. 2 * Preprocessing_Symbol_Last);
begin
New_Symbol_Definitions (Preprocessing_Symbol_Defs'Range) :=
Preprocessing_Symbol_Defs.all;
Free (Preprocessing_Symbol_Defs);
Preprocessing_Symbol_Defs := New_Symbol_Definitions;
end;
end if;
Preprocessing_Symbol_Last := Preprocessing_Symbol_Last + 1;
Preprocessing_Symbol_Defs (Preprocessing_Symbol_Last)
:= new String'(Def);
end Add_Symbol_Definition;
----------------------------- -----------------------------
-- Scan_Front_End_Switches -- -- Scan_Front_End_Switches --
----------------------------- -----------------------------
procedure Scan_Front_End_Switches procedure Scan_Front_End_Switches
(Switch_Chars : String; (Switch_Chars : String;
Args : Argument_List; Args : String_List;
Arg_Rank : Positive) Arg_Rank : Positive)
is is
First_Switch : Boolean := True; First_Switch : Boolean := True;
...@@ -1157,11 +1188,9 @@ package body Switch.C is ...@@ -1157,11 +1188,9 @@ package body Switch.C is
function Switch_Subsequently_Cancelled function Switch_Subsequently_Cancelled
(C : String; (C : String;
Args : Argument_List; Args : String_List;
Arg_Rank : Positive) return Boolean Arg_Rank : Positive) return Boolean
is is
use type System.Strings.String_Access;
begin begin
-- Loop through arguments following the current one -- Loop through arguments following the current one
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- Copyright (C) 2001-2009, Free Software Foundation, Inc. -- -- Copyright (C) 2001-2010, Free Software Foundation, Inc. --
-- -- -- --
-- GNAT is free software; you can redistribute it and/or modify it under -- -- 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- -- -- terms of the GNU General Public License as published by the Free Soft- --
...@@ -29,13 +29,13 @@ ...@@ -29,13 +29,13 @@
-- switches that are recognized. In addition, package Debug documents -- switches that are recognized. In addition, package Debug documents
-- the otherwise undocumented debug switches that are also recognized. -- the otherwise undocumented debug switches that are also recognized.
with System.OS_Lib; use System.OS_Lib; with System.Strings; use System.Strings;
package Switch.C is package Switch.C is
procedure Scan_Front_End_Switches procedure Scan_Front_End_Switches
(Switch_Chars : String; (Switch_Chars : String;
Args : Argument_List; Args : String_List;
Arg_Rank : Positive); Arg_Rank : Positive);
-- Procedures to scan out front end switches stored in the given string. -- Procedures to scan out front end switches stored in the given string.
-- The first character is known to be a valid switch character, and there -- The first character is known to be a valid switch character, and there
......
------------------------------------------------------------------------------
-- --
-- GNAT COMPILER COMPONENTS --
-- --
-- W A R N S W --
-- --
-- S p e c --
-- --
-- Copyright (C) 1999-2010, 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- --
-- ware Foundation; either version 3, or (at your option) any later ver- --
-- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
-- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License --
-- for more details. You should have received a copy of the GNU General --
-- Public License distributed with GNAT; see file COPYING3. If not, go to --
-- http://www.gnu.org/licenses for a complete copy of the license. --
-- --
-- GNAT was originally developed by the GNAT team at New York University. --
-- Extensive contributions were provided by Ada Core Technologies Inc. --
-- --
------------------------------------------------------------------------------
-- This unit contains the routines used to handle setting of warning options.
package Warnsw is
-------------------
-- Warning Flags --
-------------------
-- These flags are activated or deactivated by -gnatw switches and control
-- whether warnings of a given class will be generated or not.
-- Note: most of these flags are still in opt, but the plan is to move them
-- here as time goes by.
Warn_On_Record_Holes : Boolean := False;
-- Warn when explicit record component clauses leave uncovered holes (gaps)
-- in a record layout. Off by default, set by -gnatw.h (but not -gnatwa).
Warn_On_Overridden_Size : Boolean := False;
-- Warn when explicit record component clause or array component_size
-- clause specifies a size that overrides a size for the typen which was
-- set with an explicit size clause. Off by default, set by -gnatw.s (but
-- not -gnatwa).
-----------------
-- Subprograms --
-----------------
function Set_Warning_Switch (C : Character) return Boolean;
-- This function sets the warning switch or switches corresponding to the
-- given character. It is used to process a -gnatw switch on the command
-- line, or a character in a string literal in pragma Warnings. Returns
-- True for valid warning character C, False for invalid character.
function Set_Dot_Warning_Switch (C : Character) return Boolean;
-- This function sets the warning switch or switches corresponding to the
-- given character preceded by a dot. Used to process a -gnatw. switch on
-- the command line or .C in a string literal in pragma Warnings. Returns
-- True for valid warning character C, False for invalid character.
procedure Set_GNAT_Mode_Warnings;
-- This is called in -gnatg mode to set the warnings for gnat mode. It is
-- also used to set the proper warning statuses for -gnatw.g.
end Warnsw;
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment