===================================================================
@@ -6730,6 +6730,10 @@
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
===================================================================
@@ -2706,7 +2706,16 @@
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;
===================================================================
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
+-- 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 @@
-- 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
===================================================================
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
+-- 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 @@
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 --
--------------------------
===================================================================
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
+-- 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 @@
-- 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).
===================================================================
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
+-- 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 @@
--
-- 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
This patch adds a new style check for the layout of the NOT IN operation. If the token check style flag is set, then there must be exactly one space (and no other white space) between the NOT and the IN. The following is compiled with -gnaty: 1. package StyleNotIn is 2. x : Integer := 4; 3. y : Boolean := x not in 1 .. 10; | >>> (style) single space must separate "not" and "in" 4. end StyleNotIn; 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.