vms_data.ads: Add entry for -gnatr Put GNAT SYNC section in proper alpha order Add VMS...

2008-05-20  Robert Dewar  <dewar@adacore.com>
	    Vincent Celier  <celier@adacore.com>

	* vms_data.ads: Add entry for -gnatr
	Put GNAT SYNC section in proper alpha order
	Add VMS qualifier /DISPLAY_PROGRESS equivalent to gnatmake switch -d

	* gnat_ugn.texi: Add documentation for new gnatname switch --and
	Update the style checks section
	Add documentation of -gnatr
	Add to the "Adding the Results of Compiler Checks to gnatcheck Output"
	subsection the explanation how compiler checks should be disabled for
	gnatcheck.
	Update the list of Ada 95 reserved words used by in the project language
	Add documentation for project qualifiers.
	Document that abstract projects may be extended by different projects in
	the same project tree.
	Add documentation for gnatmake switch -d

	* ug_words: Add -gnatyy VMS equivalence string.
	Add entry for -gnatr

From-SVN: r135647
This commit is contained in:
Robert Dewar 2008-05-20 14:51:51 +02:00 committed by Arnaud Charlet
parent 5eace9bc19
commit 8436e37c4b
3 changed files with 284 additions and 166 deletions

View File

@ -4021,6 +4021,10 @@ Don't quit; try semantics, even if parse errors.
@cindex @option{-gnatQ} (@command{gcc})
Don't quit; generate @file{ALI} and tree files even if illegalities.
@item -gnatr
@cindex @option{-gnatr} (@command{gcc})
Treat pragma Restrictions as Restriction_Warnings.
@item ^-gnatR[0/1/2/3[s]]^/REPRESENTATION_INFO^
@cindex @option{-gnatR} (@command{gcc})
Output representation information for declared types and objects.
@ -5723,7 +5727,7 @@ turns on all validity checking options except for
checking of @code{@b{in out}} procedure arguments.
The specification of additional validity checking generates extra code (and
in the case of @option{-gnatVa} the code expansion can be substantial.
in the case of @option{-gnatVa} the code expansion can be substantial).
However, these additional checks can be very useful in detecting
uninitialized variables, incorrect use of unchecked conversion, and other
errors leading to invalid values. The use of pragma @code{Initialize_Scalars}
@ -6023,7 +6027,7 @@ with declarations.
@item ^S^STATEMENTS_AFTER_THEN_ELSE^
@emph{Check no statements after THEN/ELSE.}
No statements are allowed
on the same line as a THEN OR ELSE keyword following the
on the same line as a THEN or ELSE keyword following the
keyword in an IF statement. OR ELSE and AND THEN are not affected,
and a special exception allows a pragma to appear after ELSE.
@ -6099,19 +6103,25 @@ around conditions in @code{if} statements, @code{while} statements and
@item ^y^ALL_BUILTIN^
@emph{Set all standard style check options}
This is equivalent to @code{gnaty3aAbcefhiklmnprst}, that is all checking
options enabled with the exception of @option{-gnatyo},
options enabled with the exception of @option{-gnatyo}, @option{-gnatyI},
@option{-gnatyS}, @option{-gnatyLnnn},
@option{-gnatyd}, @option{-gnatyu}, and @option{-gnatyx}.
@ifclear vms
@item -
@emph{Remove style check options}
This causes any subsequent options in the string to act as canceling the
corresponding style check option.
corresponding style check option. To cancel maximum nesting level control,
use @option{L} parameter witout any integer value after that, because any
digit following @option{-} in the parameter string of the @option{-gnaty}
option will be threated as canceling indentation check. The same is true
for @option{M} parameter. @option{y} and @option{N} parameters are not
alloved after @option{-}.
@item +
This causes any subsequent options in the string to enable the corresponding
style check option. It only has an effect if a previous ^-^REMOVE^ has been
encountered.
style check option. That is, it cancels the effect of a previous ^-^REMOVE^,
if any.
@end ifclear
@ifset vms
@ -6153,8 +6163,8 @@ built-in standard style check options are enabled.
the exception of ORDERED_SUBPROGRAMS, UNNECESSARY_BLANK_LINES,
XTRA_PARENS, and DOS_LINE_ENDINGS. In addition
@end ifset
an indentation level of 3 is set. This is similar to the standard
checking option that is used for the GNAT sources.
The switch
@ifclear vms
@ -6822,6 +6832,16 @@ If the switch @option{-gnatL} is used in conjunction with
@option{-gnatDG}, then the original source lines are interspersed
in the expanded source (as comment lines with the original line number).
@item -gnatr
@cindex @option{-gnatr} (@command{gcc})
@cindex pragma Restrictions
This switch causes pragma Restrictions to be treated as Restriction_Warnings
so that violation of restrictions causes warnings rather than illegalities.
This is useful during the development process when new restrictions are added
or investigated. The switch also causes pragma Profile to be treated as
Profile_Warnings, and pragma Restricted_Run_Time and pragma Ravenscar set
restriction warnings rather than restrictions.
@ifclear vms
@item -gnatR[0|1|2|3[s]]
@cindex @option{-gnatR} (@command{gcc})
@ -8848,6 +8868,15 @@ This switch is not compatible with a project file
(^-P^/PROJECT_FILE=^@var{file}) or with multiple compiling processes
(^-j^/PROCESSES=^nnn, when nnn is greater than 1).
@item ^-d^/DISPLAY_PROGRESS^
@cindex @option{^-d^/DISPLAY_PROGRESS^} (@command{gnatmake})
Display progress for each source, up to date or not, as a single line
completed x out of y (zz%)
If the file needs to be compiled this is displayed after the invocation of
the compiler. These lines are displayed even in quiet output mode.
@item ^-D ^/DIRECTORY_OBJECTS=^@var{dir}
@cindex @option{^-D^/DIRECTORY_OBJECTS^} (@command{gnatmake})
Put all object files and ALI file in directory @var{dir}.
@ -11036,7 +11065,8 @@ set of files.
The usual form of the @code{gnatname} command is
@smallexample
$ gnatname [@var{switches}] @var{naming_pattern} [@var{naming_patterns}]
$ gnatname [@var{switches}] @var{naming_pattern} [@var{naming_patterns}] \
[--and @var{switches}] @var{naming_pattern} [@var{naming_patterns}]]
@end smallexample
@noindent
@ -11056,6 +11086,14 @@ Each Naming Pattern is enclosed between double quotes.
A Naming Pattern is a regular expression similar to the wildcard patterns
used in file names by the Unix shells or the DOS prompt.
@noindent
@code{gnatname} may be called with several sections of directories/patterns.
Sections are separated by switch @code{--and}. In each section, there must be
at least one pattern. If no directory is specified in a section, the current
directory (or the project directory is @code{-P} is used) is implied.
The options other that the directory switches and the patterns apply globally
even if they are in different sections.
@noindent
Examples of Naming Patterns are
@ -11071,9 +11109,10 @@ see the second kind of regular expressions described in @file{g-regexp.ads}
(the ``Glob'' regular expressions).
@noindent
When invoked with no switches, @code{gnatname} will create a configuration
pragmas file @file{gnat.adc} in the current working directory, with pragmas
@code{Source_File_Name} for each file that contains a valid Ada unit.
When invoked with no switch @code{-P}, @code{gnatname} will create a
configuration pragmas file @file{gnat.adc} in the current working directory,
with pragmas @code{Source_File_Name} for each file that contains a valid Ada
unit.
@node Switches for gnatname
@section Switches for @code{gnatname}
@ -11096,6 +11135,9 @@ Display Copyright and version, then exit disregarding all other options.
If @option{--version} was not used, display usage, then exit disregarding
all other options.
@item --and
Start another section of directories/patterns.
@item ^-c^/CONFIG_FILE=^@file{file}
@cindex @option{^-c^/CONFIG_FILE^} (@code{gnatname})
Create a configuration pragmas file @file{file} (instead of the default
@ -12033,6 +12075,7 @@ project P.
@menu
* Basic Syntax::
* Qualified Projects::
* Packages::
* Expressions::
* String Types::
@ -12090,12 +12133,16 @@ word @code{end} at the end of the project file, followed by a semi-colon.
Any name in a project file, such as the project name or a variable name,
has the same syntax as an Ada identifier.
The reserved words of project files are the Ada reserved words plus
The reserved words of project files are the Ada 95 reserved words plus
@code{extends}, @code{external}, and @code{project}. Note that the only Ada
reserved words currently used in project file syntax are:
@itemize @bullet
@item
@code{all}
@item
@code{at}
@item
@code{case}
@item
@code{end}
@ -12104,6 +12151,10 @@ reserved words currently used in project file syntax are:
@item
@code{is}
@item
@code{limited}
@item
@code{null}
@item
@code{others}
@item
@code{package}
@ -12123,6 +12174,39 @@ reserved words currently used in project file syntax are:
Comments in project files have the same syntax as in Ada, two consecutive
hyphens through the end of the line.
@node Qualified Projects
@subsection Qualified Projects
@noindent
Before the reserved @code{project}, there may be one or two "qualifiers", that
is identifiers or other reserved words, to qualify the project.
The current list of qualifiers is:
@itemize @bullet
@item
@code{abstract}: qualify a project with no sources. An abstract project must
have a declaration specifying that there are no sources in the project, and,
if it extends another project, the project it extends must also be a qualified
abstract project.
@item
@code{standard}: a standard project is a non library project with sources.
@item
@code{aggregate}: for future extension
@item
@code{aggregate library}: for future extension
@item
@code{library}: a library project must declare both attributes
@code{Library_Name} and @code{Library_Dir}.
@item
@code{configuration}: a configuration project cannot be in a project tree.
@end itemize
@node Packages
@subsection Packages
@ -13015,8 +13099,8 @@ The original body of @code{Util_IO} will not be considered in program builds.
However, the package spec will still be found in the project
@code{Utilities}.
A child project can have only one parent but it may import any number of other
projects.
A child project can have only one parent, except when it is qualified as
abstract. But it may import any number of other projects.
A project is not allowed to import directly or indirectly at the same time a
child project and any of its ancestors.
@ -20259,9 +20343,10 @@ use the rule named
@code{Restrictions} or @code{Restriction_Warnings}.
@item Style_Checks
To record compiler style checks, use the rule named
To record compiler style checks(@pxref{Style Checking}), use the rule named
@code{Style_Checks}. A parameter of this rule can be either @code{All_Checks},
which enables all the style checks, or a string that has exactly the same
which enables all the standard style checks that corresponds to @option{-gnatyy}
GNAT style check option, or a string that has exactly the same
structure and semantics as the @code{string_LITERAL} parameter of GNAT pragma
@code{Style_Checks} (for further information about this pragma,
@pxref{Pragma Style_Checks,,, gnat_rm, GNAT Reference Manual}).
@ -20271,10 +20356,19 @@ To record compiler warnings (@pxref{Warning Message Control}), use the rule
named @code{Warnings} with a parameter that is a valid
@i{static_string_expression} argument of GNAT pragma @code{Warnings}
(for further information about this pragma, @pxref{Pragma Warnings,,,
gnat_rm, GNAT Reference Manual}).
gnat_rm, GNAT Reference Manual}). Note, that in case of gnatcheck
's' parameter, that corresponds to the GNAT @option{-gnatws} option, disables
all the specific warnings, but not suppresses the warning mode,
and 'e' parameter, corresponding to @option{-gnatwe} that means
"therat warnings as errors", does not have any effect.
@end table
To disable a specific restriction check, use @code{-RStyle_Checks} gnatcheck
option with the corresponding restriction name as a parameter. @code{-R} is
not available for @code{Style_Checks} and @code{Warnings} options, to disable
warnings and style checks, use the corresponding warning and style options.
@node Project-Wide Checks
@section Project-Wide Checks
@cindex Project-wide checks (for @command{gnatcheck})

View File

@ -89,6 +89,7 @@ gcc -c ^ GNAT COMPILE
-gnatR3 ^ /REPRESENTATION_INFO=SYMBOLIC
-gnatq ^ /TRY_SEMANTICS
-gnatQ ^ /FORCE_ALI
-gnatr ^ /TREAT_RESTRICTIONS_AS_WARNINGS
-gnats ^ /SYNTAX_ONLY
-gnatS ^ /PRINT_STANDARD
-gnatt ^ /TREE_OUTPUT
@ -177,6 +178,7 @@ gcc -c ^ GNAT COMPILE
-gnatW8 ^ /WIDE_CHARACTER_ENCODING=UTF8
-gnatW? ^ /WIDE_CHARACTER_ENCODING=?
-gnaty ^ /STYLE_CHECKS
-gnatyy ^ /STYLE_CHECKS=ALL_BUILTIN
-gnatZ ^ /ZERO_COST_EXCEPTIONS
-gnatzc ^ /DISTRIBUTION_STUBS=CALLER
-gnatzr ^ /DISTRIBUTION_STUBS=RECEIVER

View File

@ -880,154 +880,6 @@ package VMS_Data is
S_Check_Subdirs 'Access,
S_Check_Verb 'Access);
----------------------------
-- Switches for GNAT SYNC --
----------------------------
S_Sync_Add : aliased constant S := "/ADD_PROJECT_SEARCH_DIR=*" &
"-aP*";
-- /ADD_PROJECT_SEARCH_PATH=(directory[,...])
--
-- Add directories to the project search path.
S_Sync_All : aliased constant S := "/ALL " &
"-a";
-- /NOALL (D)
-- /ALL
--
-- Also check the components of the GNAT run time and process the needed
-- components of the GNAT RTL when building and analyzing the global
-- structure for checking the global rules.
S_Sync_Ext : aliased constant S := "/EXTERNAL_REFERENCE=" & '"' &
"-X" & '"';
-- /EXTERNAL_REFERENCE="name=val"
--
-- Specifies an external reference to the project manager. Useful only if
-- /PROJECT_FILE is used.
--
-- Example:
-- /EXTERNAL_REFERENCE="DEBUG=TRUE"
S_Sync_Files : aliased constant S := "/FILES=@" &
"-files=@";
-- /FILES=filename
--
-- Take as arguments the files that are listed in the specified
-- text file.
S_Sync_Follow : aliased constant S := "/FOLLOW_LINKS_FOR_FILES " &
"-eL";
-- /NOFOLLOW_LINKS_FOR_FILES (D)
-- /FOLLOW_LINKS_FOR_FILES
--
-- Follow links when parsing project files
S_Sync_Mess : aliased constant S := "/MESSAGES_PROJECT_FILE=" &
"DEFAULT " &
"-vP0 " &
"MEDIUM " &
"-vP1 " &
"HIGH " &
"-vP2";
-- /MESSAGES_PROJECT_FILE[=messages-option]
--
-- Specifies the "verbosity" of the parsing of project files.
-- messages-option may be one of the following:
--
-- DEFAULT (D) No messages are output if there is no error or warning.
--
-- MEDIUM A small number of messages are output.
--
-- HIGH A great number of messages are output, most of them not
-- being useful for the user.
S_Sync_Project : aliased constant S := "/PROJECT_FILE=<" &
"-P>";
-- /PROJECT_FILE=filename
--
-- Specifies the main project file to be used. The project files rooted
-- at the main project file will be parsed before the invocation of the
-- gnatcheck. The source directories to be searched will be communicated
-- to gnatcheck through logical name ADA_PRJ_INCLUDE_FILE.
S_Sync_Quiet : aliased constant S := "/QUIET " &
"-q";
-- /NOQUIET (D)
-- /QUIET
--
-- Work quietly, only output warnings and errors.
S_Sync_Subdirs : aliased constant S := "/SUBDIRS=<" &
"--subdirs=>";
-- /SUBDIRS=dir
--
-- The actual directories (object, exec, library, ...) are subdirectories
-- of the directory specified in the project file. If the subdirectory
-- does not exist, it is created automatically.
S_Sync_Verb : aliased constant S := "/VERBOSE " &
"-v";
-- /NOVERBOSE (D)
-- /VERBOSE
--
-- The version number and copyright notice are output, as well as exact
-- copies of the gnat1 commands spawned to obtain the chop control
-- information.
S_Sync_Exec : aliased constant S := "/EXECUTION_TIME " &
"-t";
-- /NOEXECUTION_TIME (D)
-- /EXECUTION_TIME
--
-- Output the execution time
S_Sync_Details : aliased constant S := "/DETAILs=" &
"MEDIUM " &
"-om " &
"SHORT " &
"-os " &
"FULL " &
"-of";
-- /DETAILS[=options]
--
-- Specifies the details of the output.
-- Options may be one of the following:
--
-- MEDIUM (D)
-- SHORT
-- FULL
S_Sync_Warnoff : aliased constant S := "/WARNINGS_OFF " &
"-wq";
--
-- /WARNINGS_OFF
--
-- Turn warnings off
S_Sync_Output : aliased constant S := "/OUTPUT_FILE=<" &
"-out_file=>";
--
-- /OUTPUT_FILE=filename
--
-- Redirect output to a text file
Sync_Switches : aliased constant Switches :=
(S_Sync_Add 'Access,
S_Sync_All 'Access,
S_Sync_Ext 'Access,
S_Sync_Follow 'Access,
S_Sync_Files 'Access,
S_Sync_Mess 'Access,
S_Sync_Project 'Access,
S_Sync_Quiet 'Access,
S_Sync_Subdirs 'Access,
S_Sync_Verb 'Access,
S_Sync_Exec 'Access,
S_Sync_Details 'Access,
S_Sync_Warnoff 'Access,
S_Sync_Output 'Access);
----------------------------
-- Switches for GNAT CHOP --
----------------------------
@ -2109,6 +1961,16 @@ package VMS_Data is
-- readable to any Ada programmer, and is useful to determine the
-- characteristics of target dependent types in package Standard.
S_GCC_Reswarn : aliased constant S := "/TREAT_RESTRICTIONS_AS_WARNINGS " &
"-gnatr";
-- /NO_TREAT_RESTRICTIONS_AS_WARNINGS (D)
-- /TREAT_RESTRICTIONS_AS_WARNINGS
--
-- Causes all restrictions to be treated as warnings (pragma Restriction
-- treated as Restriction_Warnings, pragma Profile as Profile_Warnings,
-- and pragma Ravenscar sets restriction warnings instead of restrictions)
S_GCC_Report : aliased constant S := "/REPORT_ERRORS=" &
"VERBOSE " &
"-gnatv " &
@ -4440,6 +4302,17 @@ package VMS_Data is
-- Put all object files and .ALI files in <file>.
-- This qualifier is not compatible with /PROJECT_FILE.
S_Make_Disprog : aliased constant S := "/DISPLAY_PROGRESS " &
"-d";
-- /NOPLAY_PROGRESS (D)
-- /DISPLAY_PROGRESS
--
-- Display progress for each source, up to date or not, as a single line
-- completed x out of y (zz%)
-- If the file needs to be compiled this is displayed after the
-- invocation of the compiler. These lines are displayed even in quiet
-- output mode (/QUIET).
S_Make_Doobj : aliased constant S := "/DO_OBJECT_CHECK " &
"-n";
-- /NODO_OBJECT_CHECK (D)
@ -4801,6 +4674,7 @@ package VMS_Data is
S_Make_Current 'Access,
S_Make_Dep 'Access,
S_Make_Dirobj 'Access,
S_Make_Disprog 'Access,
S_Make_Doobj 'Access,
S_Make_Execut 'Access,
S_Make_Ext 'Access,
@ -6625,6 +6499,154 @@ package VMS_Data is
S_Stub_Tree 'Access,
S_Stub_Verbose 'Access);
----------------------------
-- Switches for GNAT SYNC --
----------------------------
S_Sync_Add : aliased constant S := "/ADD_PROJECT_SEARCH_DIR=*" &
"-aP*";
-- /ADD_PROJECT_SEARCH_PATH=(directory[,...])
--
-- Add directories to the project search path.
S_Sync_All : aliased constant S := "/ALL " &
"-a";
-- /NOALL (D)
-- /ALL
--
-- Also check the components of the GNAT run time and process the needed
-- components of the GNAT RTL when building and analyzing the global
-- structure for checking the global rules.
S_Sync_Ext : aliased constant S := "/EXTERNAL_REFERENCE=" & '"' &
"-X" & '"';
-- /EXTERNAL_REFERENCE="name=val"
--
-- Specifies an external reference to the project manager. Useful only if
-- /PROJECT_FILE is used.
--
-- Example:
-- /EXTERNAL_REFERENCE="DEBUG=TRUE"
S_Sync_Files : aliased constant S := "/FILES=@" &
"-files=@";
-- /FILES=filename
--
-- Take as arguments the files that are listed in the specified
-- text file.
S_Sync_Follow : aliased constant S := "/FOLLOW_LINKS_FOR_FILES " &
"-eL";
-- /NOFOLLOW_LINKS_FOR_FILES (D)
-- /FOLLOW_LINKS_FOR_FILES
--
-- Follow links when parsing project files
S_Sync_Mess : aliased constant S := "/MESSAGES_PROJECT_FILE=" &
"DEFAULT " &
"-vP0 " &
"MEDIUM " &
"-vP1 " &
"HIGH " &
"-vP2";
-- /MESSAGES_PROJECT_FILE[=messages-option]
--
-- Specifies the "verbosity" of the parsing of project files.
-- messages-option may be one of the following:
--
-- DEFAULT (D) No messages are output if there is no error or warning.
--
-- MEDIUM A small number of messages are output.
--
-- HIGH A great number of messages are output, most of them not
-- being useful for the user.
S_Sync_Project : aliased constant S := "/PROJECT_FILE=<" &
"-P>";
-- /PROJECT_FILE=filename
--
-- Specifies the main project file to be used. The project files rooted
-- at the main project file will be parsed before the invocation of the
-- gnatcheck. The source directories to be searched will be communicated
-- to gnatcheck through logical name ADA_PRJ_INCLUDE_FILE.
S_Sync_Quiet : aliased constant S := "/QUIET " &
"-q";
-- /NOQUIET (D)
-- /QUIET
--
-- Work quietly, only output warnings and errors.
S_Sync_Subdirs : aliased constant S := "/SUBDIRS=<" &
"--subdirs=>";
-- /SUBDIRS=dir
--
-- The actual directories (object, exec, library, ...) are subdirectories
-- of the directory specified in the project file. If the subdirectory
-- does not exist, it is created automatically.
S_Sync_Verb : aliased constant S := "/VERBOSE " &
"-v";
-- /NOVERBOSE (D)
-- /VERBOSE
--
-- The version number and copyright notice are output, as well as exact
-- copies of the gnat1 commands spawned to obtain the chop control
-- information.
S_Sync_Exec : aliased constant S := "/EXECUTION_TIME " &
"-t";
-- /NOEXECUTION_TIME (D)
-- /EXECUTION_TIME
--
-- Output the execution time
S_Sync_Details : aliased constant S := "/DETAILs=" &
"MEDIUM " &
"-om " &
"SHORT " &
"-os " &
"FULL " &
"-of";
-- /DETAILS[=options]
--
-- Specifies the details of the output.
-- Options may be one of the following:
--
-- MEDIUM (D)
-- SHORT
-- FULL
S_Sync_Warnoff : aliased constant S := "/WARNINGS_OFF " &
"-wq";
--
-- /WARNINGS_OFF
--
-- Turn warnings off
S_Sync_Output : aliased constant S := "/OUTPUT_FILE=<" &
"-out_file=>";
--
-- /OUTPUT_FILE=filename
--
-- Redirect output to a text file
Sync_Switches : aliased constant Switches :=
(S_Sync_Add 'Access,
S_Sync_All 'Access,
S_Sync_Ext 'Access,
S_Sync_Follow 'Access,
S_Sync_Files 'Access,
S_Sync_Mess 'Access,
S_Sync_Project 'Access,
S_Sync_Quiet 'Access,
S_Sync_Subdirs 'Access,
S_Sync_Verb 'Access,
S_Sync_Exec 'Access,
S_Sync_Details 'Access,
S_Sync_Warnoff 'Access,
S_Sync_Output 'Access);
----------------------------
-- Switches for GNAT XREF --
----------------------------