aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada
diff options
context:
space:
mode:
authorRobert Dewar <dewar@adacore.com>2012-10-02 08:22:53 +0000
committerArnaud Charlet <charlet@gcc.gnu.org>2012-10-02 10:22:53 +0200
commit9a6dc470832ec76b46cc74f749265222efbb287a (patch)
treee4c85d3b2de31fddee8db6bc6b8d7ffa292131aa /gcc/ada
parent07ef182e37382f49a97e8da1ce3508acdf3e3493 (diff)
downloadgcc-9a6dc470832ec76b46cc74f749265222efbb287a.zip
gcc-9a6dc470832ec76b46cc74f749265222efbb287a.tar.gz
gcc-9a6dc470832ec76b46cc74f749265222efbb287a.tar.bz2
exp_ch7.adb, [...]: Minor reformatting.
2012-10-02 Robert Dewar <dewar@adacore.com> * exp_ch7.adb, sem_dim.adb, sem_dim.ads, prj-part.adb, checks.adb, freeze.adb, sem_ch4.adb, sem_ch13.adb: Minor reformatting. 2012-10-02 Robert Dewar <dewar@adacore.com> * sem_prag.adb (Analyze_Pragma, case Overflow_Checks): Fix typo preventing proper processing of Overflow_Checks pragmas for general case. 2012-10-02 Robert Dewar <dewar@adacore.com> * exp_ch4.adb (Expand_N_Op_Mod): Fix crash in ELIMINATED overflow checks mode when bignum mode is used. 2012-10-02 Robert Dewar <dewar@adacore.com> * stylesw.ads, gnat_ugn.texi: Document new style rule for NOT IN. * par-ch4.adb (P_Relational_Operator): Add style check for NOT IN. * style.ads, styleg.adb, styleg.ads (Check_Not_In): New procedure. From-SVN: r191962
Diffstat (limited to 'gcc/ada')
-rw-r--r--gcc/ada/ChangeLog22
-rw-r--r--gcc/ada/checks.adb36
-rw-r--r--gcc/ada/exp_ch4.adb61
-rw-r--r--gcc/ada/exp_ch7.adb4
-rw-r--r--gcc/ada/freeze.adb11
-rw-r--r--gcc/ada/gnat_ugn.texi4
-rw-r--r--gcc/ada/par-ch4.adb9
-rw-r--r--gcc/ada/prj-part.adb10
-rw-r--r--gcc/ada/sem_ch13.adb15
-rw-r--r--gcc/ada/sem_ch4.adb4
-rw-r--r--gcc/ada/sem_dim.adb31
-rw-r--r--gcc/ada/sem_dim.ads2
-rw-r--r--gcc/ada/sem_prag.adb2
-rw-r--r--gcc/ada/style.ads7
-rw-r--r--gcc/ada/styleg.adb20
-rw-r--r--gcc/ada/styleg.ads6
-rw-r--r--gcc/ada/stylesw.ads4
17 files changed, 159 insertions, 89 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index bd06961..973833b 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,25 @@
+2012-10-02 Robert Dewar <dewar@adacore.com>
+
+ * exp_ch7.adb, sem_dim.adb, sem_dim.ads, prj-part.adb, checks.adb,
+ freeze.adb, sem_ch4.adb, sem_ch13.adb: Minor reformatting.
+
+2012-10-02 Robert Dewar <dewar@adacore.com>
+
+ * sem_prag.adb (Analyze_Pragma, case Overflow_Checks): Fix
+ typo preventing proper processing of Overflow_Checks pragmas
+ for general case.
+
+2012-10-02 Robert Dewar <dewar@adacore.com>
+
+ * exp_ch4.adb (Expand_N_Op_Mod): Fix crash in ELIMINATED overflow
+ checks mode when bignum mode is used.
+
+2012-10-02 Robert Dewar <dewar@adacore.com>
+
+ * stylesw.ads, gnat_ugn.texi: Document new style rule for NOT IN.
+ * par-ch4.adb (P_Relational_Operator): Add style check for NOT IN.
+ * style.ads, styleg.adb, styleg.ads (Check_Not_In): New procedure.
+
2012-10-02 Vincent Pucci <pucci@adacore.com>
* sem_attr.adb (Analyze_Attribute): Check dimension for attribute
diff --git a/gcc/ada/checks.adb b/gcc/ada/checks.adb
index 12a0cef..f7be383 100644
--- a/gcc/ada/checks.adb
+++ b/gcc/ada/checks.adb
@@ -2075,7 +2075,8 @@ package body Checks is
-- IN IN
if Ekind (Formal_1) = E_In_Parameter
- and then Ekind (Formal_2) = E_In_Parameter
+ and then
+ Ekind (Formal_2) = E_In_Parameter
then
return False;
@@ -2342,9 +2343,11 @@ package body Checks is
-- Extract the subprogram specification and declaration nodes
Subp_Spec := Parent (Subp);
+
if Nkind (Subp_Spec) = N_Defining_Program_Unit_Name then
Subp_Spec := Parent (Subp_Spec);
end if;
+
Subp_Decl := Parent (Subp_Spec);
if not Comes_From_Source (Subp)
@@ -2354,28 +2357,28 @@ package body Checks is
or else Is_Formal_Subprogram (Subp)
- -- Do not process imported subprograms since pre and post conditions
- -- are never verified on routines coming from a different language.
+ -- Do not process imported subprograms since pre and post conditions
+ -- are never verified on routines coming from a different language.
or else Is_Imported (Subp)
or else Is_Intrinsic_Subprogram (Subp)
- -- The PPC pragmas generated by this routine do not correspond to
- -- source aspects, therefore they cannot be applied to abstract
- -- subprograms.
+ -- The PPC pragmas generated by this routine do not correspond to
+ -- source aspects, therefore they cannot be applied to abstract
+ -- subprograms.
or else Nkind (Subp_Decl) = N_Abstract_Subprogram_Declaration
- -- Do not consider subprogram renaminds because the renamed entity
- -- already has the proper PPC pragmas.
+ -- Do not consider subprogram renaminds because the renamed entity
+ -- already has the proper PPC pragmas.
or else Nkind (Subp_Decl) = N_Subprogram_Renaming_Declaration
- -- Do not process null procedures because there is no benefit of
- -- adding the checks to a no action routine.
+ -- Do not process null procedures because there is no benefit of
+ -- adding the checks to a no action routine.
or else (Nkind (Subp_Spec) = N_Procedure_Specification
- and then Null_Present (Subp_Spec))
+ and then Null_Present (Subp_Spec))
then
return;
end if;
@@ -2406,14 +2409,11 @@ package body Checks is
Next_Formal (Formal);
end loop;
- -- Generate the following scalar initialization check for a function
- -- result:
+ -- Generate following scalar initialization check for function result:
-- Post => Subp'Result'Valid[_Scalars]
- if Check_Validity_Of_Parameters
- and then Ekind (Subp) = E_Function
- then
+ if Check_Validity_Of_Parameters and then Ekind (Subp) = E_Function then
Add_Validity_Check (Subp, Name_Postcondition, True);
end if;
end Apply_Parameter_Validity_Checks;
@@ -2465,8 +2465,8 @@ package body Checks is
if Is_OK_Static_Expression (N) then
if Present (Static_Predicate (Typ)) then
- if Operating_Mode < Generate_Code or else
- Eval_Static_Predicate_Check (N, Typ)
+ if Operating_Mode < Generate_Code
+ or else Eval_Static_Predicate_Check (N, Typ)
then
return;
else
diff --git a/gcc/ada/exp_ch4.adb b/gcc/ada/exp_ch4.adb
index 79476ff..c4f6624 100644
--- a/gcc/ada/exp_ch4.adb
+++ b/gcc/ada/exp_ch4.adb
@@ -7808,6 +7808,10 @@ package body Exp_Ch4 is
begin
Binary_Op_Validity_Checks (N);
+ if Is_Integer_Type (Etype (N)) then
+ Apply_Divide_Checks (N);
+ end if;
+
Determine_Range (Right, ROK, Rlo, Rhi, Assume_Valid => True);
Determine_Range (Left, LOK, Llo, Lhi, Assume_Valid => True);
@@ -7839,10 +7843,6 @@ package body Exp_Ch4 is
-- Otherwise, normal mod processing
else
- if Is_Integer_Type (Etype (N)) then
- Apply_Divide_Checks (N);
- end if;
-
-- Apply optimization x mod 1 = 0. We don't really need that with
-- gcc, but it is useful with other back ends (e.g. AAMP), and is
-- certainly harmless.
@@ -7870,32 +7870,39 @@ package body Exp_Ch4 is
-- the mod value is always 0, and we can just ignore the left operand
-- completely in this case.
- -- The operand type may be private (e.g. in the expansion of an
- -- intrinsic operation) so we must use the underlying type to get the
- -- bounds, and convert the literals explicitly.
+ -- This only applies if we still have a mod operator. Skip if we
+ -- have already rewritten this (e.g. in the case of eliminated
+ -- overflow checks which have driven us into bignum mode).
- LLB :=
- Expr_Value
- (Type_Low_Bound (Base_Type (Underlying_Type (Etype (Left)))));
+ if Nkind (N) = N_Op_Mod then
- if ((not ROK) or else (Rlo <= (-1) and then (-1) <= Rhi))
- and then
- ((not LOK) or else (Llo = LLB))
- then
- Rewrite (N,
- Make_Conditional_Expression (Loc,
- Expressions => New_List (
- Make_Op_Eq (Loc,
- Left_Opnd => Duplicate_Subexpr (Right),
- Right_Opnd =>
- Unchecked_Convert_To (Typ,
- Make_Integer_Literal (Loc, -1))),
- Unchecked_Convert_To (Typ,
- Make_Integer_Literal (Loc, Uint_0)),
- Relocate_Node (N))));
+ -- The operand type may be private (e.g. in the expansion of an
+ -- intrinsic operation) so we must use the underlying type to get
+ -- the bounds, and convert the literals explicitly.
- Set_Analyzed (Next (Next (First (Expressions (N)))));
- Analyze_And_Resolve (N, Typ);
+ LLB :=
+ Expr_Value
+ (Type_Low_Bound (Base_Type (Underlying_Type (Etype (Left)))));
+
+ if ((not ROK) or else (Rlo <= (-1) and then (-1) <= Rhi))
+ and then
+ ((not LOK) or else (Llo = LLB))
+ then
+ Rewrite (N,
+ Make_Conditional_Expression (Loc,
+ Expressions => New_List (
+ Make_Op_Eq (Loc,
+ Left_Opnd => Duplicate_Subexpr (Right),
+ Right_Opnd =>
+ Unchecked_Convert_To (Typ,
+ Make_Integer_Literal (Loc, -1))),
+ Unchecked_Convert_To (Typ,
+ Make_Integer_Literal (Loc, Uint_0)),
+ Relocate_Node (N))));
+
+ Set_Analyzed (Next (Next (First (Expressions (N)))));
+ Analyze_And_Resolve (N, Typ);
+ end if;
end if;
end if;
end Expand_N_Op_Mod;
diff --git a/gcc/ada/exp_ch7.adb b/gcc/ada/exp_ch7.adb
index 2a2b7dd..72a98d2 100644
--- a/gcc/ada/exp_ch7.adb
+++ b/gcc/ada/exp_ch7.adb
@@ -3643,8 +3643,8 @@ package body Exp_Ch7 is
-- iterator specification, where a block is created for the expression
-- that build the container.
- elsif Nkind (Wrap_Node) = N_Iteration_Scheme
- or else Nkind (Wrap_Node) = N_Iterator_Specification
+ elsif Nkind_In (Wrap_Node, N_Iteration_Scheme,
+ N_Iterator_Specification)
then
null;
diff --git a/gcc/ada/freeze.adb b/gcc/ada/freeze.adb
index 02f6f53..98b8ead 100644
--- a/gcc/ada/freeze.adb
+++ b/gcc/ada/freeze.adb
@@ -2665,12 +2665,11 @@ package body Freeze is
Apply_Parameter_Validity_Checks (E);
end if;
- -- Deal with delayed aspect specifications. The analysis of the
- -- aspect is required to be delayed to the freeze point, thus we
- -- analyze the pragma or attribute definition clause in the tree at
- -- this point. We also analyze the aspect specification node at the
- -- freeze point when the aspect doesn't correspond to
- -- pragma/attribute definition clause.
+ -- Deal with delayed aspect specifications. The analysis of the aspect
+ -- is required to be delayed to the freeze point, thus we analyze the
+ -- pragma or attribute definition clause in the tree at this point. We
+ -- also analyze the aspect specification node at the freeze point when
+ -- the aspect doesn't correspond to pragma/attribute definition clause.
if Has_Delayed_Aspects (E) then
Analyze_Aspects_At_Freeze_Point (E);
diff --git a/gcc/ada/gnat_ugn.texi b/gcc/ada/gnat_ugn.texi
index 1d58dc4..766f7ef 100644
--- a/gcc/ada/gnat_ugn.texi
+++ b/gcc/ada/gnat_ugn.texi
@@ -6730,6 +6730,10 @@ A unary plus or minus may not be followed by a space.
A vertical bar must be surrounded by spaces.
@end itemize
+@item
+Exactly one blank (and no other white space) must appear between
+a @code{not} token and a following @code{in} token.
+
@item ^u^UNNECESSARY_BLANK_LINES^
@emph{Check unnecessary blank lines.}
Unnecessary blank lines are not allowed. A blank line is considered
diff --git a/gcc/ada/par-ch4.adb b/gcc/ada/par-ch4.adb
index 79aa85f..5116c69 100644
--- a/gcc/ada/par-ch4.adb
+++ b/gcc/ada/par-ch4.adb
@@ -2706,7 +2706,16 @@ package body Ch4 is
Scan; -- past operator token
+ -- Deal with NOT IN, if previous token was NOT, we must have IN now
+
if Prev_Token = Tok_Not then
+
+ -- Style check, for NOT IN, we require one space between NOT and IN
+
+ if Style_Check and then Token = Tok_In then
+ Style.Check_Not_In;
+ end if;
+
T_In;
end if;
diff --git a/gcc/ada/prj-part.adb b/gcc/ada/prj-part.adb
index 7ea2dc9..f1166af 100644
--- a/gcc/ada/prj-part.adb
+++ b/gcc/ada/prj-part.adb
@@ -228,10 +228,12 @@ package body Prj.Part is
Env : in out Environment);
-- Parse the imported projects that have been stored in table Withs, if
-- any. From_Extended is used for the call to Parse_Single_Project below.
+ --
-- When In_Limited is True, the importing path includes at least one
-- "limited with". When Limited_Withs is False, only non limited withed
-- projects are parsed. When Limited_Withs is True, only limited withed
-- projects are parsed.
+ --
-- Is_Config_File should be set to True if the project represents a config
-- file (.cgpr) since some specific checks apply.
@@ -943,8 +945,8 @@ package body Prj.Part is
-- If we have one, get the project id of the limited
-- imported project file, and do not parse it.
- if (In_Limited or else Limited_Withs) and then
- Project_Stack.Last > 1
+ if (In_Limited or Limited_Withs)
+ and then Project_Stack.Last > 1
then
declare
Canonical_Path_Name : Path_Name_Type;
@@ -969,7 +971,7 @@ package body Prj.Part is
end;
end if;
- -- Parse the imported project, if its project id is unknown
+ -- Parse the imported project if its project id is unknown
if No (Withed_Project) then
Parse_Single_Project
@@ -979,7 +981,7 @@ package body Prj.Part is
Path_Name_Id => Imported_Path_Name_Id,
Extended => False,
From_Extended => From_Extended,
- In_Limited => In_Limited or else Limited_Withs,
+ In_Limited => In_Limited or Limited_Withs,
Packages_To_Check => Packages_To_Check,
Depth => Depth,
Current_Dir => Current_Dir,
diff --git a/gcc/ada/sem_ch13.adb b/gcc/ada/sem_ch13.adb
index d365dc7..87a456a 100644
--- a/gcc/ada/sem_ch13.adb
+++ b/gcc/ada/sem_ch13.adb
@@ -2073,7 +2073,8 @@ package body Sem_Ch13 is
Indexing_Found : Boolean;
procedure Check_One_Function (Subp : Entity_Id);
- -- Check one possible interpretation
+ -- Check one possible interpretation. Sets Indexing_Found True if an
+ -- indexing function is found.
------------------------
-- Check_One_Function --
@@ -2096,10 +2097,11 @@ package body Sem_Ch13 is
-- An indexing function must return either the default element of
-- the container, or a reference type. For variable indexing it
- -- must be latter.
+ -- must be the latter.
if Present (Default_Element) then
Analyze (Default_Element);
+
if Is_Entity_Name (Default_Element)
and then Covers (Entity (Default_Element), Etype (Subp))
then
@@ -2108,7 +2110,7 @@ package body Sem_Ch13 is
end if;
end if;
- -- For variable_indexing the return type must be a reference type.
+ -- For variable_indexing the return type must be a reference type
if Attr = Name_Variable_Indexing
and then not Has_Implicit_Dereference (Etype (Subp))
@@ -2153,10 +2155,11 @@ package body Sem_Ch13 is
Get_Next_Interp (I, It);
end loop;
+
if not Indexing_Found then
- Error_Msg_NE (
- "aspect Indexing requires a function that applies to type&",
- Expr, Ent);
+ Error_Msg_NE
+ ("aspect Indexing requires a function that "
+ & "applies to type&", Expr, Ent);
end if;
end;
end if;
diff --git a/gcc/ada/sem_ch4.adb b/gcc/ada/sem_ch4.adb
index 34e5e52..7f3bd60 100644
--- a/gcc/ada/sem_ch4.adb
+++ b/gcc/ada/sem_ch4.adb
@@ -3422,8 +3422,8 @@ package body Sem_Ch4 is
if Is_Array_Type (Typ)
and then Compile_Time_Known_Bounds (Typ)
and then
- (Expr_Value (Type_Low_Bound (Etype (First_Index (Typ))))
- > Expr_Value (Type_High_Bound (Etype (First_Index (Typ)))))
+ (Expr_Value (Type_Low_Bound (Etype (First_Index (Typ)))) >
+ Expr_Value (Type_High_Bound (Etype (First_Index (Typ)))))
then
Preanalyze_And_Resolve (Condition (N), Standard_Boolean);
diff --git a/gcc/ada/sem_dim.adb b/gcc/ada/sem_dim.adb
index 163c93b..c350433 100644
--- a/gcc/ada/sem_dim.adb
+++ b/gcc/ada/sem_dim.adb
@@ -1519,6 +1519,7 @@ package body Sem_Dim is
-- Check the dimensions of the actuals, if any
if not Is_Empty_List (Actuals) then
+
-- Special processing for elementary functions
-- For Sqrt call, the resulting dimensions equal to half the
@@ -1532,9 +1533,9 @@ package body Sem_Dim is
function Is_Elementary_Function_Entity
(Sub_Id : Entity_Id) return Boolean;
- -- Given Sub_Id, the original subprogram entity, return True if
- -- call is to an elementary function
- -- (see Ada.Numerics.Generic_Elementary_Functions).
+ -- Given Sub_Id, the original subprogram entity, return True
+ -- if call is to an elementary function (see Ada.Numerics.
+ -- Generic_Elementary_Functions).
-----------------------------------
-- Is_Elementary_Function_Entity --
@@ -1546,8 +1547,7 @@ package body Sem_Dim is
Loc : constant Source_Ptr := Sloc (Sub_Id);
begin
- -- Is function entity in
- -- Ada.Numerics.Generic_Elementary_Functions?
+ -- Is entity in Ada.Numerics.Generic_Elementary_Functions?
return
Loc > No_Location
@@ -1560,8 +1560,7 @@ package body Sem_Dim is
-- Start of processing for Elementary_Function_Calls
begin
- -- Get the original subprogram entity following the renaming
- -- chain.
+ -- Get original subprogram entity following the renaming chain
if Present (Alias (Ent)) then
Ent := Alias (Ent);
@@ -1570,6 +1569,7 @@ package body Sem_Dim is
-- Check the call is an Elementary function call
if Is_Elementary_Function_Entity (Ent) then
+
-- Sqrt function call case
if Chars (Ent) = Name_Sqrt then
@@ -1582,8 +1582,7 @@ package body Sem_Dim is
for Position in Dims_Of_Call'Range loop
Dims_Of_Call (Position) :=
Dims_Of_Call (Position) *
- Rational'(Numerator => 1,
- Denominator => 2);
+ Rational'(Numerator => 1, Denominator => 2);
end loop;
Set_Dimensions (N, Dims_Of_Call);
@@ -1597,8 +1596,7 @@ package body Sem_Dim is
while Present (Actual) loop
if Exists (Dimensions_Of (Actual)) then
- -- Check if error has already been encountered so
- -- far.
+ -- Check if error has already been encountered
if not Error_Detected then
Error_Msg_NE ("dimensions mismatch in call of&",
@@ -1645,10 +1643,9 @@ package body Sem_Dim is
Error_Detected := True;
end if;
- Error_Msg_N ("\expected dimension " &
- Dimensions_Msg_Of (Formal_Typ) & ", found " &
- Dimensions_Msg_Of (Actual),
- Actual);
+ Error_Msg_N
+ ("\expected dimension " & Dimensions_Msg_Of (Formal_Typ)
+ & ", found " & Dimensions_Msg_Of (Actual), Actual);
end if;
Next_Actual (Actual);
@@ -1916,7 +1913,7 @@ package body Sem_Dim is
procedure Analyze_Dimension_Has_Etype (N : Node_Id) is
Etyp : constant Entity_Id := Etype (N);
- Dims_Of_Etyp : Dimension_Type := Dimensions_Of (Etyp);
+ Dims_Of_Etyp : Dimension_Type := Dimensions_Of (Etyp);
begin
-- General case. Propagation of the dimensions from the type
@@ -1955,7 +1952,6 @@ package body Sem_Dim is
-- Removal of dimensions in expression
case Nkind (N) is
-
when N_Attribute_Reference |
N_Indexed_Component =>
declare
@@ -1981,7 +1977,6 @@ package body Sem_Dim is
Remove_Dimensions (Selector_Name (N));
when others => null;
-
end case;
end Analyze_Dimension_Has_Etype;
diff --git a/gcc/ada/sem_dim.ads b/gcc/ada/sem_dim.ads
index 7ce4e59..2fdfd30 100644
--- a/gcc/ada/sem_dim.ads
+++ b/gcc/ada/sem_dim.ads
@@ -164,7 +164,7 @@ package Sem_Dim is
procedure Copy_Dimensions (From, To : Node_Id);
-- Copy dimension vector of node From to node To. Note that To must be a
- -- node that is allowed to contain a dimension. (See OK_For_Dimension in
+ -- node that is allowed to contain a dimension (see OK_For_Dimension in
-- body of Sem_Dim).
procedure Eval_Op_Expon_For_Dimensioned_Type
diff --git a/gcc/ada/sem_prag.adb b/gcc/ada/sem_prag.adb
index 7de11fd..7346e02 100644
--- a/gcc/ada/sem_prag.adb
+++ b/gcc/ada/sem_prag.adb
@@ -11817,7 +11817,7 @@ package body Sem_Prag is
-- Process first argument
- Suppress_Options.Overflow_Checks_General :=
+ Scope_Suppress.Overflow_Checks_General :=
Get_Check_Mode (Name_General, Arg1);
-- Case of only one argument
diff --git a/gcc/ada/style.ads b/gcc/ada/style.ads
index 9f9f32a..d425494 100644
--- a/gcc/ada/style.ads
+++ b/gcc/ada/style.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2010, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2012, 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- --
@@ -155,6 +155,11 @@ package Style is
-- check the line length (Len is the length of the current line). Note that
-- the terminator may be the EOF character.
+ procedure Check_Not_In
+ renames Style_Inst.Check_Not_In;
+ -- Called with Scan_Ptr pointing to an IN token, and Prev_Token_Ptr
+ -- pointing to a NOT token. Used to check proper layout of NOT IN.
+
procedure Check_Pragma_Name
renames Style_Inst.Check_Pragma_Name;
-- The current token is a pragma identifier. Check that it is spelled
diff --git a/gcc/ada/styleg.adb b/gcc/ada/styleg.adb
index 7cb4d82..c674394 100644
--- a/gcc/ada/styleg.adb
+++ b/gcc/ada/styleg.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2011, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2012, 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- --
@@ -764,6 +764,24 @@ package body Styleg is
end if;
end Check_Line_Terminator;
+ ------------------
+ -- Check_Not_In --
+ ------------------
+
+ -- In check tokens mode, only one space between NOT and IN
+
+ procedure Check_Not_In is
+ begin
+ if Style_Check_Tokens then
+ if Source (Token_Ptr - 1) /= ' '
+ or else Token_Ptr - Prev_Token_Ptr /= 4
+ then -- CODEFIX?
+ Error_Msg
+ ("(style) single space must separate NOT and IN", Token_Ptr - 1);
+ end if;
+ end if;
+ end Check_Not_In;
+
--------------------------
-- Check_No_Space_After --
--------------------------
diff --git a/gcc/ada/styleg.ads b/gcc/ada/styleg.ads
index 954a033..7aabac4 100644
--- a/gcc/ada/styleg.ads
+++ b/gcc/ada/styleg.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2010, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2012, 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- --
@@ -117,6 +117,10 @@ package Styleg is
-- the current line, used to check for appropriate line terminator usage.
-- The parameter Len is the length of the current line.
+ procedure Check_Not_In;
+ -- Called with Scan_Ptr pointing to an IN token, and Prev_Token_Ptr
+ -- pointing to a NOT token. Used to check proper layout of NOT IN.
+
procedure Check_Pragma_Name;
-- The current token is a pragma identifier. Check that it is spelled
-- properly (i.e. with an appropriate casing convention).
diff --git a/gcc/ada/stylesw.ads b/gcc/ada/stylesw.ads
index fc6f5ef..b64e686 100644
--- a/gcc/ada/stylesw.ads
+++ b/gcc/ada/stylesw.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2011, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2012, 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- --
@@ -255,6 +255,8 @@ package Stylesw is
--
-- A unary plus or minus may not be followed by a space
--
+ -- There must be one blank (and no other white space) between NOT and IN
+ --
-- A vertical bar must be surrounded by spaces
--
-- Note that a requirement that a token be preceded by a space is met by