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
This commit is contained in:
Vincent Celier 2008-05-28 17:55:52 +02:00 committed by Arnaud Charlet
parent 3fdd06e1ec
commit 2b672e358d
2 changed files with 22 additions and 15 deletions

View File

@ -6,7 +6,7 @@
-- --
-- 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 --
-- terms of the GNU General Public License as published by the Free Soft- --
@ -95,6 +95,11 @@ package body Sinput.P is
begin
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
-- token, to see if it is SEPARATE. We ignore WITH keywords during
-- this and also PRIVATE. The reason for ignoring PRIVATE is that
@ -108,6 +113,8 @@ package body Sinput.P is
Prj.Err.Scanner.Scan;
end loop;
Prj.Err.Scanner.Reset_Special_Characters;
return Token = Tok_Separate;
end Source_File_Is_Subunit;

View File

@ -6,7 +6,7 @@
-- --
-- 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 --
-- terms of the GNU General Public License as published by the Free Soft- --
@ -32,8 +32,8 @@ with Scans; use Scans;
package Sinput.P is
function Load_Project_File (Path : String) return Source_File_Index;
-- Load into memory the source of a project source file.
-- Initialize the Scans state.
-- Load into memory the source of a project source file. Initialize the
-- Scans state.
procedure Reset_First;
-- Indicate that the next project loaded should be considered as the first
@ -41,13 +41,13 @@ package Sinput.P is
-- is to get the correct number of lines when error finalization is called.
function Source_File_Is_Subunit (X : Source_File_Index) return Boolean;
-- This function determines if a source file represents a subunit. It
-- works by scanning for the first compilation unit token, and returning
-- True if it is the token SEPARATE. It will return False otherwise,
-- meaning that the file cannot possibly be a legal subunit. This
-- function does NOT do a complete parse of the file, or build a
-- tree. It is used in gnatmake to decide if a body without a spec
-- in a project file needs to be compiled or not.
-- This function determines if a source file represents a subunit. It works
-- by scanning for the first compilation unit token, and returning True if
-- it is the token SEPARATE. It will return False otherwise, meaning that
-- the file cannot possibly be a legal subunit. This function does NOT do a
-- complete parse of the file, or build a tree. It is used in gnatmake and
-- gprbuild to decide if a body without a spec in a project file needs to
-- be compiled or not.
type Saved_Project_Scan_State is limited private;
-- Used to save project scan state in following two routines
@ -55,14 +55,14 @@ package Sinput.P is
procedure Save_Project_Scan_State
(Saved_State : out Saved_Project_Scan_State);
pragma Inline (Save_Project_Scan_State);
-- Save the Scans state, as well as the values of
-- Source and Current_Source_File.
-- Save the Scans state, as well as the values of Source and
-- Current_Source_File.
procedure Restore_Project_Scan_State
(Saved_State : Saved_Project_Scan_State);
pragma Inline (Restore_Project_Scan_State);
-- Restore the Scans state and the values of
-- Source and Current_Source_File.
-- Restore the Scans state and the values of Source and
-- Current_Source_File.
private