1 ------------------------------------------------------------------------------
3 -- GNAT COMPILER COMPONENTS --
9 -- Copyright (C) 2002-2009, Free Software Foundation, Inc. --
11 -- GNAT is free software; you can redistribute it and/or modify it under --
12 -- terms of the GNU General Public License as published by the Free Soft- --
13 -- ware Foundation; either version 3, or (at your option) any later ver- --
14 -- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
15 -- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
16 -- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License --
17 -- for more details. You should have received a copy of the GNU General --
18 -- Public License distributed with GNAT; see file COPYING3. If not, go to --
19 -- http://www.gnu.org/licenses for a complete copy of the license. --
21 -- GNAT was originally developed by the GNAT team at New York University. --
22 -- Extensive contributions were provided by Ada Core Technologies Inc. --
24 ------------------------------------------------------------------------------
26 with Output; use Output;
27 with Stringt; use Stringt;
29 package body Prj.Err is
31 -----------------------
32 -- Obsolescent_Check --
33 -----------------------
35 procedure Obsolescent_Check (S : Source_Ptr) is
36 pragma Warnings (Off, S);
39 end Obsolescent_Check;
45 procedure Post_Scan is
46 Debug_Tokens : constant Boolean := False;
49 -- Change operator symbol to literal strings, since that's the way
50 -- we treat all strings in a project file.
52 if Token = Tok_Operator_Symbol
53 or else Token = Tok_String_Literal
55 Token := Tok_String_Literal;
56 String_To_Name_Buffer (String_Literal_Id);
57 Token_Name := Name_Find;
61 Write_Line (Token_Type'Image (Token));
63 if Token = Tok_Identifier
64 or else Token = Tok_String_Literal
66 Write_Line (" " & Get_Name_String (Token_Name));
76 (Flags : Processing_Flags;
78 Location : Source_Ptr := No_Location;
79 Project : Project_Id := null)
81 Real_Location : Source_Ptr := Location;
84 -- Display the error message in the traces so that it appears in the
85 -- correct location in the traces (otherwise error messages are only
86 -- displayed at the end and it is difficult to see when they were
89 if Current_Verbosity = High then
90 Write_Line ("ERROR: " & Msg);
93 -- If location of error is unknown, use the location of the project
95 if Real_Location = No_Location
96 and then Project /= null
98 Real_Location := Project.Location;
101 if Real_Location = No_Location then
103 -- If still null, we are parsing a project that was created in-memory
104 -- so we shouldn't report errors for projects that the user has no
105 -- access to in any case.
110 -- Report the error through Errutil, so that duplicate errors are
111 -- properly removed, messages are sorted, and correctly interpreted,...
113 Errutil.Error_Msg (Msg, Real_Location);
115 -- Let the application know there was an error
117 if Flags.Report_Error /= null then
120 Is_Warning => Msg (Msg'First) = '?' or else Msg (Msg'First) = '<');