1 ------------------------------------------------------------------------------
3 -- GNAT COMPILER COMPONENTS --
9 -- Copyright (C) 2002-2010, 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 ------------------------------------------------------------------------------
27 with Output; use Output;
28 with Stringt; use Stringt;
30 package body Prj.Err is
36 procedure Post_Scan is
37 Debug_Tokens : constant Boolean := False;
40 -- Change operator symbol to literal strings, since that's the way
41 -- we treat all strings in a project file.
43 if Token = Tok_Operator_Symbol
44 or else Token = Tok_String_Literal
46 Token := Tok_String_Literal;
47 String_To_Name_Buffer (String_Literal_Id);
48 Token_Name := Name_Find;
52 Write_Line (Token_Type'Image (Token));
54 if Token = Tok_Identifier
55 or else Token = Tok_String_Literal
57 Write_Line (" " & Get_Name_String (Token_Name));
67 (Flags : Processing_Flags;
69 Location : Source_Ptr := No_Location;
70 Project : Project_Id := null)
72 Real_Location : Source_Ptr := Location;
75 -- Display the error message in the traces so that it appears in the
76 -- correct location in the traces (otherwise error messages are only
77 -- displayed at the end and it is difficult to see when they were
80 if Current_Verbosity = High then
81 Write_Line ("ERROR: " & Msg);
84 -- If location of error is unknown, use the location of the project
86 if Real_Location = No_Location
87 and then Project /= null
89 Real_Location := Project.Location;
92 if Real_Location = No_Location then
94 -- If still null, we are parsing a project that was created in-memory
95 -- so we shouldn't report errors for projects that the user has no
96 -- access to in any case.
98 if Current_Verbosity = High then
99 Write_Line ("Error in in-memory project, ignored");
105 -- Report the error through Errutil, so that duplicate errors are
106 -- properly removed, messages are sorted, and correctly interpreted,...
108 Errutil.Error_Msg (Msg, Real_Location);
110 -- Let the application know there was an error
112 if Flags.Report_Error /= null then
116 Msg (Msg'First) = '?'
117 or else (Msg (Msg'First) = '<'
118 and then Err_Vars.Error_Msg_Warn)
119 or else (Msg (Msg'First) = '\'
120 and then Msg (Msg'First + 1) = '<'
121 and then Err_Vars.Error_Msg_Warn));