Commit 2b672e35 by Vincent Celier Committed by Arnaud Charlet

sinput-p.adb (Source_File_Is_Subunit): Allow special character used for preprocessing

2008-05-28  Vincent Celier  <celier@adacore.com>

	* sinput-p.adb (Source_File_Is_Subunit): Allow special character used
	for preprocessing
	
	* sinput-p.ads: Minor comment update and reformatting

From-SVN: r136112
parent 3fdd06e1
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- B o d y -- -- B o d y --
-- -- -- --
-- Copyright (C) 1992-2007, Free Software Foundation, Inc. -- -- Copyright (C) 1992-2008, 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- --
...@@ -95,6 +95,11 @@ package body Sinput.P is ...@@ -95,6 +95,11 @@ package body Sinput.P is
begin begin
Prj.Err.Scanner.Initialize_Scanner (X); Prj.Err.Scanner.Initialize_Scanner (X);
-- No error for special characters that are used for preprocessing
Prj.Err.Scanner.Set_Special_Character ('#');
Prj.Err.Scanner.Set_Special_Character ('$');
-- We scan past junk to the first interesting compilation unit -- We scan past junk to the first interesting compilation unit
-- token, to see if it is SEPARATE. We ignore WITH keywords during -- token, to see if it is SEPARATE. We ignore WITH keywords during
-- this and also PRIVATE. The reason for ignoring PRIVATE is that -- this and also PRIVATE. The reason for ignoring PRIVATE is that
...@@ -108,6 +113,8 @@ package body Sinput.P is ...@@ -108,6 +113,8 @@ package body Sinput.P is
Prj.Err.Scanner.Scan; Prj.Err.Scanner.Scan;
end loop; end loop;
Prj.Err.Scanner.Reset_Special_Characters;
return Token = Tok_Separate; return Token = Tok_Separate;
end Source_File_Is_Subunit; end Source_File_Is_Subunit;
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- Copyright (C) 1992-2007, Free Software Foundation, Inc. -- -- Copyright (C) 1992-2008, 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- --
...@@ -32,8 +32,8 @@ with Scans; use Scans; ...@@ -32,8 +32,8 @@ with Scans; use Scans;
package Sinput.P is package Sinput.P is
function Load_Project_File (Path : String) return Source_File_Index; function Load_Project_File (Path : String) return Source_File_Index;
-- Load into memory the source of a project source file. -- Load into memory the source of a project source file. Initialize the
-- Initialize the Scans state. -- Scans state.
procedure Reset_First; procedure Reset_First;
-- Indicate that the next project loaded should be considered as the first -- Indicate that the next project loaded should be considered as the first
...@@ -41,13 +41,13 @@ package Sinput.P is ...@@ -41,13 +41,13 @@ package Sinput.P is
-- is to get the correct number of lines when error finalization is called. -- is to get the correct number of lines when error finalization is called.
function Source_File_Is_Subunit (X : Source_File_Index) return Boolean; function Source_File_Is_Subunit (X : Source_File_Index) return Boolean;
-- This function determines if a source file represents a subunit. It -- This function determines if a source file represents a subunit. It works
-- works by scanning for the first compilation unit token, and returning -- by scanning for the first compilation unit token, and returning True if
-- True if it is the token SEPARATE. It will return False otherwise, -- it is the token SEPARATE. It will return False otherwise, meaning that
-- meaning that the file cannot possibly be a legal subunit. This -- the file cannot possibly be a legal subunit. This function does NOT do a
-- function does NOT do a complete parse of the file, or build a -- complete parse of the file, or build a tree. It is used in gnatmake and
-- tree. It is used in gnatmake to decide if a body without a spec -- gprbuild to decide if a body without a spec in a project file needs to
-- in a project file needs to be compiled or not. -- be compiled or not.
type Saved_Project_Scan_State is limited private; type Saved_Project_Scan_State is limited private;
-- Used to save project scan state in following two routines -- Used to save project scan state in following two routines
...@@ -55,14 +55,14 @@ package Sinput.P is ...@@ -55,14 +55,14 @@ package Sinput.P is
procedure Save_Project_Scan_State procedure Save_Project_Scan_State
(Saved_State : out Saved_Project_Scan_State); (Saved_State : out Saved_Project_Scan_State);
pragma Inline (Save_Project_Scan_State); pragma Inline (Save_Project_Scan_State);
-- Save the Scans state, as well as the values of -- Save the Scans state, as well as the values of Source and
-- Source and Current_Source_File. -- Current_Source_File.
procedure Restore_Project_Scan_State procedure Restore_Project_Scan_State
(Saved_State : Saved_Project_Scan_State); (Saved_State : Saved_Project_Scan_State);
pragma Inline (Restore_Project_Scan_State); pragma Inline (Restore_Project_Scan_State);
-- Restore the Scans state and the values of -- Restore the Scans state and the values of Source and
-- Source and Current_Source_File. -- Current_Source_File.
private private
......
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