diff options
Diffstat (limited to 'gcc/ada/gnat-style.texi')
| -rw-r--r-- | gcc/ada/gnat-style.texi | 75 |
1 files changed, 73 insertions, 2 deletions
diff --git a/gcc/ada/gnat-style.texi b/gcc/ada/gnat-style.texi index cbe75ad..7018974 100644 --- a/gcc/ada/gnat-style.texi +++ b/gcc/ada/gnat-style.texi @@ -712,7 +712,7 @@ alternative forms for the above spec are: @item Function and procedure bodies should usually be sorted alphabetically. Do not attempt to sort them in some logical order by functionality. For a -sequence of subrpgroams specs, a general alphabetical sorting is also +sequence of subprogram specs, a general alphabetical sorting is also usually appropriate, but occasionally it makes sense to group by major function, with appropriate headers. @@ -749,7 +749,8 @@ A sequence of declarations may optionally be separated from the following begin by a blank line. Just as we optionally allow blank lines in general between declarations, this blank line should be present only if it improves readability. Generally we avoid this blank line if the declarative part is -small (one or two lines) and we include it if the declarative part is long. +small (one or two lines) and the body has no blank lines, and we include it +if the declarative part is long or if the body has blank lines. @item If the declarations in a subprogram contain at least one nested @@ -766,8 +767,78 @@ subprogram, there is a comment line and a blank line: @end group @end smallexample +@item +When nested subprograms are present, variables that are referenced by any +nested subprogram should precede the nested subprogram specs. For variables +that are not referenced by nested procedures, the declarations can either also +be before any of the nested subprogram specs (this is the old style, more +generally used). Or then can come just before the begin, with a header. The +following example shows the two possible styles: + +@smallexample @c adanocomment +@group + procedure Style1 is + Var_Referenced_In_Nested : Integer; + Var_Referenced_Only_In_Style1 : Integer; + + proc Nested; + -- Comments ... + + + ------------ + -- Nested -- + ------------ + + procedure Nested is + begin + ... + end Nested; + + -- Start of processing for Style1 + + begin + ... + end Style1; + +@end group + +@group + procedure Style2 is + Var_Referenced_In_Nested : Integer; + + proc Nested; + -- Comments ... + + ------------ + -- Nested -- + ------------ + + procedure Nested is + begin + ... + end Nested; + + -- Local variables + + Var_Referenced_Only_In_Style2 : Integer; + + -- Start of processing for Style2 + + begin + ... + end Style2; + +@end group +@end smallexample + +@noindent +For new code, we generally prefer Style2, but we do not insist on +modifying all legacy occurrences of Style1, which is still much +more common in the sources. + @end itemize + @c ------------------------------------------------------------------------- @node Packages, Program Structure, Subprograms, Top @section Packages and Visibility Rules |
