1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
|
------------------------------------------------------------------------------
-- --
-- POLYORB COMPONENTS --
-- --
-- E R R O R S --
-- --
-- S p e c --
-- --
-- Copyright (C) 2004-2012, Free Software Foundation, Inc. --
-- --
-- This 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. This software is distributed in the hope that it will be useful, --
-- but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHAN- --
-- TABILITY 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 and --
-- a copy of the GCC Runtime Library Exception along with this program; --
-- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see --
-- <http://www.gnu.org/licenses/>. --
-- --
-- PolyORB is maintained by AdaCore --
-- (email: sales@adacore.com) --
-- --
------------------------------------------------------------------------------
with Locations; use Locations;
with Types; use Types;
package Errors is
pragma Elaborate_Body;
-- Because the body initializes the global variables below, so the compiler
-- otherwise warns that they could be accessed by elaboration code in other
-- packages.
Not_Yet_Implemented : exception;
-- Raised when code is not ready yet
Internal_Error : exception;
-- Raised when idlac reaches an internal inconsistent state
Fatal_Error : exception;
-- Raised when idlac has detected an external inconsistent state; that is,
-- a user error like source-file-not-found. Whenever you raise Fatal_Error,
-- you should print an error message first.
type Message_Template is new String;
-- Type of message templates used by Display_Error. We don't use type
-- String, because we want to avoid using input data (tainted data) as part
-- of the template. For example, if File_Name is a String that came from
-- the command line, then:
--
-- Display_Error ("file not found: %", File_Name); -- Correct
-- Display_Error ("file not found: " & File_Name); -- WRONG!
--
-- The second example will get a compilation error. If we allowed that,
-- then we would crash if File_Name = "%".
procedure Display_Error (Template : Message_Template);
procedure DE (Template : Message_Template) renames Display_Error;
-- Display a warning or error message based on the Template. The following
-- special characters may appear in the Template:
--
-- % (Percent): insert Error_Name (N)
-- # (Hash): insert Error_Name (N) within quotes
-- ! (Exclamantion): insert Error_Loc (L)
-- $ (Dollar): insert Error_Int (I)
-- ? (Question): make message a warning
-- \ (Backslash): make message a continuation (does not count toward
-- errors or warnings counter)
-- Where N, L and I are indices incremented after each insertion character
-- (note that Error_Loc (1) is always inserted ahead of the message, and
-- L starts at 2 as far as explicit '!' insertions are concerned).
procedure Display_Error (Template : Message_Template; S : String);
procedure DE (Template : Message_Template; S : String)
renames Display_Error;
-- Same as previous Display_Error, except first put S into Error_Name (1).
-- Template must contain a % special character, which will be replaced by
-- S.
Error_Name : array (1 .. 2) of Name_Id;
Error_Loc : array (1 .. 2) of Location;
Error_Int : array (1 .. 2) of Int;
-- Count of errors and warnings displayed so far
N_Errors : Int := 0;
N_Warnings : Int := 0;
end Errors;
|