diff options
author | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-12-13 10:33:25 +0000 |
---|---|---|
committer | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-12-13 10:33:25 +0000 |
commit | b72fb21627f3889f3728bc919b78f3d8ae8d5ecd (patch) | |
tree | 366f623986e408ccdd23497b8656e9ab70760dc7 /gcc/ada/sinput-l.adb | |
parent | 37600f3ba2c16d5b14dacda75bb8d493eae1785a (diff) | |
download | gcc-b72fb21627f3889f3728bc919b78f3d8ae8d5ecd.tar.gz |
2007-12-06 Thomas Quinot <quinot@adacore.com>
* sinput-l.adb (Load_File): Disable style checks when preprocessing.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@130861 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ada/sinput-l.adb')
-rw-r--r-- | gcc/ada/sinput-l.adb | 71 |
1 files changed, 40 insertions, 31 deletions
diff --git a/gcc/ada/sinput-l.adb b/gcc/ada/sinput-l.adb index 7064660c98c..79ad7f4043c 100644 --- a/gcc/ada/sinput-l.adb +++ b/gcc/ada/sinput-l.adb @@ -73,8 +73,7 @@ package body Sinput.L is -- Used to initialize the preprocessor. procedure New_EOL_In_Prep_Buffer; - -- Add an LF to Prep_Buffer. - -- Used to initialize the preprocessor. + -- Add an LF to Prep_Buffer (used to initialize the preprocessor) function Load_File (N : File_Name_Type; @@ -90,10 +89,10 @@ package body Sinput.L is Loc : constant Source_Ptr := Sloc (N); begin - -- We only do the adjustment if the value is between the appropriate - -- low and high values. It is not clear that this should ever not be - -- the case, but in practice there seem to be some nodes that get - -- copied twice, and this is a defence against that happening. + -- We only do the adjustment if the value is between the appropriate low + -- and high values. It is not clear that this should ever not be the + -- case, but in practice there seem to be some nodes that get copied + -- twice, and this is a defence against that happening. if A.Lo <= Loc and then Loc <= A.Hi then Set_Sloc (N, Loc + A.Adjust); @@ -232,19 +231,19 @@ package body Sinput.L is Write_Eol; end if; - -- For a given character in the source, a higher subscript will be - -- used to access the instantiation, which means that the virtual - -- origin must have a corresponding lower value. We compute this - -- new origin by taking the address of the appropriate adjusted - -- element in the old array. Since this adjusted element will be - -- at a negative subscript, we must suppress checks. + -- For a given character in the source, a higher subscript will be used + -- to access the instantiation, which means that the virtual origin must + -- have a corresponding lower value. We compute this new origin by + -- taking the address of the appropriate adjusted element in the old + -- array. Since this adjusted element will be at a negative subscript, + -- we must suppress checks. declare pragma Suppress (All_Checks); pragma Warnings (Off); - -- This unchecked conversion is aliasing safe, since it is never - -- used to create improperly aliased pointer values. + -- This unchecked conversion is aliasing safe, since it is never used + -- to create improperly aliased pointer values. function To_Source_Buffer_Ptr is new Unchecked_Conversion (Address, Source_Buffer_Ptr); @@ -472,6 +471,10 @@ package body Sinput.L is T : constant Nat := Total_Errors_Detected; -- Used to check if there were errors during preprocessing + Save_Style_Check : Boolean; + -- Saved state of the Style_Check flag (which needs to be + -- temporarily set to False during preprocessing, see below). + begin -- If this is the first time we preprocess a source, allocate -- the preprocessing buffer. @@ -494,25 +497,33 @@ package body Sinput.L is Put_Char => Put_Char_In_Prep_Buffer'Access, New_EOL => New_EOL_In_Prep_Buffer'Access); - -- Initialize the scanner and set its behavior for - -- preprocessing, then preprocess. + -- Initialize scanner and set its behavior for preprocessing, + -- then preprocess. Also disable style checks, since some of + -- them are done in the scanner (specifically, those dealing + -- with line length and line termination), and cannot be done + -- during preprocessing (because the source file index table + -- has not been set yet). Scn.Scanner.Initialize_Scanner (X); Scn.Scanner.Set_Special_Character ('#'); Scn.Scanner.Set_Special_Character ('$'); Scn.Scanner.Set_End_Of_Line_As_Token (True); + Save_Style_Check := Opt.Style_Check; + Opt.Style_Check := False; Preprocess; - -- Reset the scanner to its standard behavior + -- Reset the scanner to its standard behavior, and restore the + -- Style_Checks flag. Scn.Scanner.Reset_Special_Characters; Scn.Scanner.Set_End_Of_Line_As_Token (False); + Opt.Style_Check := Save_Style_Check; - -- If there were errors during preprocessing, record an - -- error at the start of the file, and do not change the - -- source buffer. + -- If there were errors during preprocessing, record an error + -- at the start of the file, and do not change the source + -- buffer. if T /= Total_Errors_Detected then Errout.Error_Msg @@ -531,12 +542,11 @@ package body Sinput.L is -- Physical buffer allocated type Actual_Source_Ptr is access Actual_Source_Buffer; - -- This is the pointer type for the physical buffer - -- allocated. + -- Pointer type for the physical buffer allocated Actual_Ptr : constant Actual_Source_Ptr := new Actual_Source_Buffer; - -- And this is the actual physical buffer + -- Actual physical buffer begin Actual_Ptr (Lo .. Hi - 1) := @@ -544,9 +554,9 @@ package body Sinput.L is Actual_Ptr (Hi) := EOF; -- Now we need to work out the proper virtual origin - -- pointer to return. This is exactly - -- Actual_Ptr (0)'Address, but we have to be careful to - -- suppress checks to compute this address. + -- pointer to return. This is Actual_Ptr (0)'Address, but + -- we have to be careful to suppress checks to compute + -- this address. declare pragma Suppress (All_Checks); @@ -679,11 +689,10 @@ package body Sinput.L is begin Initialize_Scanner (No_Unit, X); - -- 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 - -- it handles some error situations, and also to handle PRIVATE WITH - -- in Ada 2005 mode. + -- 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 it handles some + -- error situations, and also to handle PRIVATE WITH in Ada 2005 mode. while Token = Tok_With or else Token = Tok_Private |